コード例 #1
0
PBSeatedPlayer::PBSeatedPlayer(QString playerId, QObject *parent)
	:QObject(parent)
{
	setPlayerId(playerId);
	setSittingOut(true);
	setStake(0);
	setSeat(-1);
}
コード例 #2
0
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;
}
コード例 #3
0
ファイル: Client.cpp プロジェクト: southor/planet
	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;
	}