diff --git a/src/render/gui/TowerGui.cpp b/src/render/gui/TowerGui.cpp index f9619f6..c619701 100644 --- a/src/render/gui/TowerGui.cpp +++ b/src/render/gui/TowerGui.cpp @@ -23,7 +23,7 @@ namespace TowerGui{ static GLFWwindow* window; -static td::client::Client client; +static std::unique_ptr client = std::make_unique(); static std::thread* serverThread; bool serverShouldStop = false; @@ -112,7 +112,7 @@ void renderMainMenu(){ ImGui::InputText("Server Adress", buffer, sizeof(buffer)); ImGui::InputInt("Port", &port, -1); if (ImGui::Button("Rejoindre")){ - client.connect(buffer, port); + client->connect(buffer, port); triedToConnect = true; } if (triedToConnect){ @@ -144,7 +144,7 @@ void renderMainMenu(){ triedToCreate = true; } else{ - client.connect("localhost", port); + client->connect("localhost", port); } } if (triedToCreate) @@ -170,8 +170,8 @@ ImVec4 getImGuiTeamColor(td::game::TeamColor color){ } void showPlayers(){ - if (ImGui::TreeNode(std::string("Players (" + std::to_string(client.getGame().getPlayers().size()) + ")##player_list").c_str())){ - for (auto pair : client.getGame().getPlayers()){ + if (ImGui::TreeNode(std::string("Players (" + std::to_string(client->getGame().getPlayers().size()) + ")##player_list").c_str())){ + for (auto pair : client->getGame().getPlayers()){ const td::game::Player& player = pair.second; ImGui::PushStyleColor(ImGuiCol_Text, getImGuiTeamColor(player.getTeamColor())); ImGui::Text(player.getName().c_str()); @@ -182,30 +182,30 @@ void showPlayers(){ } void showTeamSelection(){ - if (client.getGame().getPlayer() == nullptr) + if (client->getGame().getPlayer() == nullptr) return; - td::game::TeamColor playerTeam = client.getGame().getPlayer()->getTeamColor(); + td::game::TeamColor playerTeam = client->getGame().getPlayer()->getTeamColor(); if (ImGui::Button(std::string((playerTeam == td::game::TeamColor::Red ? "Leave" : "Join") + std::string(" Red Team")).c_str())){ if (playerTeam == td::game::TeamColor::Red) - client.selectTeam(td::game::TeamColor::None); + client->selectTeam(td::game::TeamColor::None); else - client.selectTeam(td::game::TeamColor::Red); + client->selectTeam(td::game::TeamColor::Red); } ImGui::SameLine(); if (ImGui::Button(std::string((playerTeam == td::game::TeamColor::Blue ? "Leave" : "Join") + std::string(" Blue Team")).c_str())){ if (playerTeam == td::game::TeamColor::Blue) - client.selectTeam(td::game::TeamColor::None); + client->selectTeam(td::game::TeamColor::None); else - client.selectTeam(td::game::TeamColor::Blue); + client->selectTeam(td::game::TeamColor::Blue); } } void showLobbyProgress(){ - const int timePassed = LOBBY_WAITING_TIME - client.getGame().getLobbyTime(); + const int timePassed = LOBBY_WAITING_TIME - client->getGame().getLobbyTime(); const float progress = (float)timePassed / (float)(LOBBY_WAITING_TIME); - if (progress > 0 && progress < 1 && client.getGame().getPlayers().size() >= 2){ - ImGui::ProgressBar(progress, ImVec2(0.0f, 0.0f), std::string(std::to_string(client.getGame().getLobbyTime() / 1000) + "s").c_str()); + if (progress > 0 && progress < 1 && client->getGame().getPlayers().size() >= 2){ + ImGui::ProgressBar(progress, ImVec2(0.0f, 0.0f), std::string(std::to_string(client->getGame().getLobbyTime() / 1000) + "s").c_str()); ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); ImGui::Text("Time Remaining"); } @@ -215,12 +215,12 @@ void showLobbyProgress(){ } void showTPS(){ - ImGui::Text("Server TPS : %.1f", client.getConnexion().getServerTPS()); - ImGui::Text("Server Ping : %i", client.getConnexion().getServerPing()); + ImGui::Text("Server TPS : %.1f", client->getConnexion().getServerTPS()); + ImGui::Text("Server Ping : %i", client->getConnexion().getServerPing()); } void showStats(){ - ImGui::Text("Gold : %i", client.getGame().getPlayer()->getGold()); + ImGui::Text("Gold : %i", client->getGame().getPlayer()->getGold()); } void renderSummonMenu(){ @@ -267,7 +267,7 @@ void renderSummonMenu(){ } void renderGame(){ - if (client.getGame().getGameState() == td::game::GameState::Lobby){ + if (client->getGame().getGameState() == td::game::GameState::Lobby){ ImGui::Begin("Lobby"); showTPS(); @@ -277,7 +277,7 @@ void renderGame(){ ImGui::End(); } - if (client.getGame().getGameState() == td::game::GameState::Game){ + if (client->getGame().getGameState() == td::game::GameState::Game){ ImGui::Begin("Game"); showTPS(); @@ -294,16 +294,16 @@ void tick(){ std::uint64_t delta = time - lastTime; - client.tick(delta); + client->tick(delta); lastTime = td::utils::getTime(); } void render(){ tick(); - client.render(); + client->render(); beginFrame(); - if (client.isConnected()) + if (client->isConnected()) renderGame(); else renderMainMenu(); @@ -316,7 +316,8 @@ void render(){ } void destroy(){ - client.closeConnection(); + client->closeConnection(); + client.reset(); serverShouldStop = true; if (serverThread != nullptr){ serverThread->join();