The Game (robotDevastation)
This chapter deals with the software for the Robot Devastation game.
package FSM <> { FiniteStateMachine o-- StateDirector StateDirector *-- State }
package SoundManagement <> { interface AudioManager AudioManager <|-- SDLAudioManager AudioManager <|-- MockAudioManager }
package InputManagement <> { interface InputManager InputManager <|-- MockInputManager InputManager <|-- SDLInputManager
interface InputEventListener InputEventListener <|-- MockInputEventListener
class Key class WindowEvent class SDLEventFactory
SDLEventFactory -- Key : creates > SDLEventFactory -- WindowEvent : creates > InputManager -- SDLEventFactory : uses > InputManager -- InputEventListener : notifies > }
package NetworkManagement <> { interface NetworkManager NetworkManager <|-- MockNetworkManager NetworkManager <|-- YarpNetworkManager
interface NetworkEventListener NetworkEventListener <|-- MockNetworkEventListener NetworkManager -- NetworkEventListener : notifies > } MentalMapEventListener <|-- NetworkManager
package RobotManagement <> { interface RobotManager RobotManager <|-- MockRobotManager RobotManager <|-- YarpRobotManager }
package "User Interface Management" <> { interface ScreenManager ScreenManager <|-- SDLScreenManager
interface Screen Screen <|-- InitScreen Screen <|-- GameScreen Screen <|-- DeadScreen Screen <|-- MockScreen
ScreenManager -right- Screen : shows > }
package "Camera Management" <> { interface ImageManager ImageManager <|-- MockImageManager ImageManager <|-- YarpImageManager ImageManager <|-- YarpLocalImageManager
interface ImageEventListener ImageEventListener <|-- MockImageEventListener ImageEventListener <|-- ProcessorImageEventListener
ImageManager -right- ImageEventListener : notifies > }
package "Data Management" <> { class MentalMap interface NetworkEventListener NetworkEventListener <|-- MentalMap
interface MentalMapEventListener MentalMap -right- MentalMapEventListener : notifies >
package "Data Model" <> { class Player class Target class Weapon } }
class ManagerHub ManagerHub-- ImageManager ManagerHub o-- NetworkManager ManagerHub o-- MentalMap ManagerHub o-- AudioManager ManagerHub o-- InputManager ManagerHub o-- RobotManager ManagerHub o-- ScreenManager
ManagerHub <|-- InitState ManagerHub <|-- GameState ManagerHub <|-- DeadState
State <|-- InitState State <|-- GameState State <|-- DeadState
ProcessorImageEventListener -- MentalMap : notifies >
InputEventListener <|-- InitState InputEventListener <|-- GameState InputEventListener <|-- DeadState
The Game FSM
The game functionality is implemented as a Finite State Machine (FSM), which will be explained in the Game FSM section. Each state of the FSM represents a game state. Each game state inherits from the ManagerHub class, which allows the state to act upon the different game subsystems (user input, user interface, robot, etc).
The game first configures all the different managers. Then, all the different states are constructed and set in the FSM, which is started to run the game.
The Game Managers
The game functionality is encapsulated in different managers. Each manager is currently implemented as a singleton, as they are typically related to unique system or device (for a debate of whether this was a good idea or not, see robotDevastation#4).
Last updated