Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Mon May 25 18:39:51 2020 +0000
Revision:
82:3211b31e9421
Parent:
74:6827b43c689d
Child:
85:87bc28b151d8
Made commenting and formatting of code more consistent.

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 82:3211b31e9421 4 // Included Headers ------------------------------------------------------------
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 74:6827b43c689d 11 enum SettingsParts {contrast, controls, sound_fx, music };
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 74:6827b43c689d 19 /** Enum for diffent music setting parts*/
evanso 74:6827b43c689d 20 enum MusicParts {music_on, music_off};
evanso 74:6827b43c689d 21
evanso 69:753ba27325ce 22 /** scroll_orderStruct
evanso 69:753ba27325ce 23 * @brief Struct hold differnt settings orders
evanso 69:753ba27325ce 24 */
evanso 69:753ba27325ce 25 struct scroll_order_setting {
evanso 82:3211b31e9421 26 SettingsParts part_previous; /**< Previous settings part */
evanso 74:6827b43c689d 27 SettingsParts part_displayed; /**< Displayed settings part */
evanso 69:753ba27325ce 28 SettingsParts part_next; /**< Next settings part */
evanso 69:753ba27325ce 29 };
evanso 69:753ba27325ce 30
evanso 74:6827b43c689d 31 /** On/off sound fx Struct
evanso 74:6827b43c689d 32 * @brief Struct hold differnt sound fx orders
evanso 69:753ba27325ce 33 */
evanso 69:753ba27325ce 34 struct on_off_order {
evanso 69:753ba27325ce 35 SoundParts part_next; /**< Next onoff part */
evanso 69:753ba27325ce 36 SoundParts part_displayed; /**< Displayed onoff part */
evanso 69:753ba27325ce 37 };
evanso 69:753ba27325ce 38
evanso 74:6827b43c689d 39 /** On/off music Struct
evanso 74:6827b43c689d 40 * @brief Struct hold differnt music orders
evanso 74:6827b43c689d 41 */
evanso 74:6827b43c689d 42 struct music_on_off_order {
evanso 74:6827b43c689d 43 MusicParts part_next; /**< Next onoff part */
evanso 74:6827b43c689d 44 MusicParts part_displayed; /**< Displayed onoff part */
evanso 74:6827b43c689d 45 };
evanso 74:6827b43c689d 46
evanso 69:753ba27325ce 47 /** Controll_orderStruct
evanso 69:753ba27325ce 48 * @brief Struct hold differnt controls orders
evanso 69:753ba27325ce 49 */
evanso 69:753ba27325ce 50 struct control_order {
evanso 69:753ba27325ce 51 ControlsParts part_next; /**< Next controls part */
evanso 69:753ba27325ce 52 ControlsParts part_displayed; /**< Displayed controls part */
evanso 69:753ba27325ce 53 };
evanso 43:d43759dbddb9 54
evanso 43:d43759dbddb9 55 /** Settings class
evanso 43:d43759dbddb9 56 * @brief Change change contrast, control method
evanso 43:d43759dbddb9 57 * @author Benjamin Evans, University of Leeds
evanso 43:d43759dbddb9 58 * @date May 2020
evanso 43:d43759dbddb9 59 */
evanso 43:d43759dbddb9 60 class Settings{
evanso 43:d43759dbddb9 61 public:
evanso 43:d43759dbddb9 62 /** Constructor */
evanso 43:d43759dbddb9 63 Settings();
evanso 43:d43759dbddb9 64
evanso 43:d43759dbddb9 65 /** Destructor */
evanso 43:d43759dbddb9 66 ~Settings();
evanso 43:d43759dbddb9 67
evanso 43:d43759dbddb9 68 /** Initalises Settings*/
evanso 43:d43759dbddb9 69 void init();
evanso 43:d43759dbddb9 70
evanso 69:753ba27325ce 71 /** Draws the settings screen
evanso 69:753ba27325ce 72 * @param lcd @details N5110 object
evanso 82:3211b31e9421 73 * @param pot_read @details Potentiometer read value
evanso 69:753ba27325ce 74 */
evanso 69:753ba27325ce 75 void display_settings_screen(N5110 &lcd, float pot_read);
evanso 69:753ba27325ce 76
evanso 69:753ba27325ce 77 /** Changes the current displayed setting part
evanso 69:753ba27325ce 78 * @param pressed @details Buttom A pressed
evanso 69:753ba27325ce 79 */
evanso 69:753ba27325ce 80 void change_setting(bool pressed);
evanso 69:753ba27325ce 81
evanso 69:753ba27325ce 82 /** Scrolls through the diffent settings parts
evanso 69:753ba27325ce 83 * @param d_ @details Direction of joystick
evanso 69:753ba27325ce 84 */
evanso 69:753ba27325ce 85 void settings_scroll(Direction d_);
evanso 44:2d957de3bce3 86
evanso 43:d43759dbddb9 87 // Accessors and mutators --------------------------------------------------
evanso 44:2d957de3bce3 88
evanso 69:753ba27325ce 89 /** Return the control method that set in setting menu
evanso 69:753ba27325ce 90 * @return control_method_
evanso 44:2d957de3bce3 91 */
evanso 69:753ba27325ce 92 ControlsParts get_control_method();
evanso 69:753ba27325ce 93
evanso 69:753ba27325ce 94 /** Return the sound method that set in setting menu
evanso 69:753ba27325ce 95 * @return sound_method_
evanso 69:753ba27325ce 96 */
evanso 73:d1aea9b8da92 97 SoundParts get_sound_method();
evanso 44:2d957de3bce3 98
evanso 74:6827b43c689d 99 /** Return the music method that set in setting menu
evanso 74:6827b43c689d 100 * @return music_method_
evanso 74:6827b43c689d 101 */
evanso 74:6827b43c689d 102 MusicParts get_music_method();
evanso 74:6827b43c689d 103
evanso 70:8c4572d17441 104 /** Return the setting part that is displayed
evanso 70:8c4572d17441 105 * @return get_displayed_settings_part_
evanso 70:8c4572d17441 106 */
evanso 70:8c4572d17441 107 SettingsParts get_displayed_settings_part();
evanso 70:8c4572d17441 108
evanso 43:d43759dbddb9 109 private:
evanso 43:d43759dbddb9 110
evanso 43:d43759dbddb9 111 // Varibles ----------------------------------------------------------------
evanso 44:2d957de3bce3 112
evanso 44:2d957de3bce3 113 /** LCD contrast */
evanso 44:2d957de3bce3 114 int lcd_contrast;
evanso 44:2d957de3bce3 115
evanso 69:753ba27325ce 116 /** Control method of the spaceship */
evanso 69:753ba27325ce 117 ControlsParts control_method_;
evanso 69:753ba27325ce 118
evanso 69:753ba27325ce 119 /** Controls whether sound fx are on or not */
evanso 69:753ba27325ce 120 SoundParts sound_method_;
evanso 69:753ba27325ce 121
evanso 74:6827b43c689d 122 /** Controls whether music are on or not */
evanso 74:6827b43c689d 123 MusicParts music_method_;
evanso 74:6827b43c689d 124
evanso 69:753ba27325ce 125 /** The part of setting that is displayed */
evanso 69:753ba27325ce 126 SettingsParts displayed_settings_part_;
evanso 69:753ba27325ce 127
evanso 43:d43759dbddb9 128 };
evanso 43:d43759dbddb9 129 #endif