diff options
Diffstat (limited to 'src/game.cpp')
| -rw-r--r-- | src/game.cpp | 33 |
1 files changed, 28 insertions, 5 deletions
| diff --git a/src/game.cpp b/src/game.cpp index 301447f..5838528 100644 --- a/src/game.cpp +++ b/src/game.cpp | |||
| @@ -7,9 +7,10 @@ | |||
| 7 | #include "renderer.h" | 7 | #include "renderer.h" |
| 8 | #include "consts.h" | 8 | #include "consts.h" |
| 9 | 9 | ||
| 10 | Game::Game(std::mt19937& rng, Muxer& muxer) : | 10 | Game::Game(std::mt19937& rng, Muxer& muxer, Renderer& renderer) : |
| 11 | rng(rng), | 11 | rng(rng), |
| 12 | muxer(muxer) | 12 | muxer(muxer), |
| 13 | sign(renderer.getFont()) | ||
| 13 | { | 14 | { |
| 14 | losePopLampTimer.accumulate(losePopLampTimer.getDt()); | 15 | losePopLampTimer.accumulate(losePopLampTimer.getDt()); |
| 15 | 16 | ||
| @@ -631,7 +632,7 @@ void Game::performDash() { | |||
| 631 | } | 632 | } |
| 632 | } | 633 | } |
| 633 | 634 | ||
| 634 | void Game::update(size_t frameTime) { | 635 | void Game::updatePlaying(size_t frameTime) { |
| 635 | SDL_Event e; | 636 | SDL_Event e; |
| 636 | 637 | ||
| 637 | while (SDL_PollEvent(&e)) | 638 | while (SDL_PollEvent(&e)) |
| @@ -666,8 +667,22 @@ void Game::update(size_t frameTime) { | |||
| 666 | { | 667 | { |
| 667 | if (losing == LoseState::None) | 668 | if (losing == LoseState::None) |
| 668 | { | 669 | { |
| 670 | auto [lookX, lookY] = coordInDirection(player_x, player_y, playerAnim.getDirection()); | ||
| 671 | MapData& lookTile = map.at(lookX, lookY); | ||
| 669 | if (moving) { | 672 | if (moving) { |
| 670 | queueDash = true; | 673 | if (!lookTile.sign) { |
| 674 | queueDash = true; | ||
| 675 | } | ||
| 676 | } else if (lookTile.sign) { | ||
| 677 | if (lookTile.text.empty()) { | ||
| 678 | int lineToRead = nextSignIndex++; | ||
| 679 | if (nextSignIndex >= signTexts.size()) { | ||
| 680 | nextSignIndex = 0; | ||
| 681 | } | ||
| 682 | lookTile.text = signTexts[lineToRead]; | ||
| 683 | } | ||
| 684 | |||
| 685 | sign.displayMessage(lookTile.text); | ||
| 671 | } else { | 686 | } else { |
| 672 | performDash(); | 687 | performDash(); |
| 673 | } | 688 | } |
| @@ -815,7 +830,7 @@ void Game::update(size_t frameTime) { | |||
| 815 | switch (signInstructionState) { | 830 | switch (signInstructionState) { |
| 816 | case SignInstructionState::Hidden: { | 831 | case SignInstructionState::Hidden: { |
| 817 | auto [lookX, lookY] = coordInDirection(player_x, player_y, playerAnim.getDirection()); | 832 | auto [lookX, lookY] = coordInDirection(player_x, player_y, playerAnim.getDirection()); |
| 818 | if (map.at(lookX, lookY).sign) { | 833 | if (losing == LoseState::None && map.at(lookX, lookY).sign) { |
| 819 | signInstructionState = SignInstructionState::FadingIn; | 834 | signInstructionState = SignInstructionState::FadingIn; |
| 820 | signFade.start(1000); | 835 | signFade.start(1000); |
| 821 | } | 836 | } |
| @@ -913,3 +928,11 @@ void Game::update(size_t frameTime) { | |||
| 913 | 928 | ||
| 914 | playerAnim.update(frameTime); | 929 | playerAnim.update(frameTime); |
| 915 | } | 930 | } |
| 931 | |||
| 932 | void Game::update(size_t frameTime) { | ||
| 933 | if (sign.signDisplayState != SignInstructionState::Hidden) { | ||
| 934 | sign.update(frameTime, *this); | ||
| 935 | } else { | ||
| 936 | updatePlaying(frameTime); | ||
| 937 | } | ||
| 938 | } | ||
