refactor: create gui widget classes
This commit is contained in:
@@ -42,6 +42,7 @@ public:
|
||||
|
||||
void selectTeam(game::TeamColor team);
|
||||
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);
|
||||
};
|
||||
|
||||
|
||||
@@ -38,8 +38,6 @@ public:
|
||||
|
||||
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::PlayerJoinPacket* packet);
|
||||
virtual void HandlePacket(const protocol::PlayerLeavePacket* packet);
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include "game/World.h"
|
||||
|
||||
#include "render/Renderer.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>
|
||||
|
||||
namespace td {
|
||||
@@ -31,6 +37,9 @@ private:
|
||||
float m_CamSensibility = 1;
|
||||
bool m_PopupOpened = false;
|
||||
VertexCache m_TowersCache;
|
||||
|
||||
std::unique_ptr<gui::TowerPlacePopup> m_TowerPlacePopup;
|
||||
std::unique_ptr<gui::MobTooltip> m_MobTooltip;
|
||||
public:
|
||||
WorldRenderer(game::World* world, client::ClientGame* client);
|
||||
~WorldRenderer();
|
||||
@@ -40,6 +49,8 @@ public:
|
||||
void addTower(game::TowerPtr tower);
|
||||
void removeTower(game::TowerPtr tower);
|
||||
|
||||
static ImVec4 getImGuiTeamColor(game::TeamColor color);
|
||||
|
||||
void update();
|
||||
void render();
|
||||
|
||||
@@ -54,10 +65,10 @@ private:
|
||||
void renderMobs() const;
|
||||
void renderTileSelect() const;
|
||||
void renderPopups();
|
||||
void renderTowerPlacePopup();
|
||||
void renderTowerUpgradePopup();
|
||||
void renderMobTooltip() const;
|
||||
void detectClick();
|
||||
void detectMobHovering() const;
|
||||
glm::vec2 getCursorWorldPos() 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
|
||||
Reference in New Issue
Block a user