Andreas Garmannslund / Mbed 2 deprecated SimplePlatformGame

Dependencies:   N5110 PinDetect PowerControl mbed

Committer:
Siriagus
Date:
Fri May 01 00:38:59 2015 +0000
Revision:
4:d6661b976359
Child:
5:100d960fc6d5
Started rewriting the main finite state machine - design in progress

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Siriagus 4:d6661b976359 1 #ifndef STATE_MANAGER_H
Siriagus 4:d6661b976359 2 #define STATE_MANAGER_H
Siriagus 4:d6661b976359 3
Siriagus 4:d6661b976359 4 #include "State.h"
Siriagus 4:d6661b976359 5 #include <map>
Siriagus 4:d6661b976359 6
Siriagus 4:d6661b976359 7 // Main Finite State Machine - controls the flow between the main states
Siriagus 4:d6661b976359 8 class StateManager
Siriagus 4:d6661b976359 9 {
Siriagus 4:d6661b976359 10 public:
Siriagus 4:d6661b976359 11 StateManager(N5110 *lcd, InputManager* input)
Siriagus 4:d6661b976359 12 : lcd(lcd), input(input){currentState = 0;}
Siriagus 4:d6661b976359 13
Siriagus 4:d6661b976359 14 void update(time_t dt);
Siriagus 4:d6661b976359 15 void render();
Siriagus 4:d6661b976359 16
Siriagus 4:d6661b976359 17 template <typename T>
Siriagus 4:d6661b976359 18 void changeState(MainState newState); // Deletes the current main state and creates a new one
Siriagus 4:d6661b976359 19
Siriagus 4:d6661b976359 20 private:
Siriagus 4:d6661b976359 21 N5110 *lcd;
Siriagus 4:d6661b976359 22 InputManager *input;
Siriagus 4:d6661b976359 23 State* currentState; // Current state object
Siriagus 4:d6661b976359 24 };
Siriagus 4:d6661b976359 25
Siriagus 4:d6661b976359 26 template <typename T>
Siriagus 4:d6661b976359 27 void StateManager::changeState(MainState newState)
Siriagus 4:d6661b976359 28 {
Siriagus 4:d6661b976359 29 if (currentState != 0) // if a state exist
Siriagus 4:d6661b976359 30 delete currentState; // clear allocated memory
Siriagus 4:d6661b976359 31
Siriagus 4:d6661b976359 32 // Create new state
Siriagus 4:d6661b976359 33 currentState = new T(*this, lcd, input);
Siriagus 4:d6661b976359 34
Siriagus 4:d6661b976359 35 // TODO: Work on this
Siriagus 4:d6661b976359 36 }
Siriagus 4:d6661b976359 37
Siriagus 4:d6661b976359 38 #endif STATE_MANAGER_H