-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGameState.cpp
48 lines (37 loc) · 994 Bytes
/
GameState.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "GameState.hpp"
GameState::GameState(StateStack &stack, Context context)
: State(stack, context)
, mWorld(*(context.window), *(context.fonts))
, mPlayer(*(context.player))
{
}
void GameState::draw()
{
mWorld.draw();
}
bool GameState::update(sf::Time dt)
{
mWorld.update(dt);
if(!mWorld.hasAlivePlayer())
{
mPlayer.setMissionStatus(Player::MissionFailure);
requestStackPush(States::GameOver);
}
else if(mWorld.hasPlayerReachedEnd())
{
// mPlayer.setMissionStatus(Player::MissionSuccess);
// requestStackPush(States::GameOver);
}
CommandQueue &commands = mWorld.getCommandQueue();
mPlayer.handleRealtimeInput(commands);
return true;
}
bool GameState::handleEvent(const sf::Event &event)
{
CommandQueue &commands = mWorld.getCommandQueue();
mPlayer.handleEvent(event, commands);
// Escape pressed trigger the pause screen
if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
requestStackPush(States::Pause);
return true;
}