void game_sv_TeamDeathmatch::OnFraglimitExceed () { u8 winning_team = (GetTeamScore(0) < GetTeamScore(1))? 1 : 0; OnTeamScore (winning_team, false); m_phase = u16((winning_team)?GAME_PHASE_TEAM2_SCORES:GAME_PHASE_TEAM1_SCORES); switch_Phase (m_phase); OnDelayedRoundEnd( eRoundEnd_FragLimit ); //"FRAG_limit" }
//------------------------------------------------------- void game_sv_TeamDeathmatch::Create (shared_str& options) { inherited::Create (options); switch_Phase(GAME_PHASE_PENDING); game_TeamState td; td.score = 0; td.num_targets = 0; teams.push_back(td); teams.push_back(td); //----------------------------------------------------------- }
void game_cl_GameState::net_import_state (NET_Packet& P) { // Generic P.r_clientID (local_svdpnid); P.r_s32 (m_type); u16 ph; P.r_u16 (ph); if(Phase()!=ph) switch_Phase(ph); P.r_s32 (m_round); P.r_u32 (m_start_time); m_u16VotingEnabled = u16(P.r_u8()); m_bServerControlHits = !!P.r_u8(); m_WeaponUsageStatistic->SetCollectData(!!P.r_u8()); // Players u16 p_count; P.r_u16 (p_count); PLAYERS_MAP players_new; /* players.clear (); */ PLAYERS_MAP_IT I; for (u16 p_it=0; p_it<p_count; ++p_it) { ClientID ID; P.r_clientID (ID); game_PlayerState* IP; I = players.find(ID); if( I!=players.end() ) { IP = I->second; //*********************************************** u16 OldFlags = IP->flags__; u8 OldVote = IP->m_bCurrentVoteAgreed; //----------------------------------------------- IP->net_Import(P); //----------------------------------------------- if (OldFlags != IP->flags__) if (Type() != GAME_SINGLE) OnPlayerFlagsChanged(IP); if (OldVote != IP->m_bCurrentVoteAgreed) OnPlayerVoted(IP); //*********************************************** players_new.insert(mk_pair(ID,IP)); players.erase(I); }else{ IP = createPlayerState(); IP->net_Import (P); if (Type() != GAME_SINGLE) OnPlayerFlagsChanged(IP); players_new.insert(mk_pair(ID,IP)); } if (IP->testFlag(GAME_PLAYER_FLAG_LOCAL) ) local_player = IP; } I = players.begin(); for(;I!=players.end(); ++I) xr_delete(I->second); players.clear(); players = players_new; net_import_GameTime(P); }