コード例 #1
0
void CUIStatsPlayerList::Init(CUIXml& xml_doc, LPCSTR path)
{
	// init window
	CUIXmlInit::InitScrollView	(xml_doc, path, 0, this);
	SetFixedScrollBar			(false);


	m_bStatus_mode				= xml_doc.ReadAttribInt(path,0,"status_mode",0)? true: false;
	m_bSpectator				= xml_doc.ReadAttribInt(path,0,"spectator",0)? true: m_bStatus_mode;
	SetSpectator				(m_bSpectator);

	// init item structure
	int tabsCount				= xml_doc.GetNodesNum(path, 0, "field");
	XML_NODE* tab_node			= xml_doc.NavigateToNode(path,0);
	xml_doc.SetLocalRoot		(tab_node);

	for (int i = 0; i < tabsCount; ++i)
	{
		LPCSTR name 			= xml_doc.ReadAttrib("field",i,"name");
		float width 			= xml_doc.ReadAttribFlt("field",i,"width");

		if (0 == xr_strcmp(name, "artefacts") && GameID() != eGameIDArtefactHunt)
			continue;
		
		AddField				(name,width);
	}
	xml_doc.SetLocalRoot		(xml_doc.GetRoot());
	string256					 _path;
	// init item text params
	CUIXmlInit::InitFont		(xml_doc, strconcat(sizeof(_path),_path, path, ":text_format"), 0, m_i.c, m_i.f);
	m_i.h						= xml_doc.ReadAttribFlt(strconcat(sizeof(_path),_path, path, ":text_format"), 0, "height", 25);

	// init list header
	switch (GameID())
	{
	case eGameIDCaptureTheArtefact:
	case eGameIDArtefactHunt:
	case eGameIDTeamDeathmatch:
		if (!m_bSpectator || m_bStatus_mode)
            InitTeamHeader(xml_doc, path);
	case eGameIDDeathmatch:
		InitHeader(xml_doc, path);
	default:
		break;
	}
}
コード例 #2
0
void DuelSystemClass::WarpRoom(DWORD PlayerID, BYTE Room)
{
	int Gate = 0;
	BOOL isSpectator = 0;
	switch(Room)
	{
		case 0:
		{
			if(Player[0][Room] == PlayerID)
			{
				Gate = 295;
			}else if(Player[1][Room] == PlayerID)
			{
				Gate = 296;
			}else
			{
				Gate = 303;
				isSpectator = 1;
			}
		}break;
		case 1:
		{
			if(Player[0][Room] == PlayerID)
			{
				Gate = 297;
			}else if(Player[1][Room] == PlayerID)
			{
				Gate = 298;
			}else
			{
				Gate = 304;
				isSpectator = 1;
			}
		}break;
		case 2:
		{
			if(Player[0][Room] == PlayerID)
			{
				Gate = 299;
			}else if(Player[1][Room] == PlayerID)
			{
				Gate = 300;
			}else
			{
				Gate = 305;
				isSpectator = 1;
			}
		}break;
		case 3:
		{
			if(Player[0][Room] == PlayerID)
			{
				Gate = 301;
			}else if(Player[1][Room] == PlayerID)
			{
				Gate = 302;
			}else
			{
				Gate = 306;
				isSpectator = 1;
			}
		}break;
		case 0xFF:
		{
			Gate = 294;
		}
	}	

	if((isSpectator == 1) && (DuelRoom[Room] == 1))
	{
		if(SetSpectator(PlayerID,Room) != 0xFF)
		{
			gObjMoveGate_JMP(PlayerID, Gate);
			SetDuelInfo(PlayerID,Room);
		} else {
			GCServerMsgStringSend(MSG18,PlayerID, 0x01);
		}
	} else {
		gObjMoveGate_JMP(PlayerID, Gate);
	}
}
コード例 #3
0
ファイル: GameStats.cpp プロジェクト: amrhead/eaascode
void CGameStats::OnGameplayEvent(IEntity *pEntity, const GameplayEvent &event)
{
/*	for(int i=0;i<gEventNamesNum;++i)
	{
		if(gEventNames[i].key == event.event)
		{
			CryLog("GameStats : Event %s",gEventNames[i].name);
		}
	}*/

	int e_id = pEntity ? (int) pEntity->GetId() : 0;
	switch(event.event)
	{
	case eGE_GameStarted:
		StartGame(event.value!=0);
		break;
	case eGE_GameEnd:
		EndGame(event.value!=0);
		break;
	case eGE_SuddenDeath:
		SuddenDeath(event.value!=0);
		break;
	case eGE_RoundEnd:
		EndRound(event.value!=0, atoi(event.description));
		break;
	case eGE_Renamed:
		SetName(e_id, event.description);
		break;
	case eGE_Scored:
		SetScore(e_id, event.description, (int)event.value);
		break;
	case eGE_Kill:
		OnKill(e_id, (EntityId*)event.extra);
		if(pEntity)
			ProcessPlayerStat(pEntity,event);
		break;
	case eGE_Death:
		OnDeath(e_id, (int)(TRUNCATE_PTR)event.extra);
		if(pEntity)
			ProcessPlayerStat(pEntity,event);
		break;
  case eGE_WeaponShot:
	case eGE_WeaponHit:
	case eGE_SuitModeChanged:
	case eGE_WeaponMelee:
	case eGE_LeftVehicle:
	case eGE_EnteredVehicle:
	case eGE_ItemSelected:
	case eGE_WeaponReload:
	case eGE_Damage:
	case eGE_Revive:
	case eGE_WeaponFireModeChanged:
	case eGE_ZoomedIn:
	case eGE_ZoomedOut:
		if(pEntity)
			ProcessPlayerStat(pEntity,event);
		break;
	case eGE_Connected:
		{
			bool restored = event.value!=0.0f;

			struct SExtraData
			{
					int status[2];
			};

			SExtraData* pExtra = static_cast<SExtraData*>(event.extra);
			NewPlayer(e_id, pExtra->status[0], pExtra->status[1]!=0, restored);
		}
		break;
  case eGE_ChangedTeam:
    SetTeam(e_id,(int)event.value);
    break;
  case eGE_Spectator:
    SetSpectator(e_id,(int)event.value);
		if(pEntity)
			ProcessPlayerStat(pEntity,event);
    break;
	case eGE_Disconnected:
		RemovePlayer(e_id, event.value!=0);
		break;
	case eGE_ScoreReset:
		ResetScore(e_id);
		break;
  case eGE_Rank:
    SetRank(e_id,(int)event.value);
    break;
	case eGE_GameReset:
		GameReset();
		break;
	default:
		break;
	}
}
コード例 #4
0
ファイル: gTeam.cpp プロジェクト: KnIfER/armagetron
 virtual void Enter()
 {
     SetSpectator( player, false );
     player->CreateNewTeamWish();
     menu->Exit();
 }
コード例 #5
0
ファイル: gTeam.cpp プロジェクト: KnIfER/armagetron
 virtual void Enter()
 {
     SetSpectator( player, false );
     player->SetTeamWish( team );
     menu->Exit();
 }