Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Fri May 22 17:20:22 2020 +0000
Revision:
70:8c4572d17441
Parent:
69:753ba27325ce
Child:
71:bcbac2cfe005
Added unit test for the settings menu which it passed. And added one more unit test menu screen which it passed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 43:d43759dbddb9 1 #include "Settings.h"
evanso 44:2d957de3bce3 2
evanso 69:753ba27325ce 3 const char settings_part_names[3][9] = {
evanso 69:753ba27325ce 4 {"Contrast"},
evanso 69:753ba27325ce 5 {"Controls"},
evanso 69:753ba27325ce 6 {"Sound FX"},
evanso 69:753ba27325ce 7 };
evanso 69:753ba27325ce 8
evanso 69:753ba27325ce 9 const char controls_part_names[2][4] = {
evanso 69:753ba27325ce 10 {"Joy"},
evanso 69:753ba27325ce 11 {"Acc"},
evanso 69:753ba27325ce 12 };
evanso 69:753ba27325ce 13
evanso 69:753ba27325ce 14 const char sound_part_names[2][4] = {
evanso 69:753ba27325ce 15 {"On"},
evanso 69:753ba27325ce 16 {"Off"},
evanso 69:753ba27325ce 17 };
evanso 69:753ba27325ce 18
evanso 69:753ba27325ce 19 // Defining scroll_order_settings states for scroll_order_settings FSM
evanso 69:753ba27325ce 20 scroll_order_setting settings_fsm[3] = {
evanso 69:753ba27325ce 21 {controls, sound_fx},
evanso 69:753ba27325ce 22 {sound_fx, contrast},
evanso 69:753ba27325ce 23 {contrast, controls},
evanso 69:753ba27325ce 24 };
evanso 69:753ba27325ce 25
evanso 69:753ba27325ce 26 // Defining on_off_order states for settings_on_off FSM
evanso 69:753ba27325ce 27 on_off_order settings_on_off_fsm[2] = {
evanso 69:753ba27325ce 28 {off, on},
evanso 69:753ba27325ce 29 {on, off},
evanso 69:753ba27325ce 30 };
evanso 69:753ba27325ce 31
evanso 69:753ba27325ce 32 // Defining control_order states for settings_joy_acc FSM
evanso 69:753ba27325ce 33 control_order settings_joy_acc_fsm[2] = {
evanso 69:753ba27325ce 34 {acc, joy},
evanso 69:753ba27325ce 35 {joy, acc},
evanso 69:753ba27325ce 36 };
evanso 69:753ba27325ce 37
evanso 44:2d957de3bce3 38 Settings::Settings() {
evanso 44:2d957de3bce3 39
evanso 44:2d957de3bce3 40 }
evanso 44:2d957de3bce3 41
evanso 44:2d957de3bce3 42 Settings::~Settings() {
evanso 44:2d957de3bce3 43
evanso 44:2d957de3bce3 44 }
evanso 44:2d957de3bce3 45
evanso 44:2d957de3bce3 46 void Settings::init(){
evanso 69:753ba27325ce 47 control_method_ = joy;
evanso 69:753ba27325ce 48 sound_method_ = on;
evanso 70:8c4572d17441 49 displayed_settings_part_ = controls;
evanso 69:753ba27325ce 50 }
evanso 69:753ba27325ce 51
evanso 69:753ba27325ce 52 ControlsParts Settings::get_control_method(){
evanso 69:753ba27325ce 53 return control_method_;
evanso 69:753ba27325ce 54 }
evanso 69:753ba27325ce 55
evanso 70:8c4572d17441 56
evanso 70:8c4572d17441 57 SettingsParts Settings::get_displayed_settings_part(){
evanso 70:8c4572d17441 58 return displayed_settings_part_;
evanso 70:8c4572d17441 59 }
evanso 70:8c4572d17441 60
evanso 69:753ba27325ce 61 void Settings::display_settings_screen(N5110 &lcd, float pot_read){
evanso 69:753ba27325ce 62 //Pirnts differnt settings parts
evanso 69:753ba27325ce 63 if(displayed_settings_part_ == controls){
evanso 69:753ba27325ce 64 lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
evanso 69:753ba27325ce 65 lcd.printString(controls_part_names[control_method_],60 ,3);
evanso 69:753ba27325ce 66 }else if(displayed_settings_part_ == sound_fx){
evanso 69:753ba27325ce 67 lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
evanso 69:753ba27325ce 68 lcd.printString(sound_part_names[sound_method_],60 ,3);
evanso 69:753ba27325ce 69 }else if(displayed_settings_part_ == contrast){
evanso 69:753ba27325ce 70 lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
evanso 69:753ba27325ce 71 char buffer[2];
evanso 69:753ba27325ce 72 sprintf(buffer,"%.2f",pot_read);
evanso 69:753ba27325ce 73 lcd.printString(buffer,58,3);
evanso 69:753ba27325ce 74 }
evanso 69:753ba27325ce 75
evanso 69:753ba27325ce 76 //prints setting title and button instructions and arrows
evanso 69:753ba27325ce 77 lcd.printString("Settings",18,0);
evanso 69:753ba27325ce 78 lcd.drawSprite(39, 18, 3, 5, (int *)arrow_up);
evanso 69:753ba27325ce 79 lcd.drawSprite(39, 34, 3, 5, (int *)arrow_down);
evanso 69:753ba27325ce 80 lcd.printString("Back(B)Alt(A)",3,5);
evanso 69:753ba27325ce 81 }
evanso 69:753ba27325ce 82
evanso 69:753ba27325ce 83 void Settings::change_setting(bool pressed) {
evanso 69:753ba27325ce 84 // When a is pressed changes the settings for the displayed setting part
evanso 69:753ba27325ce 85 if (pressed) {
evanso 69:753ba27325ce 86 if (displayed_settings_part_ == sound_fx){
evanso 69:753ba27325ce 87 sound_method_ = settings_on_off_fsm[sound_method_].part_next;
evanso 69:753ba27325ce 88 }else if(displayed_settings_part_ == controls){
evanso 69:753ba27325ce 89 control_method_ = settings_joy_acc_fsm[control_method_].part_next;
evanso 69:753ba27325ce 90 }
evanso 69:753ba27325ce 91 wait(0.15);
evanso 69:753ba27325ce 92 }
evanso 69:753ba27325ce 93
evanso 69:753ba27325ce 94 }
evanso 69:753ba27325ce 95
evanso 69:753ba27325ce 96 void Settings::settings_scroll(Direction d_) {
evanso 69:753ba27325ce 97 // Changes displayed settings part depending on joystick input
evanso 70:8c4572d17441 98 if (d_ == N || d_ == NE || d_ == NW ) {
evanso 70:8c4572d17441 99 //printf(" displayed_settings_part_ %d\n",displayed_settings_part_);
evanso 69:753ba27325ce 100 displayed_settings_part_ =
evanso 69:753ba27325ce 101 settings_fsm[displayed_settings_part_].part_next;
evanso 69:753ba27325ce 102 } else if (d_ == S || d_ == SW || d_ == SE) {
evanso 69:753ba27325ce 103 displayed_settings_part_=
evanso 69:753ba27325ce 104 settings_fsm[displayed_settings_part_].part_next;
evanso 69:753ba27325ce 105 displayed_settings_part_ =
evanso 69:753ba27325ce 106 settings_fsm[displayed_settings_part_].part_next;
evanso 69:753ba27325ce 107 }
evanso 69:753ba27325ce 108 wait(0.15);
evanso 44:2d957de3bce3 109 }