Hugo Hu / Mbed 2 deprecated BRAVEHEART

Dependencies:   mbed N5110 ShiftReg PinDetect

Committer:
Siriagus
Date:
Sat May 02 00:22:43 2015 +0000
Revision:
8:9ac6a428fa26
Parent:
7:678873947b29
Child:
10:f2488a0ecab7
Added Splash/Title Screen + Prototyping player movement

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Siriagus 5:100d960fc6d5 1 #include "StateManager.h"
Siriagus 5:100d960fc6d5 2
Siriagus 5:100d960fc6d5 3 // Delete the old state and create a new one
Siriagus 5:100d960fc6d5 4 void StateManager::changeState(MainState newState)
Siriagus 5:100d960fc6d5 5 {
Siriagus 5:100d960fc6d5 6 if (currentState != 0) // if a state exist
Siriagus 5:100d960fc6d5 7 delete currentState; // delete the old state
Siriagus 7:678873947b29 8
Siriagus 5:100d960fc6d5 9 // Create new state
Siriagus 5:100d960fc6d5 10 switch (newState)
Siriagus 5:100d960fc6d5 11 {
Siriagus 5:100d960fc6d5 12 case MAIN_MENU:
Siriagus 5:100d960fc6d5 13 currentState = new MainMenu(this, lcd, input);
Siriagus 5:100d960fc6d5 14 break;
Siriagus 5:100d960fc6d5 15
Siriagus 5:100d960fc6d5 16 case GAME:
Siriagus 7:678873947b29 17 currentState = new Game(this, lcd, input);
Siriagus 7:678873947b29 18 break;
Siriagus 5:100d960fc6d5 19
Siriagus 8:9ac6a428fa26 20 case TITLE_SCREEN:
Siriagus 8:9ac6a428fa26 21 currentState = new TitleScreen(this, lcd, input);
Siriagus 8:9ac6a428fa26 22 break;
Siriagus 8:9ac6a428fa26 23
Siriagus 7:678873947b29 24 // TODO: Make classes for the other states.
Siriagus 5:100d960fc6d5 25 case SUBMIT_HIGHSCORE:
Siriagus 5:100d960fc6d5 26 //break;
Siriagus 5:100d960fc6d5 27
Siriagus 5:100d960fc6d5 28 case GAME_OVER:
Siriagus 5:100d960fc6d5 29 //break;
Siriagus 5:100d960fc6d5 30
Siriagus 5:100d960fc6d5 31 default:
Siriagus 5:100d960fc6d5 32 error("Invalid state!");
Siriagus 5:100d960fc6d5 33 }
Siriagus 5:100d960fc6d5 34 }
Siriagus 5:100d960fc6d5 35
Siriagus 7:678873947b29 36 void StateManager::requestStateChange(MainState requestedState)
Siriagus 5:100d960fc6d5 37 {
Siriagus 7:678873947b29 38 if (nextState != NO_STATE)
Siriagus 7:678873947b29 39 error("Invalid - can't request new state before the first request has been processed!");
Siriagus 7:678873947b29 40
Siriagus 7:678873947b29 41 nextState = requestedState;
Siriagus 7:678873947b29 42 }
Siriagus 7:678873947b29 43
Siriagus 7:678873947b29 44 void StateManager::update(float dt)
Siriagus 7:678873947b29 45 {
Siriagus 5:100d960fc6d5 46 currentState->update(dt);
Siriagus 5:100d960fc6d5 47 }
Siriagus 5:100d960fc6d5 48
Siriagus 5:100d960fc6d5 49 void StateManager::render()
Siriagus 5:100d960fc6d5 50 {
Siriagus 5:100d960fc6d5 51 currentState->render();
Siriagus 7:678873947b29 52 }
Siriagus 7:678873947b29 53
Siriagus 7:678873947b29 54 void StateManager::processRequest()
Siriagus 7:678873947b29 55 {
Siriagus 7:678873947b29 56 // Check if there has been a request to change the state
Siriagus 7:678873947b29 57 if (nextState != NO_STATE)
Siriagus 7:678873947b29 58 {
Siriagus 7:678873947b29 59 changeState(nextState);
Siriagus 7:678873947b29 60 nextState = NO_STATE; // reset, state has been changed
Siriagus 7:678873947b29 61 }
Siriagus 5:100d960fc6d5 62 }