A complex 2D-dungeon game on LPC1768 in SWJTU-Leeds Joint School XJEL2645 project. Referenced from the framework contributed by https://os.mbed.com/users/Siriagus/code/SimplePlatformGame/

Dependencies:   mbed N5110 ShiftReg PinDetect

Committer:
hugohu
Date:
Thu Mar 25 03:56:22 2021 +0000
Branch:
BRAVEHEART
Revision:
21:e19709a07756
Parent:
19:89c3eeb3761b
Combined some files, removed codes for my personal needs, created new maps, new ways to play.

Who changed what in which revision?

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