Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Settings/Settings.cpp
- Committer:
- evanso
- Date:
- 2020-05-22
- Revision:
- 70:8c4572d17441
- Parent:
- 69:753ba27325ce
- Child:
- 71:bcbac2cfe005
File content as of revision 70:8c4572d17441:
#include "Settings.h"
const char settings_part_names[3][9] = {
{"Contrast"},
{"Controls"},
{"Sound FX"},
};
const char controls_part_names[2][4] = {
{"Joy"},
{"Acc"},
};
const char sound_part_names[2][4] = {
{"On"},
{"Off"},
};
// Defining scroll_order_settings states for scroll_order_settings FSM
scroll_order_setting settings_fsm[3] = {
{controls, sound_fx},
{sound_fx, contrast},
{contrast, controls},
};
// Defining on_off_order states for settings_on_off FSM
on_off_order settings_on_off_fsm[2] = {
{off, on},
{on, off},
};
// Defining control_order states for settings_joy_acc FSM
control_order settings_joy_acc_fsm[2] = {
{acc, joy},
{joy, acc},
};
Settings::Settings() {
}
Settings::~Settings() {
}
void Settings::init(){
control_method_ = joy;
sound_method_ = on;
displayed_settings_part_ = controls;
}
ControlsParts Settings::get_control_method(){
return control_method_;
}
SettingsParts Settings::get_displayed_settings_part(){
return displayed_settings_part_;
}
void Settings::display_settings_screen(N5110 &lcd, float pot_read){
//Pirnts differnt settings parts
if(displayed_settings_part_ == controls){
lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
lcd.printString(controls_part_names[control_method_],60 ,3);
}else if(displayed_settings_part_ == sound_fx){
lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
lcd.printString(sound_part_names[sound_method_],60 ,3);
}else if(displayed_settings_part_ == contrast){
lcd.printString(settings_part_names[displayed_settings_part_],6 ,3);
char buffer[2];
sprintf(buffer,"%.2f",pot_read);
lcd.printString(buffer,58,3);
}
//prints setting title and button instructions and arrows
lcd.printString("Settings",18,0);
lcd.drawSprite(39, 18, 3, 5, (int *)arrow_up);
lcd.drawSprite(39, 34, 3, 5, (int *)arrow_down);
lcd.printString("Back(B)Alt(A)",3,5);
}
void Settings::change_setting(bool pressed) {
// When a is pressed changes the settings for the displayed setting part
if (pressed) {
if (displayed_settings_part_ == sound_fx){
sound_method_ = settings_on_off_fsm[sound_method_].part_next;
}else if(displayed_settings_part_ == controls){
control_method_ = settings_joy_acc_fsm[control_method_].part_next;
}
wait(0.15);
}
}
void Settings::settings_scroll(Direction d_) {
// Changes displayed settings part depending on joystick input
if (d_ == N || d_ == NE || d_ == NW ) {
//printf(" displayed_settings_part_ %d\n",displayed_settings_part_);
displayed_settings_part_ =
settings_fsm[displayed_settings_part_].part_next;
} else if (d_ == S || d_ == SW || d_ == SE) {
displayed_settings_part_=
settings_fsm[displayed_settings_part_].part_next;
displayed_settings_part_ =
settings_fsm[displayed_settings_part_].part_next;
}
wait(0.15);
}