CreditsState.hxx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #ifndef SNAKE_CREDITSSTATE_HXX
  3. #define SNAKE_CREDITSSTATE_HXX
  4. #include "GameState.hxx"
  5. #include "AssetManager.hxx"
  6. #include <variant>
  7. #include <vector>
  8. struct External final {
  9. SDL_Texture* texture_;
  10. char const* text_;
  11. };
  12. class CreditsState final : public GameState {
  13. public:
  14. static int constexpr ITEM_PADDING = 80;
  15. static int constexpr INNER_ITEM_PADDING = 10;
  16. CreditsState();
  17. void on_enter(GameStateManager& gsm) override;
  18. void on_event(GameStateManager& gsm, SDL_Event const& event) override;
  19. void update(GameStateManager& gsm, std::chrono::milliseconds delta_time) override;
  20. void render(SDLRenderer& renderer) override;
  21. private:
  22. Asset<TTF_Font*> font_;
  23. Asset<SDL_Texture*> jetbrains_ai_logo_;
  24. Asset<SDL_Texture*> kenney_logo_;
  25. Asset<SDL_Texture*> sdl_logo_;
  26. std::vector<std::variant<char const*, External, SDL_Texture*>> scroll_items_{};
  27. double scroll_y_{0.0};
  28. double scroll_size_{0.0};
  29. // this is a hack because we detect being done in render() and use that info in update()
  30. bool done_{false};
  31. };
  32. #endif // SNAKE_CREDITSSTATE_HXX