Long-Starlight-Snake-Game/GameManager.hpp

69 lines
2.0 KiB
C++

#include "SynEngine.hpp"
class GameConfiguration;
class Grid;
class GameManager
{
private:
static GameConfiguration *config;
static unsigned lastInputDirection;
static sf::Vector2i lastInputVector;
static Grid *grid;
public:
static Timer timer;
static void KeyPress(sf::Keyboard::Key);
static void SetConfig(GameConfiguration &);
static GameConfiguration *GetConfig();
static void SetGrid(Grid &);
static Grid &GetGrid();
static sf::Vector2i GetInputVector();
static unsigned GetInputDirection();
};
GameConfiguration *GameManager::config = NULL;
Grid *GameManager::grid = NULL;
unsigned GameManager::lastInputDirection = 0;
sf::Vector2i GameManager::lastInputVector = sf::Vector2i(1, 0);
void GameManager::KeyPress(sf::Keyboard::Key keycode)
{
switch (keycode)
{
case sf::Keyboard::Key::Up: case sf::Keyboard::Key::W: GameManager::lastInputDirection = 3; GameManager::lastInputVector = sf::Vector2i(0, 1); break;
case sf::Keyboard::Key::Left: case sf::Keyboard::Key::A: GameManager::lastInputDirection = 2; GameManager::lastInputVector = sf::Vector2i(-1, 0); break;
case sf::Keyboard::Key::Down: case sf::Keyboard::Key::S: GameManager::lastInputDirection = 1; GameManager::lastInputVector = sf::Vector2i(0, -1); break;
case sf::Keyboard::Key::Right: case sf::Keyboard::Key::D: GameManager::lastInputDirection = 0; GameManager::lastInputVector = sf::Vector2i(1, 0); break;
}
}
sf::Vector2i GameManager::GetInputVector()
{
return GameManager::lastInputVector;
}
unsigned GameManager::GetInputDirection()
{
return GameManager::lastInputDirection;
}
void GameManager::SetConfig(GameConfiguration &config)
{
GameManager::config = &config;
}
GameConfiguration *GameManager::GetConfig()
{
return GameManager::config;
}
void GameManager::SetGrid(Grid &grid)
{
GameManager::grid = &grid;
}
Grid &GameManager::GetGrid()
{
return *GameManager::grid;
}