server state test
This commit is contained in:
14
src/main.cpp
14
src/main.cpp
@@ -15,6 +15,10 @@
|
||||
#include <sp/io/MessageStream.h>
|
||||
#include <sp/io/StdIo.h>
|
||||
|
||||
#include <server/Server.h>
|
||||
#include <server/socket/TcpSocket.h>
|
||||
#include <server/state/LobbyState.h>
|
||||
|
||||
class WorldApply : public td::protocol::PacketHandler {
|
||||
private:
|
||||
td::game::World& m_World;
|
||||
@@ -92,7 +96,6 @@ td::sim::GameHistory GetCustomHistory() {
|
||||
return gh;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
td::game::World w = GetWorld();
|
||||
|
||||
@@ -128,6 +131,15 @@ int main(int argc, char** argv) {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// server
|
||||
auto socket = std::make_shared<td::server::TcpSocket>();
|
||||
td::server::Server server(socket);
|
||||
server.UpdateState(std::make_shared<td::server::LobbyState>());
|
||||
server.Update(1.0f);
|
||||
server.Update(1.0f);
|
||||
socket->OnDisconnect(0);
|
||||
|
||||
while (!display.IsCloseRequested()) {
|
||||
display.PollEvents();
|
||||
float lerp = simulation.Update();
|
||||
|
||||
@@ -4,21 +4,26 @@
|
||||
namespace td {
|
||||
namespace server {
|
||||
|
||||
IServerState::IServerState(IServerSocket& a_Socket) : m_Socket(a_Socket) {
|
||||
// TODO: don't do it like this
|
||||
m_Socket.OnConnect.Connect([this](PlayerID a_Player){
|
||||
OnPlayerJoin(a_Player);
|
||||
});
|
||||
m_Socket.OnDisconnect.Connect([this](PlayerID a_Player){
|
||||
OnPlayerLeave(a_Player);
|
||||
});
|
||||
m_Socket.OnReceive.Connect([this](PlayerID a_Player, const protocol::PacketBase& a_Packet){
|
||||
HandlePacket(a_Player, a_Packet);
|
||||
});
|
||||
void IServerState::SetServer(Server* a_Server) {
|
||||
assert(a_Server);
|
||||
m_Server = a_Server;
|
||||
m_Server->m_Socket->OnConnect.Connect(std::bind(&IServerState::OnPlayerJoin, this, std::placeholders::_1));
|
||||
m_Server->m_Socket->OnDisconnect.Connect(std::bind(&IServerState::OnPlayerLeave, this, std::placeholders::_1));
|
||||
m_Server->m_Socket->OnReceive.Connect(std::bind(&IServerState::HandlePacket, this, std::placeholders::_1, std::placeholders::_2));
|
||||
}
|
||||
|
||||
IServerState::IServerState() : m_Server(nullptr) {}
|
||||
|
||||
IServerState::~IServerState() {
|
||||
if (!m_Server)
|
||||
return;
|
||||
m_Server->m_Socket->OnConnect.Disconnect(std::bind(&IServerState::OnPlayerJoin, this, std::placeholders::_1));
|
||||
m_Server->m_Socket->OnDisconnect.Disconnect(std::bind(&IServerState::OnPlayerLeave, this, std::placeholders::_1));
|
||||
m_Server->m_Socket->OnReceive.Disconnect(std::bind(&IServerState::HandlePacket, this, std::placeholders::_1, std::placeholders::_2));
|
||||
}
|
||||
|
||||
void IServerState::SendPacket(PlayerID a_Id, const protocol::PacketBase& a_Packet) {
|
||||
m_Socket.Send(a_Id, a_Packet);
|
||||
m_Server->m_Socket->Send(a_Id, a_Packet);
|
||||
}
|
||||
|
||||
void IServerState::SetNewState(const std::shared_ptr<IServerState>& a_NewState) {
|
||||
|
||||
8
src/server/socket/TcpSocket.cpp
Normal file
8
src/server/socket/TcpSocket.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
#include <server/socket/TcpSocket.h>
|
||||
|
||||
namespace td {
|
||||
namespace server {
|
||||
|
||||
|
||||
} // namespace server
|
||||
} // namespace td
|
||||
25
src/server/state/GameState.cpp
Normal file
25
src/server/state/GameState.cpp
Normal file
@@ -0,0 +1,25 @@
|
||||
#include <server/state/GameState.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace td {
|
||||
namespace server {
|
||||
|
||||
void GameState::HandlePacket(PlayerID a_Id, const protocol::PacketBase& a_Packet) {
|
||||
|
||||
}
|
||||
|
||||
void GameState::Update(float a_Delta) {
|
||||
|
||||
}
|
||||
|
||||
void GameState::OnPlayerJoin(PlayerID a_Id) {
|
||||
|
||||
}
|
||||
|
||||
void GameState::OnPlayerLeave(PlayerID a_Id) {
|
||||
std::cout << "Game leave !" << std::endl;
|
||||
}
|
||||
|
||||
} // namespace server
|
||||
} // namespace td
|
||||
26
src/server/state/LobbyState.cpp
Normal file
26
src/server/state/LobbyState.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <server/state/LobbyState.h>
|
||||
#include <server/state/GameState.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace td {
|
||||
namespace server {
|
||||
|
||||
void LobbyState::HandlePacket(PlayerID a_Id, const protocol::PacketBase& a_Packet) {
|
||||
|
||||
}
|
||||
|
||||
void LobbyState::Update(float a_Delta) {
|
||||
SetNewState(std::make_shared<GameState>());
|
||||
}
|
||||
|
||||
void LobbyState::OnPlayerJoin(PlayerID a_Id) {
|
||||
|
||||
}
|
||||
|
||||
void LobbyState::OnPlayerLeave(PlayerID a_Id) {
|
||||
std::cout << "Lobby leave !" << std::endl;
|
||||
}
|
||||
|
||||
} // namespace server
|
||||
} // namespace td
|
||||
Reference in New Issue
Block a user