Ejemplo n.º 1
0
void Gamefield::onStart(ClientPtr client, PacketPtr packet) {
	auto p = std::dynamic_pointer_cast<StartPacket >(packet);
	String color = mOptions.player.color[rand()%mOptions.player.color.size()];
	printf("Player %s joind the game\n", p->Name.c_str());
	PlayerPtr ply = std::make_shared<Player>(shared_from_this(), client, color, p->Name);
	mPlayer[client->getId()] = ply;
	ply->addBall(createBall(ply));
	ply->updateClient();
	client->emit(std::make_shared<EmptyPacket<PID_Start> >());
}
Ejemplo n.º 2
0
void Gamefield::onJoin(ClientPtr client, PacketPtr packet) {
	//Set Callbacks
	client->on(PID_Leave, std::bind(&Gamefield::onLeave, this, _1, _2));
	client->on(PID_Start, std::bind(&Gamefield::onStart, this, _1, _2));
	client->on(PID_GetStats, std::bind(&Gamefield::onGetStats, this, _1, _2));
	client->setOnDisconnect(std::bind(&Gamefield::onDisconnected, this, _1));
	//Send all elements
	client->emit(std::make_shared<SetElementsPacket>(mElements));
	//Add to update queue
	mClients.push_back(client);

	if(mUpdaterRunning == false)
		startUpdater();
}
Ejemplo n.º 3
0
void Gamefield::onGetStats(ClientPtr client, PacketPtr packet) {
	double timerUpdate = 0;
	double timerCollision = 0;
	double timerOther = 0;
	for(auto it : mFPSControl.timerUpdate)
		timerUpdate += std::chrono::duration_cast<std::chrono::duration<double, std::milli> >(it).count() / mFPSControl.timerUpdate.size();
	for(auto it : mFPSControl.timerCollision)
		timerCollision += std::chrono::duration_cast<std::chrono::duration<double, std::milli> >(it).count() / mFPSControl.timerCollision.size();
	for(auto it : mFPSControl.timerOther)
		timerOther += std::chrono::duration_cast<std::chrono::duration<double, std::milli> >(it).count() / mFPSControl.timerOther.size();

	printf("Timings: Update: %lf Collision: %lf Other: %lf Elements: %ld QuadTreeNodes: %ld\n", timerUpdate, timerCollision, timerOther, mElements.size(), mQuadTree->getChildCount());
	if(client)
		client->emit(std::make_shared<StatsPacket>(timerUpdate, timerCollision, timerOther, (uint32_t)mElements.size(), (uint32_t)mPlayer.size()));
}