java-design-patterns/game-loop/etc/game-loop.urm.puml

63 lines
1.4 KiB
Plaintext
Raw Normal View History

2019-12-07 18:03:49 +02:00
@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