/*! \brief Called when a player votes for a major race mode. * \param event : Event providing the information. * * Format of the data : * Byte 0 1 5 6 7 8 9 10 11 * --------------------------------------------------------------------- * Size | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | * Data | 4 | priv token | 1 | player id | 1 | laps | 1 | track number (gp) | * --------------------------------------------------------------------- */ void ClientLobbyRoomProtocol::playerLapsVote(Event* event) { const NetworkString &data = event->data(); if (!checkDataSizeAndToken(event, 9)) return; if (!isByteCorrect(event, 5, 1)) return; if (!isByteCorrect(event, 7, 1)) return; m_setup->getRaceConfig()->setPlayerLapsVote(data[6], data[8], data[10]); } // playerLapsVote
/*! \brief Called when a player votes for a track. * \param event : Event providing the information. * * Format of the data : * Byte 0 1 5 6 7 8 N+8 N+9 N+10 * --------------------------------------------------------------------------- * Size | 1 | 4 | 1 | 1 | 1 | N | 1 | 1 | * Data | 4 | priv token | 1 | player id | N | track name | 1 | track number (gp) | * --------------------------------------------------------------------------- */ void ClientLobbyRoomProtocol::playerTrackVote(Event* event) { const NetworkString &data = event->data(); if (!checkDataSizeAndToken(event, 10)) return; if (!isByteCorrect(event, 5, 1)) return; int N = data[7]; std::string track_name = data.getString(8, N); if (!isByteCorrect(event, N+8, 1)) return; m_setup->getRaceConfig()->setPlayerTrackVote(data[6], track_name, data[N+9]); } // playerTrackVote
/*! \brief Called when a player votes for a major race mode. * \param event : Event providing the information. * * Format of the data : * Byte 0 1 5 6 7 8 9 * ----------------------------------------------------- * Size | 1 | 4 | 1 | 1 | 1 | 1 | * Data | 4 | priv token | 1 | laps | 1 | track number (gp) | * ----------------------------------------------------- */ void ServerLobbyRoomProtocol::playerLapsVote(Event* event) { NetworkString &data = event->data(); STKPeer* peer = event->getPeer(); if (!checkDataSizeAndToken(event, 9)) return; if (!isByteCorrect(event, 5, 1)) return; if (!isByteCorrect(event, 7, 1)) return; uint8_t player_id = peer->getPlayerProfile()->getGlobalPlayerId(); m_setup->getRaceConfig()->setPlayerLapsVote(player_id, data[6], data[8]); // Send the vote to everybody (including the sender) data.removeFront(5); // remove the token NetworkString other(2+data.size()); other.ai8(1).ai8(player_id); // add the player id other += data; // add the data sendMessageToPeersChangingToken(LE_VOTE_LAPS, other); } // playerLapsVote
/*! \brief Called when a player votes for a major race mode. * \param event : Event providing the information. * * Format of the data : * Byte 0 1 5 6 7 8 9 * ----------------------------------------------------- * Size | 1 | 4 | 1 | 1 | 1 | 1 | * Data | 4 | priv token | 1 | laps | 1 | track number (gp) | * ----------------------------------------------------- */ void ServerLobbyRoomProtocol::playerLapsVote(Event* event) { NetworkString data = event->data(); STKPeer* peer = *(event->peer); if (!checkDataSizeAndToken(event, 9)) return; if (!isByteCorrect(event, 5, 1)) return; if (!isByteCorrect(event, 7, 1)) return; uint8_t player_id = peer->getPlayerProfile()->race_id; m_setup->getRaceConfig()->setPlayerLapsVote(player_id, data[6], data[8]); // Send the vote to everybody (including the sender) NetworkString other; other.ai8(1).ai8(player_id); // add the player id data.removeFront(5); // remove the token other += data; // add the data NetworkString prefix; prefix.ai8(0xc5); // prefix the token with the ype sendMessageToPeersChangingToken(prefix, other); }
/*! \brief Called when a player votes for a track. * \param event : Event providing the information. * * Format of the data : * Byte 0 1 5 6 N+6 N+7 N+8 * ----------------------------------------------------------- * Size | 1 | 4 | 1 | N | 1 | 1 | * Data | 4 | priv token | N | track name | 1 | track number (gp) | * ----------------------------------------------------------- */ void ServerLobbyRoomProtocol::playerTrackVote(Event* event) { NetworkString &data = event->data(); STKPeer* peer = event->getPeer(); if (!checkDataSizeAndToken(event, 8)) return; std::string track_name; int N = data.decodeString(5, &track_name); if (!isByteCorrect(event, N+5, 1)) return; uint8_t player_id = peer->getPlayerProfile()->getGlobalPlayerId(); m_setup->getRaceConfig()->setPlayerTrackVote(player_id, track_name, data[N+6]); // Send the vote to everybody (including the sender) data.removeFront(5); // remove the token NetworkString other(2+data.size()); other.ai8(1).ai8(player_id); // add the player id other += data; // add the data sendMessageToPeersChangingToken(LE_VOTE_TRACK, other); if(m_setup->getRaceConfig()->getNumTrackVotes()==m_setup->getPlayerCount()) startGame(); } // playerTrackVote