diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2022-03-19 16:46:19 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2022-03-19 16:46:19 -0400 |
commit | b2f0190f6b2a227a21dd4909476171f7cc371a2d (patch) | |
tree | 0b12cdc515198a6daf5d0a39ed40f581e410cfba /src/game.cpp | |
parent | 81e8c1dae2e7e4be632d6e81d765b5dd43ea3927 (diff) | |
download | ether-b2f0190f6b2a227a21dd4909476171f7cc371a2d.tar.gz ether-b2f0190f6b2a227a21dd4909476171f7cc371a2d.tar.bz2 ether-b2f0190f6b2a227a21dd4909476171f7cc371a2d.zip |
menu!
Diffstat (limited to 'src/game.cpp')
-rw-r--r-- | src/game.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/game.cpp b/src/game.cpp index f8508c2..501722d 100644 --- a/src/game.cpp +++ b/src/game.cpp | |||
@@ -12,6 +12,7 @@ | |||
12 | Game::Game(std::mt19937& rng, Muxer& muxer, Renderer& renderer) : | 12 | Game::Game(std::mt19937& rng, Muxer& muxer, Renderer& renderer) : |
13 | rng(rng), | 13 | rng(rng), |
14 | muxer(muxer), | 14 | muxer(muxer), |
15 | renderer(renderer), | ||
15 | sign(renderer.getFont()) | 16 | sign(renderer.getFont()) |
16 | { | 17 | { |
17 | losePopLampTimer.accumulate(losePopLampTimer.getDt()); | 18 | losePopLampTimer.accumulate(losePopLampTimer.getDt()); |
@@ -740,13 +741,7 @@ void Game::updatePlaying(size_t frameTime) { | |||
740 | { | 741 | { |
741 | if (e.type == SDL_QUIT) | 742 | if (e.type == SDL_QUIT) |
742 | { | 743 | { |
743 | if (losing != LoseState::None) | 744 | quit = true; |
744 | { | ||
745 | quit = true; | ||
746 | } else { | ||
747 | losing = LoseState::PoppingLamps; | ||
748 | muxer.stopMusic(); | ||
749 | } | ||
750 | } else if (e.type == SDL_KEYDOWN) | 745 | } else if (e.type == SDL_KEYDOWN) |
751 | { | 746 | { |
752 | switch (e.key.keysym.sym) | 747 | switch (e.key.keysym.sym) |
@@ -755,10 +750,13 @@ void Game::updatePlaying(size_t frameTime) { | |||
755 | { | 750 | { |
756 | if (losing != LoseState::None) | 751 | if (losing != LoseState::None) |
757 | { | 752 | { |
758 | quit = true; | 753 | if (quitting) { |
754 | quit = true; | ||
755 | } else { | ||
756 | losing = LoseState::Done; | ||
757 | } | ||
759 | } else { | 758 | } else { |
760 | losing = LoseState::PoppingLamps; | 759 | menu.open(*this); |
761 | muxer.stopMusic(); | ||
762 | } | 760 | } |
763 | 761 | ||
764 | break; | 762 | break; |
@@ -922,11 +920,21 @@ void Game::updatePlaying(size_t frameTime) { | |||
922 | { | 920 | { |
923 | if (numDust == 0) | 921 | if (numDust == 0) |
924 | { | 922 | { |
925 | quit = true; | 923 | if (quitting) { |
924 | quit = true; | ||
925 | } else { | ||
926 | losing = LoseState::Done; | ||
927 | } | ||
926 | } | 928 | } |
927 | 929 | ||
928 | break; | 930 | break; |
929 | } | 931 | } |
932 | |||
933 | case LoseState::Done: | ||
934 | { | ||
935 | // Do nothing. | ||
936 | break; | ||
937 | } | ||
930 | } | 938 | } |
931 | 939 | ||
932 | switch (signInstructionState) { | 940 | switch (signInstructionState) { |
@@ -1035,7 +1043,9 @@ void Game::updatePlaying(size_t frameTime) { | |||
1035 | } | 1043 | } |
1036 | 1044 | ||
1037 | void Game::update(size_t frameTime) { | 1045 | void Game::update(size_t frameTime) { |
1038 | if (sign.signDisplayState != SignInstructionState::Hidden) { | 1046 | if (menu.menuState != MenuState::Closed) { |
1047 | menu.update(frameTime, *this); | ||
1048 | } else if (sign.signDisplayState != SignInstructionState::Hidden) { | ||
1039 | sign.update(frameTime, *this); | 1049 | sign.update(frameTime, *this); |
1040 | } else { | 1050 | } else { |
1041 | updatePlaying(frameTime); | 1051 | updatePlaying(frameTime); |