本文整理汇总了C++中CGameRules::AddGameRulesListener方法的典型用法代码示例。如果您正苦于以下问题:C++ CGameRules::AddGameRulesListener方法的具体用法?C++ CGameRules::AddGameRulesListener怎么用?C++ CGameRules::AddGameRulesListener使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGameRules
的用法示例。
在下文中一共展示了CGameRules::AddGameRulesListener方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GameRulesInitialise
//--------------------------------------------------------------------------------------------------
// Name: GameRulesInitialise
// Desc: Game Rules initialise
//--------------------------------------------------------------------------------------------------
void GameSDKCGameEffectsSystem::GameRulesInitialise()
{
// Add as game rules listener
if(g_pGame)
{
CGameRules* pGameRules = g_pGame->GetGameRules();
if(pGameRules)
{
pGameRules->AddGameRulesListener(this);
}
}
}//-------------------------------------------------------------------------------------------------
示例2: Init
//---------------------------------------
void CMiscAnnouncer::Init()
{
CryLog("CMiscAnnouncer::Init()");
IEntityClassRegistry *pEntityClassRegistry = gEnv->pEntitySystem->GetClassRegistry();
XmlNodeRef xmlData = GetISystem()->LoadXmlFromFile("Scripts/Sounds/MiscAnnouncements.xml");
InitXML(xmlData);
CGameRules *pGameRules = g_pGame->GetGameRules();
pGameRules->RegisterRoundsListener(this);
pGameRules->AddGameRulesListener(this);
g_pGame->GetIGameFramework()->GetIItemSystem()->RegisterListener(this);
}
示例3: ProcessEvent
void ProcessEvent( EFlowEvent event, SActivationInfo *pActInfo )
{
switch (event)
{
case eFE_Initialize:
{
CGameRules* pGameRules = g_pGame->GetGameRules();
if(pGameRules)
pGameRules->AddGameRulesListener(this);
CPlayer* pPlayer = static_cast<CPlayer*>(g_pGame->GetIGameFramework()->GetClientActor());
if(pPlayer)
m_localPlayerSpectatorMode = pPlayer->GetSpectatorMode();
m_actInfo = *pActInfo;
}
break;
case eFE_Activate:
break;
case eFE_Update:
{
CPlayer* pPlayer = static_cast<CPlayer*>(g_pGame->GetIGameFramework()->GetClientActor());
if(!pPlayer)
return;
// first check: tac weapons trigger endgamenear / endgameinvalid
if(m_MDList.empty() && m_endGameNear)
{
// if less than 3 min remaining don't return to normal
bool cancel = true;
if(g_pGame && g_pGame->GetGameRules() && g_pGame->GetGameRules()->IsTimeLimited() && m_timeRemainingTriggered)
{
float timeRemaining = g_pGame->GetGameRules()->GetRemainingGameTime();
if(timeRemaining < GetPortFloat(pActInfo, EIP_GameEndTime) )
cancel = false;
}
if(cancel)
{
if(g_pGame->GetCVars()->i_debug_mp_flowgraph != 0)
{
CryLog("MP flowgraph: EndGameInvalid");
}
ActivateOutput(&m_actInfo, EOP_EndGameInvalid, true);
m_endGameNear = false;
}
}
else if(!m_MDList.empty())
{
// go through the list of tac/sing weapons and check if they are still present
std::list<EntityId>::iterator next;
std::list<EntityId>::iterator it = m_MDList.begin();
for(; it != m_MDList.end(); it = next)
{
next = it; ++next;
if(gEnv->pEntitySystem->GetEntity(*it))
{
// entity exists so trigger loud music if not already done
if(!m_endGameNear)
{
if(g_pGame->GetCVars()->i_debug_mp_flowgraph != 0)
{
CryLog("--MP flowgraph: EndGameNear");
}
ActivateOutput(&m_actInfo, EOP_EndGameNear, true);
m_endGameNear = true;
}
// in the case of tanks, entity isn't removed for quite some time after destruction.
// Check vehicle health directly here...
IVehicle* pVehicle = g_pGame->GetIGameFramework()->GetIVehicleSystem()->GetVehicle(*it);
if(pVehicle && pVehicle->IsDestroyed())
{
m_MDList.erase(it);
}
}
else
{
// entity no longer exists - remove from list.
m_MDList.erase(it);
}
}
}
// get the remaining time from game rules
if(!m_timeRemainingTriggered && g_pGame->GetGameRules() && g_pGame->GetGameRules()->IsTimeLimited() && pPlayer->GetSpectatorMode() == 0 && !m_endGameNear)
{
float timeRemaining = g_pGame->GetGameRules()->GetRemainingGameTime();
if(timeRemaining < GetPortFloat(pActInfo, EIP_GameEndTime) )
{
if(g_pGame->GetCVars()->i_debug_mp_flowgraph != 0)
{
CryLog("--MP flowgraph: EndGameNear");
}
ActivateOutput(&m_actInfo, EOP_EndGameNear, timeRemaining);
m_timeRemainingTriggered = true;
m_endGameNear = true;
}
}
//.........这里部分代码省略.........