ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Menu/Menu.cpp

Committer:
lewisgw
Date:
2019-04-01
Revision:
12:ebaefda53dd0
Parent:
11:b66170249a26
Child:
13:bcf6bb69c597

File content as of revision 12:ebaefda53dd0:

#include "Menu.h"

State _fsm[3] = { 
  {0,{0,1,0,1}},
  {1,{1,1,0,2}},
  {2,{2,1,2,1}}
};   

Menu::Menu() {}

Menu::~Menu() {}

void Menu::init() {
  _state = 1;  
  _controller.init();
}

void Menu::run(N5110 &lcd, Gamepad &gamepad) {
  set_input(gamepad.check_event(Gamepad::START_PRESSED), 
    gamepad.check_event(Gamepad::BACK_PRESSED));
  _output = _fsm[_state].output;
  output(lcd, gamepad);
  _state = _fsm[_state].next_state[_menu_input];    
}

void Menu::output(N5110 &lcd, Gamepad &gamepad) {
  if (_output == 0) {
    run_game(lcd, gamepad);
  } else if (_output == 1) {
    display_menu(lcd, gamepad);
  } else {
    display_controls(lcd, gamepad);
  }
}

void Menu::set_input(bool start, bool back) {
  if (!start && !back) {
    _menu_input = 0;
  } else if (!start && back) {
    _menu_input = 1;
  } else if (start && !back) {
    _menu_input = 2;
  } else {
    _menu_input = 3;
  }
} 

void Menu::run_game(N5110 &lcd, Gamepad &gamepad) {
  _controller.run_game_engine(lcd, gamepad);
}

void Menu::display_controls(N5110 &lcd, Gamepad &gamepad) {}

void Menu::display_menu(N5110 &lcd, Gamepad &gamepad) {
  _controller.init();    
}