/*
 * game_engine.h
 *
 *  Created on: 29 nov. 2019
 *      Author: JackCarterSmith
 */

#ifndef GAME_ENGINE_H_
#define GAME_ENGINE_H_

#include "stm32412g_discovery.h"


/**
  * @brief  HighScores datas structure
  */
typedef struct {
  uint8_t Solo_HS;
  uint8_t Multi_HS;
}PP_HighScoresTypeDef;

/**
  * @brief  Ball datas structure
  */
typedef struct {
  uint8_t posX;
  uint8_t posY;
  int8_t accX;
  int8_t accY;
}PP_BallTypeDef;

/**
  * @brief  PongBar datas structure
  */
typedef struct {
  uint8_t pos;
  int8_t acc;
}PP_BarTypeDef;

/**
  * @brief  GameMode type definitions
  */
typedef enum {
  SOLO_MODE		= 0x01,
  MULTI_MODE	= 0x02
}Game_ModeTypdef;

/**
  * @brief  Menu definitions
  */
typedef enum {
  MENU_MAIN	= 0x01,
  MENU_GAME	= 0x02,
  MENU_END	= 0x03
}MenuTypdef;


//void generateNewBall(Game_ModeTypdef type, uint32_t seed);
uint32_t genSeed();
void refreshCurrScreen(uint32_t _t, PP_BarTypeDef *_barDatas);
void displayLoadingScreen();
void displayStartMenu(PP_HighScoresTypeDef hsDatas);
void displayGameArea(Game_ModeTypdef type, PP_BarTypeDef *_barDatas);
void displayEndMenu();
MenuTypdef getCurrMenu();

#endif /* GAME_ENGINE_H_ */
