diff --git a/include/render/gui/FrameMenu.h b/include/render/gui/FrameMenu.h new file mode 100644 index 0000000..4ff62c4 --- /dev/null +++ b/include/render/gui/FrameMenu.h @@ -0,0 +1,16 @@ +#pragma once + +#include "GuiWidget.h" + +namespace td { +namespace gui { + +class FrameMenu : public GuiWidget { +public: + FrameMenu(client::Client* client); + + virtual void render(); +}; + +} // namespace gui +} // namespace td diff --git a/include/render/gui/MainMenu.h b/include/render/gui/MainMenu.h index adf99fc..17b7225 100644 --- a/include/render/gui/MainMenu.h +++ b/include/render/gui/MainMenu.h @@ -2,7 +2,7 @@ #include "GuiWidget.h" -#include "render/gui/imgui/imgui_filebrowser.h" +#include "imgui/imgui_filebrowser.h" #include "game/server/Server.h" diff --git a/src/render/gui/FrameMenu.cpp b/src/render/gui/FrameMenu.cpp new file mode 100644 index 0000000..b30f4d3 --- /dev/null +++ b/src/render/gui/FrameMenu.cpp @@ -0,0 +1,30 @@ +#include "render/gui/FrameMenu.h" +#include "render/gui/imgui/imgui.h" + +#include "game/client/Client.h" + +#include + +namespace td { +namespace gui { + +FrameMenu::FrameMenu(client::Client* client) : GuiWidget(client){ + +} + +void FrameMenu::render() { + ImGui::Begin("FPS Counter"); + ImGui::Text("FPS : %i", (int)ImGui::GetIO().Framerate); + static bool vsync = true; + if (ImGui::Checkbox("V-Sync", &vsync)) { + SDL_GL_SetSwapInterval(vsync); + } + static bool isometric = true; + if (ImGui::Checkbox("Vue Isometrique ?", &isometric)) { + getClient()->getRenderer()->setIsometricView(isometric); + } + ImGui::End(); +} + +} // namespace gui +} // namespace td diff --git a/src/render/gui/TowerGui.cpp b/src/render/gui/TowerGui.cpp index f110434..664d2b1 100644 --- a/src/render/gui/TowerGui.cpp +++ b/src/render/gui/TowerGui.cpp @@ -20,6 +20,7 @@ #include "render/gui/MainMenu.h" #include "render/gui/GameMenu.h" +#include "render/gui/FrameMenu.h" #include #include @@ -29,16 +30,16 @@ namespace TowerGui { static SDL_Window* window; static SDL_GLContext gl_context; static std::unique_ptr client; -static std::thread* serverThread; static td::render::Renderer* renderer; static std::unique_ptr mainMenu; static std::unique_ptr gameMenu; +static std::unique_ptr frameMenu; -bool serverShouldStop = false; void initWidgets(){ mainMenu = std::make_unique(client.get()); gameMenu = std::make_unique(client.get()); + frameMenu = std::make_unique(client.get()); } void init(SDL_Window* sdl_window, SDL_GLContext sdlContext, td::render::Renderer* render) { @@ -69,20 +70,6 @@ void endFrame() { ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); } -void renderFPSCounter() { - ImGui::Begin("FPS Counter"); - ImGui::Text("FPS : %i", (int)ImGui::GetIO().Framerate); - static bool vsync = true; - if (ImGui::Checkbox("V-Sync", &vsync)) { - SDL_GL_SetSwapInterval(vsync); - } - static bool isometric = true; - if (ImGui::Checkbox("Vue Isometrique ?", &isometric)) { - renderer->setIsometricView(isometric); - } - ImGui::End(); -} - void tick() { static std::uint64_t lastTime = td::utils::getTime(); std::uint64_t time = td::utils::getTime(); @@ -104,18 +91,16 @@ void render() { static bool demo_open = false; if (demo_open) ImGui::ShowDemoWindow(&demo_open); - renderFPSCounter(); + frameMenu->render(); endFrame(); } void destroy() { client->closeConnection(); client.reset(); - serverShouldStop = true; - if (serverThread != nullptr) { - serverThread->join(); - delete serverThread; - } + mainMenu.reset(); + gameMenu.reset(); + frameMenu.reset(); ImGui_ImplOpenGL3_Shutdown(); ImGui_ImplSDL2_Shutdown(); ImGui::DestroyContext();