Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

MenuClasses/StartScreen/StartScreen.h

Committer:
AhmedPlaymaker
Date:
2019-05-04
Revision:
67:39b9ba6019b0
Parent:
66:e47333ffc6ca
Child:
76:7fa91122907f

File content as of revision 67:39b9ba6019b0:

#ifndef StartScreen_H
#define StartScreen_H

#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
#include "Settings.h"
#include "Stats.h"
#include "SDFileSystem.h"
#include "Tutorial.h"

class StartScreen
{
public:

    StartScreen();
    ~StartScreen();

    /** Initialise StartScreen
    *
    *   This function initialises the Game Interface and restarts the display.
    */
    void init();

    /** Draw
    *
    *   This function draws the Sprite onto the screen.
    */
    void titleScreen(N5110 &lcd, Gamepad &pad);

    /** Instruct
    *
    *   This function updates the user about how to progress after the game banner has been displayed..
    */
    void instruct(N5110 &lcd, Gamepad &pad);

    /** Display userID
    *
    *   This function shows who the author of the game is before showing the menu screen.
    */
    void credits(N5110 &lcd);

    /** Read Stats
    *
    *   This function just reads the current top level stored in the sd card and saves it for displaying in the menu.
    */
    void read_stats(SDFileSystem &sd);

    /** Check Back Pressed
    *
    *   This function makes a centralised approach to check when back is pressed in a loop, so that it can be used to exit it and also go to.
    *   the previous menu option.
    */
    bool checkBackPressed(Gamepad &pad);

    /** The Menu Screen
    *
    *   This function obtains the user input on how they want to progress.
    */
    void menu(N5110 &lcd, Gamepad &pad);

    /** Main Menu
    *
    *   This function displays all the Main Menu contents to the player.
    */
    void mainMenu(N5110 &lcd, Gamepad &pad);

    /** Draw Selection Arrow
    *
    *   This function draws arrow to select main menu options.
    */
    void drawSelectionArrow(N5110 &lcd, Gamepad &pad);

    /** Implementing The First Menu Screen
    *
    *   This function just implements the things decided in main menu.
    */
    void nextMenu(N5110 &lcd, Gamepad &pad);

    /** The Second Menu Screen
    *
    *   This function obtains the user input on the game type they would like to play.
    */
    void game_mode(N5110 &lcd, Gamepad &pad);

    /** Displaying Mode Options
    *
    *   This function displays game_mode contents.
    */
    void showModeOptions(N5110 &lcd);

    /** Selecting the game mode
    *
    *   value of g_mode is changed in this function that allows the choise beteen joystick/motion control..
    */
    void selectMode(Gamepad &pad);

    /** Motion Control Instructions
    *
    *   This promts the user to press A to centre position their angle if Motion Control is selected..
    */
    void motionControlInstructions(N5110 &lcd);

    /** The Third Menu Screen
    *
    *   This function obtains the user input on the game speed that suits them.
    */
    void game_speed(N5110 &lcd, Gamepad &pad);

    /** Implementing GS
    *
    *   This function just decides what has to be done next.
    */
    void selectSpeedPage(Gamepad &pad);

    /** Displaying GAME speed Contents
    *
    *   This function just displays game_speed contents.
    */
    void showSpeedOptions(N5110 &lcd);

    //SETTING THE GAME SPEED AND GAME MODE.
    int fps; // this sends over the game speed
    int g_mode; //this helps to select between joystick and motion control.
    int speed_index;

    //MENU OPTIONS INDEX.
    int menu_index;

    //VARIABLE USED TO DECIDE WEATHER TO SHOW CREDITS.
    int showCredits;

    //VARIABLE USED TO DECIDE THE WAIT TIME OF THE MENU PAGES.
    float controlSensitivity;

    //VARIABLES TO TOGGLE BACK AND FORTH BETWEEN MENU OPTIONS.
    bool _backPressed; //remembers if back is pressed.
    bool _startPressed; //remembers if start is pressed.

private:

    //OBJECT DECLARATIONS
    Stats _stats;
    Settings _settings;
    Tutorial _tutorial;



};
#endif