Ejemplo n.º 1
0
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"
}
Ejemplo n.º 2
0
//-------------------------------------------------------
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);
    //-----------------------------------------------------------
}
Ejemplo n.º 3
0
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);
}