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