Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Sat May 23 21:50:33 2020 +0000
Revision:
73:d1aea9b8da92
Parent:
70:8c4572d17441
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 #ifndef SETTINGS_H
evanso 43:d43759dbddb9 2 #define SETTINGS_H
evanso 43:d43759dbddb9 3
evanso 43:d43759dbddb9 4 // Included libraries ----------------------------------------------------------
evanso 43:d43759dbddb9 5 #include "mbed.h"
evanso 43:d43759dbddb9 6 #include "N5110.h"
evanso 43:d43759dbddb9 7 #include "Gamepad.h"
evanso 69:753ba27325ce 8 #include "Sprites.h"
evanso 69:753ba27325ce 9
evanso 69:753ba27325ce 10 /** Enum for diffent menu parts*/
evanso 69:753ba27325ce 11 enum SettingsParts {contrast, controls, sound_fx };
evanso 69:753ba27325ce 12
evanso 70:8c4572d17441 13 /** Enum for diffent control settings parts, joystick and accelerometer*/
evanso 69:753ba27325ce 14 enum ControlsParts {joy, acc};
evanso 69:753ba27325ce 15
evanso 69:753ba27325ce 16 /** Enum for diffent sound setting parts*/
evanso 69:753ba27325ce 17 enum SoundParts {on, off};
evanso 69:753ba27325ce 18
evanso 69:753ba27325ce 19 /** scroll_orderStruct
evanso 69:753ba27325ce 20 * @brief Struct hold differnt settings orders
evanso 69:753ba27325ce 21 */
evanso 69:753ba27325ce 22 struct scroll_order_setting {
evanso 69:753ba27325ce 23 SettingsParts part_next; /**< Next settings part */
evanso 69:753ba27325ce 24 SettingsParts part_displayed; /**< Displayed settings part */
evanso 69:753ba27325ce 25 };
evanso 69:753ba27325ce 26
evanso 69:753ba27325ce 27 /** On/off Struct
evanso 69:753ba27325ce 28 * @brief Struct hold differnt settings orders
evanso 69:753ba27325ce 29 */
evanso 69:753ba27325ce 30 struct on_off_order {
evanso 69:753ba27325ce 31 SoundParts part_next; /**< Next onoff part */
evanso 69:753ba27325ce 32 SoundParts part_displayed; /**< Displayed onoff part */
evanso 69:753ba27325ce 33 };
evanso 69:753ba27325ce 34
evanso 69:753ba27325ce 35 /** Controll_orderStruct
evanso 69:753ba27325ce 36 * @brief Struct hold differnt controls orders
evanso 69:753ba27325ce 37 */
evanso 69:753ba27325ce 38 struct control_order {
evanso 69:753ba27325ce 39 ControlsParts part_next; /**< Next controls part */
evanso 69:753ba27325ce 40 ControlsParts part_displayed; /**< Displayed controls part */
evanso 69:753ba27325ce 41 };
evanso 43:d43759dbddb9 42
evanso 43:d43759dbddb9 43 /** Settings class
evanso 43:d43759dbddb9 44 * @brief Change change contrast, control method
evanso 43:d43759dbddb9 45 * @author Benjamin Evans, University of Leeds
evanso 43:d43759dbddb9 46 * @date May 2020
evanso 43:d43759dbddb9 47 */
evanso 43:d43759dbddb9 48 class Settings{
evanso 43:d43759dbddb9 49 public:
evanso 43:d43759dbddb9 50 /** Constructor */
evanso 43:d43759dbddb9 51 Settings();
evanso 43:d43759dbddb9 52
evanso 43:d43759dbddb9 53 /** Destructor */
evanso 43:d43759dbddb9 54 ~Settings();
evanso 43:d43759dbddb9 55
evanso 43:d43759dbddb9 56 /** Initalises Settings*/
evanso 43:d43759dbddb9 57 void init();
evanso 43:d43759dbddb9 58
evanso 69:753ba27325ce 59 /** Draws the settings screen
evanso 69:753ba27325ce 60 * @param lcd @details N5110 object
evanso 69:753ba27325ce 61 * @param pad @details Gamepad object
evanso 69:753ba27325ce 62 */
evanso 69:753ba27325ce 63 void display_settings_screen(N5110 &lcd, float pot_read);
evanso 69:753ba27325ce 64
evanso 69:753ba27325ce 65 /** Changes the current displayed setting part
evanso 69:753ba27325ce 66 * @param pressed @details Buttom A pressed
evanso 69:753ba27325ce 67 */
evanso 69:753ba27325ce 68 void change_setting(bool pressed);
evanso 69:753ba27325ce 69
evanso 69:753ba27325ce 70 /** Scrolls through the diffent settings parts
evanso 69:753ba27325ce 71 * @param d_ @details Direction of joystick
evanso 69:753ba27325ce 72 */
evanso 69:753ba27325ce 73 void settings_scroll(Direction d_);
evanso 44:2d957de3bce3 74
evanso 43:d43759dbddb9 75 // Accessors and mutators --------------------------------------------------
evanso 44:2d957de3bce3 76
evanso 69:753ba27325ce 77 /** Return the control method that set in setting menu
evanso 69:753ba27325ce 78 * @return control_method_
evanso 44:2d957de3bce3 79 */
evanso 69:753ba27325ce 80 ControlsParts get_control_method();
evanso 69:753ba27325ce 81
evanso 69:753ba27325ce 82 /** Return the sound method that set in setting menu
evanso 69:753ba27325ce 83 * @return sound_method_
evanso 69:753ba27325ce 84 */
evanso 73:d1aea9b8da92 85 SoundParts get_sound_method();
evanso 44:2d957de3bce3 86
evanso 70:8c4572d17441 87 /** Return the setting part that is displayed
evanso 70:8c4572d17441 88 * @return get_displayed_settings_part_
evanso 70:8c4572d17441 89 */
evanso 70:8c4572d17441 90 SettingsParts get_displayed_settings_part();
evanso 70:8c4572d17441 91
evanso 43:d43759dbddb9 92 private:
evanso 43:d43759dbddb9 93
evanso 43:d43759dbddb9 94 // Varibles ----------------------------------------------------------------
evanso 44:2d957de3bce3 95
evanso 44:2d957de3bce3 96 /** LCD contrast */
evanso 44:2d957de3bce3 97 int lcd_contrast;
evanso 44:2d957de3bce3 98
evanso 69:753ba27325ce 99 /** Control method of the spaceship */
evanso 69:753ba27325ce 100 ControlsParts control_method_;
evanso 69:753ba27325ce 101
evanso 69:753ba27325ce 102 /** Controls whether sound fx are on or not */
evanso 69:753ba27325ce 103 SoundParts sound_method_;
evanso 69:753ba27325ce 104
evanso 69:753ba27325ce 105 /** The part of setting that is displayed */
evanso 69:753ba27325ce 106 SettingsParts displayed_settings_part_;
evanso 69:753ba27325ce 107
evanso 43:d43759dbddb9 108 };
evanso 43:d43759dbddb9 109 #endif