From 43f021a9979d0c5c27ac2d4d324ebb7ae53846c7 Mon Sep 17 00:00:00 2001 From: Linus Probert Date: Tue, 21 Aug 2018 16:18:11 +0200 Subject: [PATCH] Created an FPS counter for debug mode - Also moves the "sword pointer" to debug mode only. --- src/main.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 80c5f00..3f23105 100644 --- a/src/main.c +++ b/src/main.c @@ -135,7 +135,6 @@ static Map *gMap = NULL; static RoomMatrix *gRoomMatrix = NULL; static Gui *gGui = NULL; static SkillBar *gSkillBar = NULL; -static Pointer *gPointer = NULL; static Menu *mainMenu = NULL; static Menu *inGameMenu = NULL; static Timer *menuTimer = NULL; @@ -148,6 +147,7 @@ static Sprite *new_artifact_tooltip = NULL; static unsigned int cLevel = 1; static float deltaTime = 1.0; static double renderScale = 1.0; +static Turn currentTurn = PLAYER; static GameState gGameState; static SDL_Rect gameViewport; static SDL_Rect skillBarViewport; @@ -155,9 +155,13 @@ static SDL_Rect bottomGuiViewport; static SDL_Rect statsGuiViewport; static SDL_Rect minimapViewport; static SDL_Rect menuViewport; -static Turn currentTurn = PLAYER; static Input input; +#ifdef DEBUG +static Sprite *fpsSprite = NULL; +static Pointer *gPointer = NULL; +#endif // DEBUG + static SDL_Color C_MENU_DEFAULT = { 255, 255, 0, 255 }; static SDL_Color C_MENU_OUTLINE_DEFAULT = { 0, 0, 0, 255 }; static SDL_Color C_MENU_HOVER = { 255, 0, 0, 255 }; @@ -279,11 +283,20 @@ initGame(void) gGui = gui_create(gCamera); gSkillBar = skillbar_create(gCamera); item_builder_init(gRenderer); +#ifdef DEBUG gPointer = pointer_create(gRenderer); +#endif // DEBUG particle_engine_init(); menuTimer = timer_create(); actiontextbuilder_init(gRenderer); +#ifdef DEBUG + fpsSprite = sprite_create(); + sprite_load_text_texture(fpsSprite, "GUI/SDS_8x8.ttf", 0, 14, 1); + fpsSprite->pos = POS(16, 16); + fpsSprite->fixed = true; +#endif // DEBUG + return true; } @@ -400,6 +413,7 @@ createInGameGameOverMenu(void) { struct MENU_ITEM menu_items[] = { { "NEW GAME", startGame }, + { "HOW TO PLAY", showHowToTooltip }, { "MAIN MENU", goToMainMenu }, { "QUIT", exitGame }, }; @@ -408,7 +422,7 @@ createInGameGameOverMenu(void) menu_destroy(inGameMenu); inGameMenu = NULL; } - createMenu(&inGameMenu, menu_items, 3); + createMenu(&inGameMenu, menu_items, 4); } static void @@ -733,7 +747,10 @@ run_game_render(void) SDL_RenderFillRect(gRenderer, &dimmer); menu_render(inGameMenu, gCamera); } +#ifdef DEBUG + sprite_render(fpsSprite, gCamera); pointer_render(gPointer, gCamera); +#endif // DEBUG SDL_RenderPresent(gRenderer); } @@ -800,7 +817,10 @@ run_menu(void) else if (gGameState == SCORE_SCREEN) screen_render(scoreScreen, gCamera); +#ifdef DEBUG + sprite_render(fpsSprite, gCamera); pointer_render(gPointer, gCamera); +#endif // DEBUG SDL_RenderPresent(gRenderer); } @@ -812,7 +832,16 @@ void run(void) static int currentTime = 0; bool quit = false; - Timer* fpsTimer = timer_create(); + +#ifdef DEBUG + Uint32 frame = 0; + Timer *fpsTime = timer_create(); + Timer *updateTimer = timer_create(); + timer_start(fpsTime); + timer_start(updateTimer); +#endif // DEBUG + + Timer *fpsTimer = timer_create(); while (!quit) { @@ -820,7 +849,9 @@ void run(void) quit = handle_events(); handle_main_input(); +#ifdef DEBUG pointer_handle_input(gPointer, &input); +#endif // DEBUG switch (gGameState) { case PLAYING: @@ -852,9 +883,23 @@ void run(void) currentTime = SDL_GetTicks(); deltaTime = (float) ((currentTime - oldTime) / 1000.0); } +#ifdef DEBUG + frame++; + if (timer_get_ticks(updateTimer) > 1000) { + char buffer[20]; + m_sprintf(buffer, 20, "FPS: %u", frame / (timer_get_ticks(fpsTime) / 1000)); + texture_load_from_text(fpsSprite->textures[0], buffer, C_RED, C_WHITE, gRenderer); + fpsSprite->dim = fpsSprite->textures[0]->dim; + timer_start(updateTimer); + } +#endif // DEBUG } timer_destroy(fpsTimer); +#ifdef DEBUG + timer_destroy(fpsTime); + timer_destroy(updateTimer); +#endif // DEBUG } static @@ -880,7 +925,10 @@ void close(void) roommatrix_destroy(gRoomMatrix); gui_destroy(gGui); skillbar_destroy(gSkillBar); +#ifdef DEBUG pointer_destroy(gPointer); + sprite_destroy(fpsSprite); +#endif // DEBUG actiontextbuilder_close(); item_builder_close(); particle_engine_close();