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:
73:d1aea9b8da92
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 #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 69:753ba27325ce 85 ControlsParts 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