#pragma once #ifndef SNAKE_CREDITSSTATE_HXX #define SNAKE_CREDITSSTATE_HXX #include "GameState.hxx" #include "AssetManager.hxx" #include #include struct External final { SDL_Texture* texture_; char const* text_; }; class CreditsState final : public GameState { public: static int constexpr ITEM_PADDING = 80; static int constexpr INNER_ITEM_PADDING = 10; CreditsState(); void on_enter(GameStateManager& gsm) override; void on_event(GameStateManager& gsm, SDL_Event const& event) override; void update(GameStateManager& gsm, std::chrono::milliseconds delta_time) override; void render(SDLRenderer& renderer) override; private: Asset font_; Asset jetbrains_ai_logo_; Asset kenney_logo_; Asset sdl_logo_; Asset boost_logo_; std::vector> scroll_items_{}; double scroll_y_{0.0}; double scroll_size_{0.0}; // this is a hack because we detect being done in render() and use that info in update() bool done_{false}; }; #endif // SNAKE_CREDITSSTATE_HXX