Beispiel #1
0
void RoomService::onRoomPlayerInfo(int const to, Message *msg)
{
	Account *acc = Core::acc_manager->getAccount(to);
	
	if (acc)
	{
		Room *room = acc->getRoom();
		if (room)
		{
			char state = msg->getAttr<char>("state");
			char specState = msg->getAttr<char>("stateSpec");
			if (state == Player::LEFT && (room->getCurrentPlayer() == 1 || specState == Player::MASTER))
			{
				std::stringstream ss;
				ss << room->getID();
				room->kickAll();
				Core::room_manager->deleteRoom(room->getID());
				Logging::Message lm("Room deleted [id = " + ss.str() + ']', "RoomService", Logging::Message::DEBUG);
				this->_log << lm;
			}
			else
				room->notify(new InternalMessage(new TCPPacket(msg), to));
		}
	}
}