add client
This commit is contained in:
47
src/main.cpp
47
src/main.cpp
@@ -19,6 +19,10 @@
|
||||
#include <server/socket/FakeSocket.h>
|
||||
#include <server/state/GameState.h>
|
||||
|
||||
#include <client/Client.h>
|
||||
#include <client/socket/FakeSocket.h>
|
||||
#include <client/state/GameState.h>
|
||||
|
||||
class WorldApply : public td::protocol::PacketHandler {
|
||||
private:
|
||||
td::game::World& m_World;
|
||||
@@ -102,8 +106,12 @@ int main(int argc, char** argv) {
|
||||
td::game::WorldPtr serverWorld = GetWorld();
|
||||
|
||||
// server
|
||||
auto fakeSocket = std::make_shared<td::server::FakeSocket>();
|
||||
td::server::Server server(fakeSocket);
|
||||
auto serverFakeSocket = std::make_shared<td::server::FakeSocket>();
|
||||
td::server::Server server(serverFakeSocket);
|
||||
|
||||
// client
|
||||
auto clientFakeSocket = td::client::FakeSocket::Connect(serverFakeSocket);
|
||||
td::client::Client client(clientFakeSocket);
|
||||
|
||||
// init GL context
|
||||
td::Display display(1920, 1080, "Tower-Defense 2");
|
||||
@@ -124,33 +132,32 @@ int main(int argc, char** argv) {
|
||||
|
||||
td::sim::ClientSimulation simulation(*clientWorld, td::STEP_TIME);
|
||||
ClientHandler clientHandler(simulation);
|
||||
|
||||
simulation.OnMissingLockSteps.Connect([&fakeSocket](const std::vector<td::StepTime>& a_MissingSteps){
|
||||
fakeSocket->ReceiveFromFakePeer(0, td::protocol::packets::LockStepRequestPacket(a_MissingSteps));
|
||||
});
|
||||
|
||||
// temporary tests
|
||||
display.OnKeyDown.Connect([&fakeSocket](SDL_Keycode key) {
|
||||
if (key == SDLK_A) {
|
||||
fakeSocket->ReceiveFromFakePeer(0, td::protocol::packets::SpawnTroopPacket(td::EntityType::Zombie, 1));
|
||||
} else if (key == SDLK_Z) {
|
||||
fakeSocket->ReceiveFromFakePeer(0, td::protocol::packets::PlaceTowerPacket(td::TowerType::Archer, td::TowerCoords(77, 13)));
|
||||
}
|
||||
});
|
||||
|
||||
// make a fake player join
|
||||
fakeSocket->ConnectFakePeer(0);
|
||||
|
||||
|
||||
// packets from the server to the client
|
||||
fakeSocket->OnSendToFakePeer.Connect([&clientHandler](td::PeerID a_Peer, const td::protocol::PacketBase& a_Packet) {
|
||||
clientFakeSocket->OnReceive.Connect([&clientHandler](const td::protocol::PacketBase& a_Packet) {
|
||||
a_Packet.Dispatch(clientHandler);
|
||||
});
|
||||
|
||||
simulation.OnMissingLockSteps.Connect([&clientFakeSocket](const std::vector<td::StepTime>& a_MissingSteps) {
|
||||
clientFakeSocket->Send(td::protocol::packets::LockStepRequestPacket(a_MissingSteps));
|
||||
});
|
||||
|
||||
// temporary tests
|
||||
display.OnKeyDown.Connect([&clientFakeSocket](SDL_Keycode key) {
|
||||
if (key == SDLK_A) {
|
||||
clientFakeSocket->Send(td::protocol::packets::SpawnTroopPacket(td::EntityType::Zombie, 1));
|
||||
} else if (key == SDLK_Z) {
|
||||
clientFakeSocket->Send(td::protocol::packets::PlaceTowerPacket(td::TowerType::Archer, td::TowerCoords(77, 13)));
|
||||
}
|
||||
});
|
||||
|
||||
server.UpdateState(std::make_shared<td::server::GameState>(serverWorld));
|
||||
client.UpdateState(std::make_shared<td::client::GameState>(clientWorld));
|
||||
|
||||
while (!display.IsCloseRequested()) {
|
||||
display.PollEvents();
|
||||
server.Update();
|
||||
client.Update();
|
||||
float lerp = simulation.Update();
|
||||
renderer.Render(lerp);
|
||||
display.Update();
|
||||
|
||||
Reference in New Issue
Block a user