add bots
This commit is contained in:
@@ -26,12 +26,12 @@ namespace td {
|
||||
|
||||
DebugWorldState::DebugWorldState(Display& a_Display) : DisplayState(a_Display) {
|
||||
// server
|
||||
auto serverFakeSocket = std::make_shared<server::FakeSocket>();
|
||||
m_Server = std::make_unique<server::Server>(serverFakeSocket);
|
||||
m_ServerSocket = std::make_shared<server::FakeSocket>();
|
||||
m_Server = std::make_unique<server::Server>(m_ServerSocket);
|
||||
|
||||
// client
|
||||
auto clientFakeSocket = client::FakeSocket::Connect(serverFakeSocket);
|
||||
m_Client = std::make_unique<client::Client>(clientFakeSocket, "Player0");
|
||||
auto clientFakeSocket = client::FakeSocket::Connect(m_ServerSocket);
|
||||
m_Client = std::make_unique<client::Client>(clientFakeSocket);
|
||||
|
||||
// TODO: make it better
|
||||
m_Client->OnStateChange.Connect([this](client::Client::State& a_State) {
|
||||
@@ -41,7 +41,24 @@ DebugWorldState::DebugWorldState(Display& a_Display) : DisplayState(a_Display) {
|
||||
m_Renderer.AddRenderer<render::WorldRenderer>(m_Camera, clientWorld);
|
||||
m_Renderer.AddRenderer<render::EntityRenderer>(m_Camera, clientWorld);
|
||||
m_Renderer.AddRenderer<render::TowerRenderer>(m_Camera, clientWorld);
|
||||
m_Renderer.AddRenderer<render::PlayerListRenderer>(m_Client->GetPlayers());
|
||||
|
||||
auto& list = m_Renderer.AddRenderer<render::PlayerListRenderer>(m_Client->GetPlayers());
|
||||
|
||||
list.OnPlayerCreate.Connect([this]() {
|
||||
auto newSocket = client::FakeSocket::Connect(m_ServerSocket);
|
||||
auto newClient = std::make_unique<client::Client>(newSocket);
|
||||
newClient->ChangeState<client::LoggingState>("Bot");
|
||||
m_FakeClients.push_back(std::move(newClient));
|
||||
});
|
||||
|
||||
list.OnPlayerKick.Connect([this](PlayerID a_Player) {
|
||||
auto it = std::find_if(m_FakeClients.begin(), m_FakeClients.end(), [a_Player](auto& clientPtr){
|
||||
if (!clientPtr->GetId().has_value())
|
||||
return false;
|
||||
return clientPtr->GetId().value() == a_Player;
|
||||
});
|
||||
m_FakeClients.erase(it);
|
||||
});
|
||||
|
||||
// update state
|
||||
m_ClientState = gameState;
|
||||
@@ -50,11 +67,6 @@ DebugWorldState::DebugWorldState(Display& a_Display) : DisplayState(a_Display) {
|
||||
|
||||
m_Client->ChangeState<client::LoggingState>("Player0");
|
||||
|
||||
// client2
|
||||
auto clientFakeSocket2 = client::FakeSocket::Connect(serverFakeSocket);
|
||||
m_Client2 = std::make_unique<client::Client>(clientFakeSocket2, "Player1");
|
||||
m_Client2->ChangeState<client::LoggingState>("Player1");
|
||||
|
||||
// camera
|
||||
m_Camera.SetCamPos({77, 7, 13});
|
||||
m_Camera.UpdatePerspective(m_StateMachine.GetAspectRatio());
|
||||
@@ -73,10 +85,17 @@ void DebugWorldState::OnAspectRatioChange(float a_Ratio) {
|
||||
|
||||
void DebugWorldState::OnKeyDown(SDL_Keycode a_Key) {
|
||||
// temporary tests
|
||||
if (a_Key == SDLK_A) {
|
||||
m_Client->SendPacket(td::protocol::packets::SpawnTroopPacket(td::EntityType::Zombie, 1));
|
||||
} else if (a_Key == SDLK_Z) {
|
||||
m_Client->SendPacket(td::protocol::packets::PlaceTowerPacket(td::TowerType::Archer, td::TowerCoords(77, 13)));
|
||||
switch (a_Key) {
|
||||
case SDLK_A:
|
||||
m_Client->SendPacket(td::protocol::packets::SpawnTroopPacket(td::EntityType::Zombie, 1));
|
||||
break;
|
||||
|
||||
case SDLK_Z:
|
||||
m_Client->SendPacket(td::protocol::packets::PlaceTowerPacket(td::TowerType::Archer, td::TowerCoords(77, 13)));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user