Quellcode durchsuchen

:recycle: simplified redundant screen clearing/presenting

Felix Bytow vor 1 Jahr
Ursprung
Commit
8379e8d3b8

+ 0 - 5
game/CreditsState.cxx

@@ -90,9 +90,6 @@ void CreditsState::render(SDLRenderer& renderer)
 {
   TTF_Font* const font = font_;
 
-  SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
-  SDL_RenderClear(renderer);
-
   int window_width = 0, window_height = 0;
   SDL_GetRendererOutputSize(renderer, &window_width, &window_height);
 
@@ -146,6 +143,4 @@ void CreditsState::render(SDLRenderer& renderer)
       y += h+ITEM_PADDING;
     }, item);
   }
-
-  SDL_RenderPresent(renderer);
 }

+ 0 - 5
game/GameOverState.cxx

@@ -89,9 +89,6 @@ void GameOverState::render(SDLRenderer& renderer)
   int width, height;
   SDL_GetRendererOutputSize(renderer, &width, &height);
 
-  SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
-  SDL_RenderClear(renderer);
-
   int base_y;
   auto const& hsm = HighScoreManager::instance();
   if (hsm.has_new_score()) {
@@ -140,6 +137,4 @@ void GameOverState::render(SDLRenderer& renderer)
 
   ok_button_.move((width-ok_button_.get_bounding_box().w)/2, base_y);
   ok_button_.render(renderer);
-
-  SDL_RenderPresent(renderer);
 }

+ 0 - 5
game/HighScoreState.cxx

@@ -48,9 +48,6 @@ void HighScoreState::render(SDLRenderer& renderer)
   SDL_RenderGetViewport(renderer, &viewport);
   int width = viewport.w;
 
-  SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
-  SDL_RenderClear(renderer);
-
   SDL_Color const color = {255, 255, 255, SDL_ALPHA_OPAQUE};
 
   render_heading(renderer, width, color);
@@ -75,8 +72,6 @@ void HighScoreState::render(SDLRenderer& renderer)
     SDL_FreeSurface(surface);
     SDL_DestroyTexture(texture);
   }
-
-  SDL_RenderPresent(renderer);
 }
 
 void HighScoreState::render_heading(SDLRenderer& renderer, int const width, SDL_Color const& color)

+ 0 - 5
game/LoadingState.cxx

@@ -12,9 +12,6 @@ void LoadingState::update(GameStateManager& gsm, std::chrono::milliseconds const
 
 void LoadingState::render(SDLRenderer& renderer)
 {
-  SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
-  SDL_RenderClear(renderer);
-
   static int const BAR_MARGIN = 30;
   static int const BAR_HEIGHT = 50;
 
@@ -48,8 +45,6 @@ void LoadingState::render(SDLRenderer& renderer)
   };
   SDL_SetRenderDrawColor(renderer, 255, 255, 255, SDL_ALPHA_OPAQUE);
   SDL_RenderFillRect(renderer, &progress_rect);
-
-  SDL_RenderPresent(renderer);
 }
 
 void LoadingState::on_enter(GameStateManager& gsm)

+ 1 - 6
game/MenuState.cxx

@@ -127,11 +127,8 @@ void MenuState::render(SDLRenderer& renderer)
   adjust_button_position(credits_button_, x, y += BUTTON_HEIGHT+20);
   adjust_button_position(quit_button_, x, y+BUTTON_HEIGHT+20);
 
-  SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
-  SDL_RenderClear(renderer);
-
   if (game_.has_value()) {
-    game_.value()->render_game(renderer, false);
+    game_.value()->render(renderer);
   }
 
   SDL_SetRenderDrawColor(renderer, 0, 0, 0, 200);
@@ -142,8 +139,6 @@ void MenuState::render(SDLRenderer& renderer)
   high_score_button_.render(renderer);
   credits_button_.render(renderer);
   quit_button_.render(renderer);
-
-  SDL_RenderPresent(renderer);
 }
 
 void MenuState::on_leave()

+ 1 - 14
game/PlayingState.cxx

@@ -224,11 +224,6 @@ void PlayingState::handle_direction_change()
   }
 }
 
-void PlayingState::render(SDLRenderer& renderer)
-{
-  render_game(renderer);
-}
-
 void PlayingState::render_ui(SDLRenderer& renderer, SDL_Rect const& playing_field)
 {
   auto const& tm = TranslationManager::instance();
@@ -359,7 +354,7 @@ bool PlayingState::detect_death(SDL_Point const& position)
   }));
 }
 
-void PlayingState::render_game(SDLRenderer& renderer, bool is_current_state)
+void PlayingState::render(SDLRenderer& renderer)
 {
   int width, height;
   SDL_GetRendererOutputSize(renderer, &width, &height);
@@ -379,15 +374,7 @@ void PlayingState::render_game(SDLRenderer& renderer, bool is_current_state)
   playing_field.x = (width-playing_field.w)/2;
   playing_field.y = 50;
 
-  if (is_current_state) {
-    SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
-    SDL_RenderClear(renderer);
-  }
-
   render_snake(renderer, playing_field);
   render_target(renderer, playing_field);
   render_ui(renderer, playing_field);
-
-  if (is_current_state)
-    SDL_RenderPresent(renderer);
 }

+ 0 - 2
game/PlayingState.hxx

@@ -49,8 +49,6 @@ public:
 
   void render(SDLRenderer& renderer) override;
 
-  void render_game(SDLRenderer& renderer, bool is_current_state = true);
-
 private:
 
   void place_head();

+ 0 - 5
game/SplashState.cxx

@@ -47,9 +47,6 @@ void SplashState::update(GameStateManager& gsm, std::chrono::milliseconds delta_
 
 void SplashState::render(SDLRenderer& renderer)
 {
-  SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
-  SDL_RenderClear(renderer);
-
   if (time_in_state_>=2'000ms && time_in_state_<11'000ms) {
     if (time_in_state_<4'000ms) {
       auto const progress = static_cast<float>(time_in_state_.count()-2'000)/2'000.0f;
@@ -91,8 +88,6 @@ void SplashState::render(SDLRenderer& renderer)
     };
     SDL_RenderCopy(renderer, logo_, nullptr, &logo_rect);
   }
-
-  SDL_RenderPresent(renderer);
 }
 
 void SplashState::on_enter(GameStateManager& gsm)

+ 7 - 1
main.cxx

@@ -49,8 +49,14 @@ void main_loop(SDLWindow& window, SDLRenderer& renderer)
     else
       return;
 
-    if (auto const state = gsm.current(); state!=nullptr)
+    if (auto const state = gsm.current(); state!=nullptr) {
+      SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
+      SDL_RenderClear(renderer);
+
       state->render(renderer);
+
+      SDL_RenderPresent(renderer);
+    }
     else
       return;
   }