63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| @startuml
 | |
| package com.iluwatar.gameloop {
 | |
|   class App {
 | |
|     - GAME_LOOP_DURATION_TIME : int {static}
 | |
|     - LOGGER : Logger {static}
 | |
|     + App()
 | |
|     + main(args : String[]) {static}
 | |
|   }
 | |
|   class Bullet {
 | |
|     - position : float
 | |
|     + Bullet()
 | |
|     + getPosition() : float
 | |
|     + setPosition(position : float)
 | |
|   }
 | |
|   class FixedStepGameLoop {
 | |
|     - MS_PER_FRAME : long {static}
 | |
|     + FixedStepGameLoop()
 | |
|     # processGameLoop()
 | |
|     # update()
 | |
|   }
 | |
|   class FrameBasedGameLoop {
 | |
|     + FrameBasedGameLoop()
 | |
|     # processGameLoop()
 | |
|     # update()
 | |
|   }
 | |
|   class GameController {
 | |
|     # bullet : Bullet
 | |
|     + GameController()
 | |
|     + getBulletPosition() : float
 | |
|     + moveBullet(offset : float)
 | |
|   }
 | |
|   abstract class GameLoop {
 | |
|     # controller : GameController
 | |
|     - gameThread : Thread
 | |
|     # logger : Logger
 | |
|     # status : GameStatus
 | |
|     + GameLoop()
 | |
|     + isGameRunning() : boolean
 | |
|     # processGameLoop() {abstract}
 | |
|     # processInput()
 | |
|     # render()
 | |
|     + run()
 | |
|     + stop()
 | |
|   }
 | |
|   enum GameStatus {
 | |
|     + RUNNING {static}
 | |
|     + STOPPED {static}
 | |
|     + valueOf(name : String) : GameStatus {static}
 | |
|     + values() : GameStatus[] {static}
 | |
|   }
 | |
|   class VariableStepGameLoop {
 | |
|     + VariableStepGameLoop()
 | |
|     # processGameLoop()
 | |
|     # update(elapsedTime : Long)
 | |
|   }
 | |
| }
 | |
| GameLoop -->  "-status" GameStatus
 | |
| GameController -->  "-bullet" Bullet
 | |
| GameLoop -->  "-controller" GameController
 | |
| FixedStepGameLoop --|> GameLoop 
 | |
| FrameBasedGameLoop --|> GameLoop 
 | |
| VariableStepGameLoop --|> GameLoop 
 | |
| @enduml |