Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Sat May 23 21:50:33 2020 +0000
Revision:
73:d1aea9b8da92
Parent:
71:bcbac2cfe005
Child:
74:6827b43c689d
Turning sound effects off now actually turns the sound fx off.

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 73:d1aea9b8da92 57 SoundParts Settings::get_sound_method(){
evanso 73:d1aea9b8da92 58 return sound_method_;
evanso 73:d1aea9b8da92 59 }
evanso 73:d1aea9b8da92 60
evanso 70:8c4572d17441 61 SettingsParts Settings::get_displayed_settings_part(){
evanso 70:8c4572d17441 62 return displayed_settings_part_;
evanso 70:8c4572d17441 63 }
evanso 70:8c4572d17441 64
evanso 69:753ba27325ce 65 void Settings::display_settings_screen(N5110 &lcd, float pot_read){
evanso 69:753ba27325ce 66 //Pirnts differnt settings parts
evanso 69:753ba27325ce 67 if(displayed_settings_part_ == controls){
evanso 69:753ba27325ce 68 lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
evanso 69:753ba27325ce 69 lcd.printString(controls_part_names[control_method_],60 ,3);
evanso 69:753ba27325ce 70 }else if(displayed_settings_part_ == sound_fx){
evanso 69:753ba27325ce 71 lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
evanso 69:753ba27325ce 72 lcd.printString(sound_part_names[sound_method_],60 ,3);
evanso 69:753ba27325ce 73 }else if(displayed_settings_part_ == contrast){
evanso 69:753ba27325ce 74 lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
evanso 69:753ba27325ce 75 char buffer[2];
evanso 69:753ba27325ce 76 sprintf(buffer,"%.2f",pot_read);
evanso 69:753ba27325ce 77 lcd.printString(buffer,58,3);
evanso 69:753ba27325ce 78 }
evanso 69:753ba27325ce 79
evanso 69:753ba27325ce 80 //prints setting title and button instructions and arrows
evanso 69:753ba27325ce 81 lcd.printString("Settings",18,0);
evanso 69:753ba27325ce 82 lcd.drawSprite(39, 18, 3, 5, (int *)arrow_up);
evanso 69:753ba27325ce 83 lcd.drawSprite(39, 34, 3, 5, (int *)arrow_down);
evanso 69:753ba27325ce 84 lcd.printString("Back(B)Alt(A)",3,5);
evanso 69:753ba27325ce 85 }
evanso 69:753ba27325ce 86
evanso 69:753ba27325ce 87 void Settings::change_setting(bool pressed) {
evanso 69:753ba27325ce 88 // When a is pressed changes the settings for the displayed setting part
evanso 69:753ba27325ce 89 if (pressed) {
evanso 69:753ba27325ce 90 if (displayed_settings_part_ == sound_fx){
evanso 69:753ba27325ce 91 sound_method_ = settings_on_off_fsm[sound_method_].part_next;
evanso 69:753ba27325ce 92 }else if(displayed_settings_part_ == controls){
evanso 69:753ba27325ce 93 control_method_ = settings_joy_acc_fsm[control_method_].part_next;
evanso 69:753ba27325ce 94 }
evanso 71:bcbac2cfe005 95 wait(0.3);
evanso 69:753ba27325ce 96 }
evanso 69:753ba27325ce 97
evanso 69:753ba27325ce 98 }
evanso 69:753ba27325ce 99
evanso 69:753ba27325ce 100 void Settings::settings_scroll(Direction d_) {
evanso 69:753ba27325ce 101 // Changes displayed settings part depending on joystick input
evanso 70:8c4572d17441 102 if (d_ == N || d_ == NE || d_ == NW ) {
evanso 70:8c4572d17441 103 //printf(" displayed_settings_part_ %d\n",displayed_settings_part_);
evanso 69:753ba27325ce 104 displayed_settings_part_ =
evanso 69:753ba27325ce 105 settings_fsm[displayed_settings_part_].part_next;
evanso 69:753ba27325ce 106 } else if (d_ == S || d_ == SW || d_ == SE) {
evanso 69:753ba27325ce 107 displayed_settings_part_=
evanso 69:753ba27325ce 108 settings_fsm[displayed_settings_part_].part_next;
evanso 69:753ba27325ce 109 displayed_settings_part_ =
evanso 69:753ba27325ce 110 settings_fsm[displayed_settings_part_].part_next;
evanso 69:753ba27325ce 111 }
evanso 69:753ba27325ce 112 wait(0.15);
evanso 44:2d957de3bce3 113 }