PBSeatedPlayer::PBSeatedPlayer(QString playerId, QObject *parent) :QObject(parent) { setPlayerId(playerId); setSittingOut(true); setStake(0); setSeat(-1); }
Reflectable* DeploymentZoneMetaClass::deserialize(const YAML::Node& in) const { auto deploymentZone = new DeploymentZone(); YAML::Node squareNodes = in["zone_"]; for(auto squareNode : squareNodes) { deploymentZone->addSquare({squareNode["x"].as<int>(), squareNode["y"].as<int>()}); } deploymentZone->setPlayerId(in["playerId"].as<int>()); return deploymentZone; }
bool Client::initConnection() { if (connectionPhase == ClientPhase::SEND_INITCLIENT) { // send init package to server InitClient initClient = InitClient(color); link.pushMessage(initClient, getTimeHandler()->getTime(), static_cast<int>(getStepTick())); link.transmit(); connectionPhase++; } if (connectionPhase == ClientPhase::WAIT_WELCOME_CLIENT) { link.retrieve(getTimeHandler()->getTime()); if (link.hasMessageOnQueue()) { int messageType = link.popMessage(); if (messageType == WELCOME_CLIENT) { WelcomeClient *welcomeClient = link.getPoppedData<WelcomeClient>(); setPlayerId(welcomeClient->playerId); getIdGenerator()->setPlayerId(welcomeClient->playerId); predictionHandler = new PredictionHandler(welcomeClient->playerId, &worldModel); assert(predictionHandler->isConsistent()); connectionPhase++; } else { assert(false); } } } if (connectionPhase == ClientPhase::SYNC_SEND_PING) { // send ping to server with current client time SyncPing syncPing(playerId, getTimeHandler()->getTime()); link.pushMessage(syncPing, getTimeHandler()->getTime(), static_cast<int>(getStepTick())); link.transmit(); connectionPhase++; } if (connectionPhase == ClientPhase::SYNC_GET_PONG) { // get pong pack from server with server time and time when ping was sent link.retrieve(getTimeHandler()->getTime()); if (link.hasMessageOnQueue()) { int messageType = link.popMessage(); if (messageType == SYNC_PONG) { SyncPong *syncPong = link.getPoppedData<SyncPong>(); int clientTime = getTimeHandler()->getTime(); int serverTime = syncPong->time; int pingTime = clientTime - syncPong->pingSendTime; int serverClientDiff = (serverTime + pingTime/2) - clientTime; printf("Adjusting client time with diff: %d\n", serverClientDiff); // Modify client time to match server time getTimeHandler()->incrementTime(serverClientDiff); connectionPhase++; return true; } else { assert(false); } } } return false; }