refactor: create gui widget classes
This commit is contained in:
@@ -42,6 +42,7 @@ public:
|
|||||||
|
|
||||||
void selectTeam(game::TeamColor team);
|
void selectTeam(game::TeamColor team);
|
||||||
void sendMobs(const std::vector<protocol::MobSend>& mobSends);
|
void sendMobs(const std::vector<protocol::MobSend>& mobSends);
|
||||||
|
void placeTower(game::TowerType type, const glm::vec2& position);
|
||||||
void upgradeTower(game::TowerID tower, game::TowerLevel level);
|
void upgradeTower(game::TowerID tower, game::TowerLevel level);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ public:
|
|||||||
|
|
||||||
render::Renderer* getRenderer() const { return m_Renderer; }
|
render::Renderer* getRenderer() const { return m_Renderer; }
|
||||||
|
|
||||||
void PlaceTower(game::TowerType type, const glm::vec2& position);
|
|
||||||
|
|
||||||
virtual void HandlePacket(const protocol::ConnexionInfoPacket* packet);
|
virtual void HandlePacket(const protocol::ConnexionInfoPacket* packet);
|
||||||
virtual void HandlePacket(const protocol::PlayerJoinPacket* packet);
|
virtual void HandlePacket(const protocol::PlayerJoinPacket* packet);
|
||||||
virtual void HandlePacket(const protocol::PlayerLeavePacket* packet);
|
virtual void HandlePacket(const protocol::PlayerLeavePacket* packet);
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "game/World.h"
|
#include "game/World.h"
|
||||||
|
|
||||||
#include "render/Renderer.h"
|
#include "render/Renderer.h"
|
||||||
#include "render/VertexCache.h"
|
#include "render/VertexCache.h"
|
||||||
|
|
||||||
|
#include "render/gui/TowerPlacePopup.h"
|
||||||
|
#include "render/gui/MobTooltip.h"
|
||||||
|
|
||||||
|
#include "render/gui/imgui/imgui.h"
|
||||||
|
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
@@ -31,6 +37,9 @@ private:
|
|||||||
float m_CamSensibility = 1;
|
float m_CamSensibility = 1;
|
||||||
bool m_PopupOpened = false;
|
bool m_PopupOpened = false;
|
||||||
VertexCache m_TowersCache;
|
VertexCache m_TowersCache;
|
||||||
|
|
||||||
|
std::unique_ptr<gui::TowerPlacePopup> m_TowerPlacePopup;
|
||||||
|
std::unique_ptr<gui::MobTooltip> m_MobTooltip;
|
||||||
public:
|
public:
|
||||||
WorldRenderer(game::World* world, client::ClientGame* client);
|
WorldRenderer(game::World* world, client::ClientGame* client);
|
||||||
~WorldRenderer();
|
~WorldRenderer();
|
||||||
@@ -40,6 +49,8 @@ public:
|
|||||||
void addTower(game::TowerPtr tower);
|
void addTower(game::TowerPtr tower);
|
||||||
void removeTower(game::TowerPtr tower);
|
void removeTower(game::TowerPtr tower);
|
||||||
|
|
||||||
|
static ImVec4 getImGuiTeamColor(game::TeamColor color);
|
||||||
|
|
||||||
void update();
|
void update();
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
@@ -54,10 +65,10 @@ private:
|
|||||||
void renderMobs() const;
|
void renderMobs() const;
|
||||||
void renderTileSelect() const;
|
void renderTileSelect() const;
|
||||||
void renderPopups();
|
void renderPopups();
|
||||||
void renderTowerPlacePopup();
|
|
||||||
void renderTowerUpgradePopup();
|
void renderTowerUpgradePopup();
|
||||||
void renderMobTooltip() const;
|
void renderMobTooltip() const;
|
||||||
void detectClick();
|
void detectClick();
|
||||||
|
void detectMobHovering() const;
|
||||||
glm::vec2 getCursorWorldPos() const;
|
glm::vec2 getCursorWorldPos() const;
|
||||||
glm::vec2 getClickWorldPos() const;
|
glm::vec2 getClickWorldPos() const;
|
||||||
|
|
||||||
|
|||||||
27
include/render/gui/MobTooltip.h
Normal file
27
include/render/gui/MobTooltip.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "GuiWidget.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
|
||||||
|
namespace game {
|
||||||
|
|
||||||
|
class Mob;
|
||||||
|
|
||||||
|
} // namespace game
|
||||||
|
|
||||||
|
namespace gui {
|
||||||
|
|
||||||
|
class MobTooltip : public GuiWidget {
|
||||||
|
private:
|
||||||
|
const game::Mob* m_Mob;
|
||||||
|
public:
|
||||||
|
MobTooltip(client::Client* client);
|
||||||
|
|
||||||
|
virtual void render();
|
||||||
|
|
||||||
|
void setMob(const game::Mob* mob) { m_Mob = mob; }
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gui
|
||||||
|
} // namespace td
|
||||||
22
include/render/gui/TowerPlacePopup.h
Normal file
22
include/render/gui/TowerPlacePopup.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "GuiWidget.h"
|
||||||
|
|
||||||
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace gui {
|
||||||
|
|
||||||
|
class TowerPlacePopup : public GuiWidget {
|
||||||
|
private:
|
||||||
|
glm::vec2 m_ClickWorldPos;
|
||||||
|
public:
|
||||||
|
TowerPlacePopup(client::Client* client);
|
||||||
|
|
||||||
|
virtual void render();
|
||||||
|
|
||||||
|
void setClickPos(const glm::vec2& worldPos);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gui
|
||||||
|
} // namespace td
|
||||||
@@ -54,6 +54,11 @@ void Client::sendMobs(const std::vector<protocol::MobSend>& mobSends){
|
|||||||
m_Connexion.sendPacket(&packet);
|
m_Connexion.sendPacket(&packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Client::placeTower(game::TowerType type, const glm::vec2& position) {
|
||||||
|
protocol::PlaceTowerPacket packet(position.x, position.y, type);
|
||||||
|
m_Connexion.sendPacket(&packet);
|
||||||
|
}
|
||||||
|
|
||||||
void Client::upgradeTower(game::TowerID tower, game::TowerLevel level){
|
void Client::upgradeTower(game::TowerID tower, game::TowerLevel level){
|
||||||
protocol::UpgradeTowerPacket packet(tower, level);
|
protocol::UpgradeTowerPacket packet(tower, level);
|
||||||
m_Connexion.sendPacket(&packet);
|
m_Connexion.sendPacket(&packet);
|
||||||
|
|||||||
@@ -112,11 +112,6 @@ void ClientGame::renderWorld() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientGame::PlaceTower(game::TowerType type, const glm::vec2& position) {
|
|
||||||
protocol::PlaceTowerPacket packet(position.x, position.y, type);
|
|
||||||
m_Client->getConnexion().sendPacket(&packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClientGame::HandlePacket(const protocol::WorldAddTowerPacket* packet) {
|
void ClientGame::HandlePacket(const protocol::WorldAddTowerPacket* packet) {
|
||||||
m_WorldRenderer.addTower(m_WorldClient.placeTowerAt(packet->getTowerID(), packet->getTowerType(), packet->getTowerX(), packet->getTowerY(), packet->getBuilder()));
|
m_WorldRenderer.addTower(m_WorldClient.placeTowerAt(packet->getTowerID(), packet->getTowerType(), packet->getTowerX(), packet->getTowerY(), packet->getBuilder()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
namespace td {
|
namespace td {
|
||||||
namespace render {
|
namespace render {
|
||||||
|
|
||||||
ImVec4 getImGuiTeamColor(td::game::TeamColor color) {
|
ImVec4 WorldRenderer::getImGuiTeamColor(game::TeamColor color) {
|
||||||
switch (color) {
|
switch (color) {
|
||||||
case td::game::TeamColor::None:
|
case td::game::TeamColor::None:
|
||||||
break;
|
break;
|
||||||
@@ -35,6 +35,8 @@ void WorldRenderer::loadModels() {
|
|||||||
WorldRenderer::WorldRenderer(game::World* world, client::ClientGame* client) : m_Client(client), m_Renderer(m_Client->getRenderer()), m_World(world), m_Zoom(0.1) {
|
WorldRenderer::WorldRenderer(game::World* world, client::ClientGame* client) : m_Client(client), m_Renderer(m_Client->getRenderer()), m_World(world), m_Zoom(0.1) {
|
||||||
m_Renderer->setZoom(m_Zoom);
|
m_Renderer->setZoom(m_Zoom);
|
||||||
m_Renderer->setCamMovement({});
|
m_Renderer->setCamMovement({});
|
||||||
|
m_TowerPlacePopup = std::make_unique<gui::TowerPlacePopup>(m_Client->getClient());
|
||||||
|
m_MobTooltip = std::make_unique<gui::MobTooltip>(m_Client->getClient());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldRenderer::updateCursorPos() {
|
void WorldRenderer::updateCursorPos() {
|
||||||
@@ -91,7 +93,7 @@ void WorldRenderer::renderTileSelect() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WorldRenderer::renderPopups() {
|
void WorldRenderer::renderPopups() {
|
||||||
renderTowerPlacePopup();
|
m_TowerPlacePopup->render();
|
||||||
renderTowerUpgradePopup();
|
renderTowerUpgradePopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,6 +136,7 @@ void WorldRenderer::changeZoom(float zoomStep) {
|
|||||||
|
|
||||||
void WorldRenderer::click() {
|
void WorldRenderer::click() {
|
||||||
const game::TowerPtr tower = m_Client->getWorld().getTower(getClickWorldPos());
|
const game::TowerPtr tower = m_Client->getWorld().getTower(getClickWorldPos());
|
||||||
|
m_TowerPlacePopup->setClickPos(getClickWorldPos());
|
||||||
if (tower != nullptr) { // there is a tower here
|
if (tower != nullptr) { // there is a tower here
|
||||||
ImGui::OpenPopup("TowerUpgrade");
|
ImGui::OpenPopup("TowerUpgrade");
|
||||||
} else if (m_Client->getWorld().CanPlaceLittleTower(getClickWorldPos(), m_Client->getPlayer()->getID())) {
|
} else if (m_Client->getWorld().CanPlaceLittleTower(getClickWorldPos(), m_Client->getPlayer()->getID())) {
|
||||||
@@ -146,28 +149,6 @@ void WorldRenderer::setCamPos(float camX, float camY) {
|
|||||||
m_Renderer->setCamPos(m_CamPos);
|
m_Renderer->setCamPos(m_CamPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldRenderer::renderTowerPlacePopup() {
|
|
||||||
if (ImGui::BeginPopup("TowerPlace")) {
|
|
||||||
m_PopupOpened = true;
|
|
||||||
for (int i = 0; i < (int)game::TowerType::TowerCount; i++) {
|
|
||||||
game::TowerType towerType = game::TowerType(i);
|
|
||||||
const game::TowerInfo& towerInfo = game::getTowerInfo(towerType);
|
|
||||||
if (!towerInfo.isBigTower() || (towerInfo.isBigTower() && m_Client->getWorld().CanPlaceBigTower(getClickWorldPos(), m_Client->getPlayer()->getID()))) {
|
|
||||||
if (ImGui::Button(game::getTowerInfo(towerType).getName().c_str())) {
|
|
||||||
m_Client->PlaceTower(towerType, getClickWorldPos());
|
|
||||||
ImGui::CloseCurrentPopup();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (ImGui::IsItemHovered()) {
|
|
||||||
ImGui::SetTooltip(game::getTowerInfo(towerType).getDescription().c_str(), "%s");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ImGui::EndPopup();
|
|
||||||
}
|
|
||||||
m_PopupOpened = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void WorldRenderer::renderTowerUpgradePopup() {
|
void WorldRenderer::renderTowerUpgradePopup() {
|
||||||
if (ImGui::BeginPopup("TowerUpgrade")) {
|
if (ImGui::BeginPopup("TowerUpgrade")) {
|
||||||
m_PopupOpened = true;
|
m_PopupOpened = true;
|
||||||
@@ -243,6 +224,11 @@ void WorldRenderer::detectClick() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WorldRenderer::renderMobTooltip() const {
|
void WorldRenderer::renderMobTooltip() const {
|
||||||
|
detectMobHovering();
|
||||||
|
m_MobTooltip->render();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WorldRenderer::detectMobHovering() const {
|
||||||
glm::vec2 cursorWorldPos = getCursorWorldPos();
|
glm::vec2 cursorWorldPos = getCursorWorldPos();
|
||||||
for (game::MobPtr mob : m_World->getMobList()) {
|
for (game::MobPtr mob : m_World->getMobList()) {
|
||||||
// mob size is currently 1x1 for all mobs
|
// mob size is currently 1x1 for all mobs
|
||||||
@@ -250,30 +236,11 @@ void WorldRenderer::renderMobTooltip() const {
|
|||||||
float mobCenterY = mob->getY();
|
float mobCenterY = mob->getY();
|
||||||
if (cursorWorldPos.x > mobCenterX - 0.5f && cursorWorldPos.x < mobCenterX + 0.5f
|
if (cursorWorldPos.x > mobCenterX - 0.5f && cursorWorldPos.x < mobCenterX + 0.5f
|
||||||
&& cursorWorldPos.y > mobCenterY - 0.5f && cursorWorldPos.y < mobCenterY + 0.5f) {
|
&& cursorWorldPos.y > mobCenterY - 0.5f && cursorWorldPos.y < mobCenterY + 0.5f) {
|
||||||
|
m_MobTooltip->setMob(mob.get());
|
||||||
const game::Player& sender = m_Client->getPlayerById(mob->getSender());
|
return;
|
||||||
|
|
||||||
ImGui::BeginTooltip();
|
|
||||||
ImGui::Text("Sender :");
|
|
||||||
ImGui::SameLine();
|
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text, getImGuiTeamColor(sender.getTeamColor()));
|
|
||||||
ImGui::Text("%s", sender.getName().c_str());
|
|
||||||
ImGui::PopStyleColor();
|
|
||||||
ImGui::Text("Mob HP : %.1f/%i", mob->getHealth(), mob->getStats()->getMaxLife());
|
|
||||||
ImGui::Text("Mob Type : %s", game::MobFactory::getMobName(mob->getType()).c_str());
|
|
||||||
ImGui::Text("Mob Level : %i", mob->getLevel());
|
|
||||||
ImGui::NewLine();
|
|
||||||
ImGui::Text("Mob Stats :");
|
|
||||||
ImGui::Text("\tMax health : %i", mob->getStats()->getMaxLife());
|
|
||||||
ImGui::Text("\tSpeed : %.1f", mob->getStats()->getMovementSpeed());
|
|
||||||
ImGui::Text("\tDamage : %.1f", mob->getStats()->getDamage());
|
|
||||||
ImGui::Text("\tMoney cost : %i", mob->getStats()->getMoneyCost());
|
|
||||||
ImGui::Text("\tEXP cost : %i", mob->getStats()->getExpCost());
|
|
||||||
ImGui::Text("\tEXP reward : %i", mob->getStats()->getExpReward());
|
|
||||||
ImGui::EndTooltip();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
m_MobTooltip->setMob(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldRenderer::addTower(game::TowerPtr tower) {
|
void WorldRenderer::addTower(game::TowerPtr tower) {
|
||||||
|
|||||||
@@ -1,24 +1,14 @@
|
|||||||
#include "render/gui/GameMenu.h"
|
#include "render/gui/GameMenu.h"
|
||||||
#include "render/gui/imgui/imgui.h"
|
#include "render/gui/imgui/imgui.h"
|
||||||
|
|
||||||
|
#include "render/WorldRenderer.h"
|
||||||
|
|
||||||
#include "game/client/Client.h"
|
#include "game/client/Client.h"
|
||||||
#include "game/server/Lobby.h"
|
#include "game/server/Lobby.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
|
||||||
ImVec4 getImGuiTeamColor(td::game::TeamColor color) {
|
|
||||||
switch (color) {
|
|
||||||
case td::game::TeamColor::None:
|
|
||||||
break;
|
|
||||||
case td::game::TeamColor::Red:
|
|
||||||
return ImVec4(1, 0, 0, 1);
|
|
||||||
case td::game::TeamColor::Blue:
|
|
||||||
return ImVec4(0, 0, 1, 1);
|
|
||||||
}
|
|
||||||
return ImVec4(1, 1, 1, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
GameMenu::GameMenu(client::Client* client) : GuiWidget(client), m_SummonMenu(std::make_unique<SummonMenu>(client)) {
|
GameMenu::GameMenu(client::Client* client) : GuiWidget(client), m_SummonMenu(std::make_unique<SummonMenu>(client)) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -51,7 +41,7 @@ void GameMenu::showPlayers() {
|
|||||||
if (ImGui::TreeNode(std::string("Players (" + std::to_string(getClient()->getGame().getPlayers().size()) + ")##player_list").c_str())) {
|
if (ImGui::TreeNode(std::string("Players (" + std::to_string(getClient()->getGame().getPlayers().size()) + ")##player_list").c_str())) {
|
||||||
for (auto pair : getClient()->getGame().getPlayers()) {
|
for (auto pair : getClient()->getGame().getPlayers()) {
|
||||||
const td::game::Player& player = pair.second;
|
const td::game::Player& player = pair.second;
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text, getImGuiTeamColor(player.getTeamColor()));
|
ImGui::PushStyleColor(ImGuiCol_Text, render::WorldRenderer::getImGuiTeamColor(player.getTeamColor()));
|
||||||
ImGui::Text("%s", player.getName().c_str());
|
ImGui::Text("%s", player.getName().c_str());
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
}
|
}
|
||||||
|
|||||||
42
src/render/gui/MobTooltip.cpp
Normal file
42
src/render/gui/MobTooltip.cpp
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#include "render/gui/MobTooltip.h"
|
||||||
|
#include "render/gui/imgui/imgui.h"
|
||||||
|
|
||||||
|
#include "render/WorldRenderer.h"
|
||||||
|
|
||||||
|
#include "game/Mobs.h"
|
||||||
|
|
||||||
|
#include "game/client/Client.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace gui {
|
||||||
|
|
||||||
|
MobTooltip::MobTooltip(client::Client* client) : GuiWidget(client) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void MobTooltip::render() {
|
||||||
|
if(m_Mob == nullptr) return;
|
||||||
|
|
||||||
|
const game::Player& sender = getClient()->getGame().getPlayerById(m_Mob->getSender());
|
||||||
|
ImGui::BeginTooltip();
|
||||||
|
ImGui::Text("Sender :");
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Text, render::WorldRenderer::getImGuiTeamColor(sender.getTeamColor()));
|
||||||
|
ImGui::Text("%s", sender.getName().c_str());
|
||||||
|
ImGui::PopStyleColor();
|
||||||
|
ImGui::Text("Mob HP : %.1f/%i", m_Mob->getHealth(), m_Mob->getStats()->getMaxLife());
|
||||||
|
ImGui::Text("Mob Type : %s", game::MobFactory::getMobName(m_Mob->getType()).c_str());
|
||||||
|
ImGui::Text("Mob Level : %i", m_Mob->getLevel());
|
||||||
|
ImGui::NewLine();
|
||||||
|
ImGui::Text("Mob Stats :");
|
||||||
|
ImGui::Text("\tMax health : %i", m_Mob->getStats()->getMaxLife());
|
||||||
|
ImGui::Text("\tSpeed : %.1f", m_Mob->getStats()->getMovementSpeed());
|
||||||
|
ImGui::Text("\tDamage : %.1f", m_Mob->getStats()->getDamage());
|
||||||
|
ImGui::Text("\tMoney cost : %i", m_Mob->getStats()->getMoneyCost());
|
||||||
|
ImGui::Text("\tEXP cost : %i", m_Mob->getStats()->getExpCost());
|
||||||
|
ImGui::Text("\tEXP reward : %i", m_Mob->getStats()->getExpReward());
|
||||||
|
ImGui::EndTooltip();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace gui
|
||||||
|
} // namespace td
|
||||||
41
src/render/gui/TowerPlacePopup.cpp
Normal file
41
src/render/gui/TowerPlacePopup.cpp
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#include "render/gui/TowerPlacePopup.h"
|
||||||
|
|
||||||
|
#include "render/gui/imgui/imgui.h"
|
||||||
|
|
||||||
|
#include "game/Towers.h"
|
||||||
|
|
||||||
|
#include "game/client/Client.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace gui {
|
||||||
|
|
||||||
|
TowerPlacePopup::TowerPlacePopup(client::Client* client) : GuiWidget(client) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void TowerPlacePopup::render(){
|
||||||
|
if (ImGui::BeginPopup("TowerPlace")) {
|
||||||
|
for (int i = 0; i < (int)game::TowerType::TowerCount; i++) {
|
||||||
|
game::TowerType towerType = game::TowerType(i);
|
||||||
|
const game::TowerInfo& towerInfo = game::getTowerInfo(towerType);
|
||||||
|
if (!towerInfo.isBigTower() || (towerInfo.isBigTower() && getClient()->getGame().getWorld().CanPlaceBigTower(m_ClickWorldPos, getClient()->getGame().getPlayer()->getID()))) {
|
||||||
|
if (ImGui::Button(game::getTowerInfo(towerType).getName().c_str())) {
|
||||||
|
getClient()->placeTower(towerType, m_ClickWorldPos);
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ImGui::IsItemHovered()) {
|
||||||
|
ImGui::SetTooltip(game::getTowerInfo(towerType).getDescription().c_str(), "%s");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::EndPopup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TowerPlacePopup::setClickPos(const glm::vec2& worldPos){
|
||||||
|
m_ClickWorldPos = worldPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace gui
|
||||||
|
} // namespace td
|
||||||
Reference in New Issue
Block a user