소스 검색

:sparkles: added a simple dummy state, so game doesn't crash when switching to a not-yet-implemented state

Felix Bytow 1 년 전
부모
커밋
8d41f9bc3c
5개의 변경된 파일35개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 0
      CMakeLists.txt
  2. 16 0
      game/DummyState.cxx
  3. 15 0
      game/DummyState.hxx
  4. 1 1
      game/GameStateManager.cxx
  5. 2 0
      game/GameStateManager.hxx

+ 1 - 0
CMakeLists.txt

@@ -35,6 +35,7 @@ add_executable(Snake WIN32
     game/GameStateManager.cxx game/GameStateManager.hxx
     game/LoadingState.cxx game/LoadingState.hxx
     game/SplashState.cxx game/SplashState.hxx
+    game/DummyState.cxx game/DummyState.hxx
     game/AssetManager.cxx game/AssetManager.hxx
 )
 

+ 16 - 0
game/DummyState.cxx

@@ -0,0 +1,16 @@
+#include "DummyState.hxx"
+
+#include "../SDLRenderer.hxx"
+
+void DummyState::update(GameStateManager& gsm, std::chrono::milliseconds delta_time)
+{
+  (void) gsm;
+  (void) delta_time;
+}
+
+void DummyState::render(SDLRenderer& renderer)
+{
+  SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
+  SDL_RenderClear(renderer);
+  SDL_RenderPresent(renderer);
+}

+ 15 - 0
game/DummyState.hxx

@@ -0,0 +1,15 @@
+#pragma once
+
+#ifndef SNAKE_DUMMYSTATE_HXX
+#define SNAKE_DUMMYSTATE_HXX
+
+#include "GameState.hxx"
+
+class DummyState final : public GameState {
+public:
+  void update(GameStateManager& gsm, std::chrono::milliseconds delta_time) override;
+
+  void render(SDLRenderer& renderer) override;
+};
+
+#endif // SNAKE_DUMMYSTATE_HXX

+ 1 - 1
game/GameStateManager.cxx

@@ -20,7 +20,7 @@ GameState* GameStateManager::current()
 
   switch (states_.top()) {
   default:
-    return nullptr; // TODO: handle all game states
+    return &dummy_; // TODO: handle all game states
   case GameStates::Loading:
     return &loading_;
   case GameStates::Splash:

+ 2 - 0
game/GameStateManager.hxx

@@ -5,6 +5,7 @@
 
 #include "LoadingState.hxx"
 #include "SplashState.hxx"
+#include "DummyState.hxx"
 
 #include <stack>
 
@@ -35,6 +36,7 @@ private:
 
   LoadingState loading_;
   SplashState splash_;
+  DummyState dummy_;
 };
 
 #endif // SNAKE_GAMESTATEMANAGER_HXX