Global static input handling
This commit is contained in:
parent
adc2246bb7
commit
7b0560f6fd
8 changed files with 64 additions and 14 deletions
|
@ -41,7 +41,12 @@ set(SOURCES
|
|||
src/game/input/input_mapper.cpp
|
||||
src/game/input/input_mapper.h
|
||||
src/game/input/action_controller.cpp
|
||||
src/game/input/action_controller.h src/game/input/direction.h src/game/input/direction.cpp)
|
||||
src/game/input/action_controller.h
|
||||
src/game/input/direction.h
|
||||
src/game/input/direction.cpp
|
||||
src/game/player/player.cpp
|
||||
src/game/player/player.hpp
|
||||
src/game/input/game_inputs.hpp)
|
||||
|
||||
set(PHYSICS_00_SOURCES
|
||||
src/prototypes/physics_00.cpp)
|
||||
|
|
|
@ -3,17 +3,18 @@
|
|||
#include <SFML/Graphics/RenderWindow.hpp>
|
||||
|
||||
#include "game.h"
|
||||
#include "../config.h"
|
||||
|
||||
Game::Game(std::shared_ptr<sf::RenderWindow> window) : window(std::move(window)),
|
||||
gameObjects(),
|
||||
actionController(new ActionController(this)),
|
||||
inputMapper(new InputMapper(this))
|
||||
actionController(new ActionController(this))
|
||||
{
|
||||
InputMapper::setGame(this);
|
||||
}
|
||||
|
||||
Game::~Game()
|
||||
{
|
||||
delete actionController;
|
||||
|
||||
for (auto &gameObject: gameObjects)
|
||||
{
|
||||
delete gameObject;
|
||||
|
@ -28,14 +29,14 @@ void Game::run()
|
|||
while (window->isOpen())
|
||||
{
|
||||
|
||||
inputMapper->processEvents();
|
||||
InputMapper::processEvents();
|
||||
TimeSinceLastUpdate += clock.restart();
|
||||
while (TimeSinceLastUpdate >= FRAME_TIME)
|
||||
{
|
||||
TimeSinceLastUpdate -= FRAME_TIME;
|
||||
|
||||
update();
|
||||
inputMapper->processEvents();
|
||||
InputMapper::processEvents();
|
||||
}
|
||||
drawFrame();
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
|
||||
|
||||
class ActionController;
|
||||
class InputMapper;
|
||||
|
||||
|
||||
class Game
|
||||
|
@ -28,7 +27,6 @@ public:
|
|||
|
||||
std::shared_ptr<sf::RenderWindow> window;
|
||||
ActionController *actionController;
|
||||
InputMapper *inputMapper;
|
||||
private:
|
||||
std::vector<GameObject *> gameObjects;
|
||||
|
||||
|
|
25
src/game/input/game_inputs.hpp
Normal file
25
src/game/input/game_inputs.hpp
Normal file
|
@ -0,0 +1,25 @@
|
|||
#ifndef HOLESOME_GAME_INPUTS_HPP
|
||||
#define HOLESOME_GAME_INPUTS_HPP
|
||||
|
||||
|
||||
enum MenuInputs
|
||||
{
|
||||
MENU_NONE,
|
||||
MENU_UP,
|
||||
MENU_DOWN,
|
||||
MENU_LEFT,
|
||||
MENU_RIGHT,
|
||||
MENU_SELECT,
|
||||
MENU_BACK,
|
||||
MENU_OPEN
|
||||
};
|
||||
|
||||
enum GameInputs
|
||||
{
|
||||
GAME_NONE,
|
||||
GAME_HIDE,
|
||||
GAME_MOVE,
|
||||
GAME_RUN
|
||||
};
|
||||
|
||||
#endif //HOLESOME_GAME_INPUTS_HPP
|
|
@ -1,11 +1,12 @@
|
|||
#include "input_mapper.h"
|
||||
|
||||
|
||||
InputMapper::InputMapper(Game *game) : game(game)
|
||||
void InputMapper::setGame(Game *game)
|
||||
{
|
||||
|
||||
InputMapper::game = game;
|
||||
}
|
||||
|
||||
|
||||
void InputMapper::processEvents()
|
||||
{
|
||||
sf::Event event{};
|
||||
|
|
|
@ -13,14 +13,14 @@ class Game;
|
|||
class InputMapper
|
||||
{
|
||||
public:
|
||||
explicit InputMapper(Game *game);
|
||||
static void setGame(Game *game);
|
||||
|
||||
void processEvents();
|
||||
static void processEvents();
|
||||
|
||||
private:
|
||||
Game *game;
|
||||
static inline Game *game = nullptr;
|
||||
|
||||
void handleKeyPress(sf::Event::KeyEvent event);
|
||||
static void handleKeyPress(sf::Event::KeyEvent event);
|
||||
};
|
||||
|
||||
|
||||
|
|
1
src/game/player/player.cpp
Normal file
1
src/game/player/player.cpp
Normal file
|
@ -0,0 +1 @@
|
|||
#include "player.hpp"
|
19
src/game/player/player.hpp
Normal file
19
src/game/player/player.hpp
Normal file
|
@ -0,0 +1,19 @@
|
|||
#ifndef HOLESOME_PLAYER_HPP
|
||||
#define HOLESOME_PLAYER_HPP
|
||||
|
||||
#include "../game_object.h"
|
||||
|
||||
class Player : GameObject
|
||||
{
|
||||
public:
|
||||
Player();
|
||||
|
||||
~Player();
|
||||
|
||||
void draw(sf::RenderWindow *window) const override;
|
||||
|
||||
void update() const override;
|
||||
};
|
||||
|
||||
|
||||
#endif //HOLESOME_PLAYER_HPP
|
Loading…
Reference in a new issue