render playerlist
This commit is contained in:
@@ -19,6 +19,10 @@ class Client : public StateMachine<Client, void, float> {
|
|||||||
|
|
||||||
void SendPacket(const protocol::PacketBase& a_Packet);
|
void SendPacket(const protocol::PacketBase& a_Packet);
|
||||||
|
|
||||||
|
const PlayerManager& GetPlayers() const {
|
||||||
|
return m_Players;
|
||||||
|
}
|
||||||
|
|
||||||
friend class ClientState;
|
friend class ClientState;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,14 @@ class PlayerManager : public protocol::PacketHandler {
|
|||||||
|
|
||||||
PlayerInfo GetPlayer(PlayerID a_Player);
|
PlayerInfo GetPlayer(PlayerID a_Player);
|
||||||
|
|
||||||
|
auto begin() const {
|
||||||
|
return m_Players.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto end() const {
|
||||||
|
return m_Players.end();
|
||||||
|
}
|
||||||
|
|
||||||
virtual void Handle(const protocol::packets::PlayerJoinPacket&) override;
|
virtual void Handle(const protocol::packets::PlayerJoinPacket&) override;
|
||||||
virtual void Handle(const protocol::packets::PlayerListPacket&) override;
|
virtual void Handle(const protocol::packets::PlayerListPacket&) override;
|
||||||
virtual void Handle(const protocol::packets::PlayerLeavePacket&) override;
|
virtual void Handle(const protocol::packets::PlayerLeavePacket&) override;
|
||||||
|
|||||||
@@ -40,9 +40,10 @@ class StateMachine {
|
|||||||
auto* currentState = m_State.get();
|
auto* currentState = m_State.get();
|
||||||
auto newState = std::make_unique<T>(static_cast<TDerived&>(*this), std::forward<Args>(args)...);
|
auto newState = std::make_unique<T>(static_cast<TDerived&>(*this), std::forward<Args>(args)...);
|
||||||
// This allows chaining
|
// This allows chaining
|
||||||
if (m_State.get() == currentState)
|
if (m_State.get() == currentState) {
|
||||||
m_State = std::move(newState);
|
m_State = std::move(newState);
|
||||||
OnStateChange(*m_State);
|
OnStateChange(*m_State);
|
||||||
|
}
|
||||||
return static_cast<T*>(m_State.get());
|
return static_cast<T*>(m_State.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
20
include/td/render/renderer/PlayerListRenderer.h
Normal file
20
include/td/render/renderer/PlayerListRenderer.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <td/render/Renderer.h>
|
||||||
|
#include <client/PlayerManager.h>
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace render {
|
||||||
|
|
||||||
|
class PlayerListRenderer : public BasicRenderer {
|
||||||
|
private:
|
||||||
|
const client::PlayerManager& m_Players;
|
||||||
|
public:
|
||||||
|
virtual void Render(float a_Lerp) override;
|
||||||
|
|
||||||
|
PlayerListRenderer(const client::PlayerManager& a_Players);
|
||||||
|
~PlayerListRenderer() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace render
|
||||||
|
} // namespace td
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
#include <td/game/World.h>
|
#include <td/game/World.h>
|
||||||
#include <td/protocol/packet/Packets.h>
|
#include <td/protocol/packet/Packets.h>
|
||||||
#include <td/render/renderer/EntityRenderer.h>
|
#include <td/render/renderer/EntityRenderer.h>
|
||||||
|
#include <td/render/renderer/PlayerListRenderer.h>
|
||||||
#include <td/render/renderer/TowerRenderer.h>
|
#include <td/render/renderer/TowerRenderer.h>
|
||||||
#include <td/render/renderer/WorldRenderer.h>
|
#include <td/render/renderer/WorldRenderer.h>
|
||||||
|
|
||||||
@@ -40,7 +41,8 @@ DebugWorldState::DebugWorldState(Display& a_Display) : DisplayState(a_Display) {
|
|||||||
m_Renderer.AddRenderer<render::WorldRenderer>(m_Camera, clientWorld);
|
m_Renderer.AddRenderer<render::WorldRenderer>(m_Camera, clientWorld);
|
||||||
m_Renderer.AddRenderer<render::EntityRenderer>(m_Camera, clientWorld);
|
m_Renderer.AddRenderer<render::EntityRenderer>(m_Camera, clientWorld);
|
||||||
m_Renderer.AddRenderer<render::TowerRenderer>(m_Camera, clientWorld);
|
m_Renderer.AddRenderer<render::TowerRenderer>(m_Camera, clientWorld);
|
||||||
|
m_Renderer.AddRenderer<render::PlayerListRenderer>(m_Client->GetPlayers());
|
||||||
|
|
||||||
// update state
|
// update state
|
||||||
m_ClientState = gameState;
|
m_ClientState = gameState;
|
||||||
}
|
}
|
||||||
|
|||||||
21
src/td/render/renderer/PlayerListRenderer.cpp
Normal file
21
src/td/render/renderer/PlayerListRenderer.cpp
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#include <td/render/renderer/PlayerListRenderer.h>
|
||||||
|
|
||||||
|
#include <imgui.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
namespace render {
|
||||||
|
|
||||||
|
void PlayerListRenderer::Render(float a_Lerp) {
|
||||||
|
ImGui::Begin("Players");
|
||||||
|
for (const auto& [id, player] : m_Players) {
|
||||||
|
ImGui::Text("[%i] %s", id, player.m_PlayerName.c_str());
|
||||||
|
}
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerListRenderer::PlayerListRenderer(const client::PlayerManager& a_Players) : m_Players(a_Players) {}
|
||||||
|
|
||||||
|
} // namespace render
|
||||||
|
} // namespace td
|
||||||
Reference in New Issue
Block a user