ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Wed Apr 03 13:42:58 2019 +0000
Revision:
13:bcf6bb69c597
Parent:
12:ebaefda53dd0
Child:
14:9861fe85c803
Implemented a working menu and display controls

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lewisgw 9:fff2009f826e 1 #include "Menu.h"
lewisgw 9:fff2009f826e 2
lewisgw 12:ebaefda53dd0 3 State _fsm[3] = {
lewisgw 13:bcf6bb69c597 4 {0,{0,1,0,0}},
lewisgw 12:ebaefda53dd0 5 {1,{1,1,0,2}},
lewisgw 13:bcf6bb69c597 6 {2,{2,1,2,0}}
lewisgw 12:ebaefda53dd0 7 };
lewisgw 11:b66170249a26 8
lewisgw 9:fff2009f826e 9 Menu::Menu() {}
lewisgw 9:fff2009f826e 10
lewisgw 9:fff2009f826e 11 Menu::~Menu() {}
lewisgw 9:fff2009f826e 12
lewisgw 9:fff2009f826e 13 void Menu::init() {
lewisgw 12:ebaefda53dd0 14 _state = 1;
lewisgw 12:ebaefda53dd0 15 _controller.init();
lewisgw 12:ebaefda53dd0 16 }
lewisgw 12:ebaefda53dd0 17
lewisgw 12:ebaefda53dd0 18 void Menu::run(N5110 &lcd, Gamepad &gamepad) {
lewisgw 12:ebaefda53dd0 19 set_input(gamepad.check_event(Gamepad::START_PRESSED),
lewisgw 13:bcf6bb69c597 20 gamepad.check_event(Gamepad::BACK_PRESSED),
lewisgw 13:bcf6bb69c597 21 gamepad.check_event(Gamepad::X_PRESSED));
lewisgw 12:ebaefda53dd0 22 _output = _fsm[_state].output;
lewisgw 12:ebaefda53dd0 23 output(lcd, gamepad);
lewisgw 12:ebaefda53dd0 24 _state = _fsm[_state].next_state[_menu_input];
lewisgw 12:ebaefda53dd0 25 }
lewisgw 12:ebaefda53dd0 26
lewisgw 12:ebaefda53dd0 27 void Menu::output(N5110 &lcd, Gamepad &gamepad) {
lewisgw 12:ebaefda53dd0 28 if (_output == 0) {
lewisgw 12:ebaefda53dd0 29 run_game(lcd, gamepad);
lewisgw 12:ebaefda53dd0 30 } else if (_output == 1) {
lewisgw 12:ebaefda53dd0 31 display_menu(lcd, gamepad);
lewisgw 12:ebaefda53dd0 32 } else {
lewisgw 12:ebaefda53dd0 33 display_controls(lcd, gamepad);
lewisgw 12:ebaefda53dd0 34 }
lewisgw 9:fff2009f826e 35 }
lewisgw 9:fff2009f826e 36
lewisgw 13:bcf6bb69c597 37 void Menu::set_input(bool start, bool back, bool x) {
lewisgw 13:bcf6bb69c597 38 if (!start && !back && !x) {
lewisgw 12:ebaefda53dd0 39 _menu_input = 0;
lewisgw 12:ebaefda53dd0 40 } else if (!start && back) {
lewisgw 12:ebaefda53dd0 41 _menu_input = 1;
lewisgw 12:ebaefda53dd0 42 } else if (start && !back) {
lewisgw 12:ebaefda53dd0 43 _menu_input = 2;
lewisgw 13:bcf6bb69c597 44 } else if (x) {
lewisgw 12:ebaefda53dd0 45 _menu_input = 3;
lewisgw 12:ebaefda53dd0 46 }
lewisgw 12:ebaefda53dd0 47 }
lewisgw 12:ebaefda53dd0 48
lewisgw 12:ebaefda53dd0 49 void Menu::run_game(N5110 &lcd, Gamepad &gamepad) {
lewisgw 12:ebaefda53dd0 50 _controller.run_game_engine(lcd, gamepad);
lewisgw 11:b66170249a26 51 }
lewisgw 11:b66170249a26 52
lewisgw 13:bcf6bb69c597 53 void Menu::display_controls(N5110 &lcd, Gamepad &gamepad) {
lewisgw 13:bcf6bb69c597 54 lcd.printString("JOYSTICK:",0,0);
lewisgw 13:bcf6bb69c597 55 lcd.printString("-Move left",0,1);
lewisgw 13:bcf6bb69c597 56 lcd.printString("-Move right",0,2);
lewisgw 13:bcf6bb69c597 57 lcd.printString("-Duck",0,3);
lewisgw 13:bcf6bb69c597 58 lcd.printString("A:",0,4);
lewisgw 13:bcf6bb69c597 59 lcd.printString("-Jump (back)",0,5);
lewisgw 13:bcf6bb69c597 60 }
lewisgw 12:ebaefda53dd0 61
lewisgw 12:ebaefda53dd0 62 void Menu::display_menu(N5110 &lcd, Gamepad &gamepad) {
lewisgw 13:bcf6bb69c597 63 _controller.init();
lewisgw 13:bcf6bb69c597 64 lcd.printString("Menu",30,0);
lewisgw 13:bcf6bb69c597 65 lcd.printString("START- Play!",0,1);
lewisgw 13:bcf6bb69c597 66 lcd.printString("X- Controls",0,2);
lewisgw 9:fff2009f826e 67 }