mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 00:07:36 +00:00
BrickGame: Stop bricks from falling when paused
Allows for pausing with either the `P` or `Escape` keys. In this commit you can still rotate pieces when paused - which makes for an interesting "stop-time" cheat mechanic, but probably isn't yet what we want.
This commit is contained in:
parent
dfb45705e6
commit
06a9e4280b
1 changed files with 28 additions and 4 deletions
|
@ -246,6 +246,7 @@ class Bricks final {
|
||||||
public:
|
public:
|
||||||
enum class GameState {
|
enum class GameState {
|
||||||
Active,
|
Active,
|
||||||
|
Paused,
|
||||||
GameOver
|
GameOver
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -316,6 +317,20 @@ public:
|
||||||
return RenderRequest::RequestUpdate;
|
return RenderRequest::RequestUpdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void toggle_pause()
|
||||||
|
{
|
||||||
|
switch (m_state) {
|
||||||
|
case GameState::Active:
|
||||||
|
m_state = GameState::Paused;
|
||||||
|
break;
|
||||||
|
case GameState::Paused:
|
||||||
|
m_state = GameState::Active;
|
||||||
|
break;
|
||||||
|
case GameState::GameOver:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[[nodiscard]] RenderRequest update()
|
[[nodiscard]] RenderRequest update()
|
||||||
{
|
{
|
||||||
auto const current_level { m_level };
|
auto const current_level { m_level };
|
||||||
|
@ -433,12 +448,17 @@ void BrickGame::reset()
|
||||||
|
|
||||||
void BrickGame::timer_event(Core::TimerEvent&)
|
void BrickGame::timer_event(Core::TimerEvent&)
|
||||||
{
|
{
|
||||||
if (m_brick_game->state() == Bricks::GameState::GameOver) {
|
switch (m_brick_game->state()) {
|
||||||
|
case Bricks::GameState::GameOver:
|
||||||
game_over();
|
game_over();
|
||||||
return;
|
break;
|
||||||
|
case Bricks::GameState::Active:
|
||||||
|
if (m_brick_game->update() == Bricks::RenderRequest::RequestUpdate)
|
||||||
|
update();
|
||||||
|
break;
|
||||||
|
case Bricks::GameState::Paused:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (m_brick_game->update() == Bricks::RenderRequest::RequestUpdate)
|
|
||||||
update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrickGame::keydown_event(GUI::KeyEvent& event)
|
void BrickGame::keydown_event(GUI::KeyEvent& event)
|
||||||
|
@ -470,6 +490,10 @@ void BrickGame::keydown_event(GUI::KeyEvent& event)
|
||||||
case KeyCode::Key_Space:
|
case KeyCode::Key_Space:
|
||||||
render_request = m_brick_game->move_down_fast();
|
render_request = m_brick_game->move_down_fast();
|
||||||
break;
|
break;
|
||||||
|
case KeyCode::Key_Escape:
|
||||||
|
case KeyCode::Key_P:
|
||||||
|
m_brick_game->toggle_pause();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
event.ignore();
|
event.ignore();
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue