#ifndef MENU_H
#define MENU_H

#include <cpctelera.h>
#include "Difficulty.h"
#include "Game.h"
#include "GameState.h"
#include "GameTypes.h"
#include "Keys.h"
#include "Palette.h"
#include "Sound.h"
#include "Text.h"
#include "Version.h"

// Sets up the main menu and runs the menu loop.
void runMenu();

// Draws the main menu on the screen.
void drawMenu();

// Switch between a GT64 friendly palette and normal colourful palette.
void switchColourMode();

// Switch between sound off, sound effects only and sound effects and music.
void switchSoundMode();

// Displays choices for the user to choose the keyboard/joystick controls for the game.
void rebindControls();

// Get the user pressed key for rebind/redefine key controls by ranaldo.
cpct_keyID getKey();

// Displays the current high scores on the screen in a list.
void displayHighScores();

// Initialise the high score values.
void initHighScores();

// Choose the level of difficulty for the game session.
void chooseDifficulty();

// Displays either victorious or game over depending on if the user completes the game or not.
void displayEndScreen();

// Update the high scores if the player has a high score.
void updateHighScores();

// Allow the user to enter a pass code to jump to the target level.
u8 enterPasscode();

// Allows the user to enter letters to form a word.
void enterWord(u8* word, u8 maxLength);

// Runs the full game session and displays victory or defeat based on outcome.
void runFullGame();

#endif