//------------------------------------------------------------------------ IMPLEMENT_RMI(CGameRules, ClSetObjectiveStatus) { CHUDMissionObjective *pObjective = SAFE_HUD_FUNC_RET(GetMissionObjectiveSystem().GetMissionObjective(params.name.c_str())); if(pObjective) pObjective->SetStatus((CHUDMissionObjective::HUDMissionStatus)params.status); return true; }
//------------------------------------------------------------------------ IMPLEMENT_RMI(CGameRules, ClSetObjectiveEntity) { CHUDMissionObjective *pObjective = SAFE_HUD_FUNC_RET(GetMissionObjectiveSystem().GetMissionObjective(params.name.c_str())); if(pObjective) pObjective->SetTrackedEntity(params.entityId); return true; }
//------------------------------------------------------------------------ int CScriptBind_HUD::SetObjectiveEntity(IFunctionHandler *pH,const char* pObjectiveID, ScriptHandle entityID) { CHUD *pHUD = g_pGame->GetHUD(); if (!pHUD) return pH->EndFunction(); CHUDMissionObjective* pObj = pHUD->GetMissionObjectiveSystem().GetMissionObjective(pObjectiveID); if (pObj) pObj->SetTrackedEntity((EntityId)entityID.n); else GameWarning("CScriptBind_HUD::Tried to access non existing MissionObjective '%s'", pObjectiveID); return pH->EndFunction(); }
//------------------------------------------------------------------------ int CScriptBind_HUD::GetObjectiveStatus(IFunctionHandler* pH, const char* pObjectiveID) { CHUD *pHUD = g_pGame->GetHUD(); if (!pHUD) return pH->EndFunction(); CHUDMissionObjective* pObj = pHUD->GetMissionObjectiveSystem().GetMissionObjective(pObjectiveID); if (pObj) { return pH->EndFunction(pObj->GetStatus()); } else GameWarning("CScriptBind_HUD::Tried to access non existing MissionObjective '%s'", pObjectiveID); return pH->EndFunction(); }
//------------------------------------------------------------------------ int CScriptBind_HUD::SetObjectiveStatus(IFunctionHandler *pH,const char* pObjectiveID, int status, bool silent) { CHUD *pHUD = g_pGame->GetHUD(); if (!pHUD) return pH->EndFunction(); CHUDMissionObjective* pObj = pHUD->GetMissionObjectiveSystem().GetMissionObjective(pObjectiveID); if (pObj) { pObj->SetSilent(silent); pObj->SetStatus((CHUDMissionObjective::HUDMissionStatus)status); } else GameWarning("CScriptBind_HUD::Tried to access non existing MissionObjective '%s'", pObjectiveID); return pH->EndFunction(); }
void CHUDMissionObjectiveSystem::StopObjectiveAnalysis(const bool bSignalResultingObjective) { if (!m_currentAnalysis.empty()) { CHUDMissionObjective* pMissionObjective = GetMissionObjective(m_currentAnalysis); // May not be one if only showing UI screen anims without actual objectives for world anims if (pMissionObjective) { pMissionObjective->SetStatus(CHUDMissionObjective::ACTIVATED); } SHUDEvent hudEvent(eHUDEvent_OnObjectiveAnalysis); hudEvent.AddData(SHUDEventData(eOAE_Stop)); CHUDEventDispatcher::CallEvent(hudEvent); m_currentAnalysis = ""; } }
virtual void OnHUDEvent(const SHUDEvent& event) { // Since I only handle OnObjectiveChanged I only expect a void pointer and a boolean, fail in other cases. CHUDMissionObjective* pMissionObjective = NULL; bool bIsSilent = false; if(event.eventType == eHUDEvent_OnObjectiveChanged) { for(unsigned int i = 0; i < event.GetDataSize(); i++) { switch(event.GetData(i).m_type) { case SHUDEventData::eSEDT_voidptr: pMissionObjective = (CHUDMissionObjective*)event.GetData(i).GetPtr(); break; case SHUDEventData::eSEDT_bool: bIsSilent = event.GetData(i).GetBool(); break; case SHUDEventData::eSEDT_int: // not necessary now break; case SHUDEventData::eSEDT_float: // not necessary now break; case SHUDEventData::eSEDT_undef: default: CryWarning(VALIDATOR_MODULE_FLOWGRAPH, VALIDATOR_WARNING, "[CFlowNode_MissionStateListener] HudEvent data unknown."); break; } } if(pMissionObjective && !bIsSilent) { // activate outputport ActivateOutput(&m_pActInfo, eOP_StateChanged, 1); ActivateOutput<string>(&m_pActInfo, !pMissionObjective->IsSecondary() ? eOP_NamePrimary : eOP_NameSecondary, string(pMissionObjective->GetShortDescription())); ActivateOutput<string>(&m_pActInfo, !pMissionObjective->IsSecondary() ? eOP_DescPrimary : eOP_DescSecondary, string(pMissionObjective->GetMessage())); ActivateOutput<int>(&m_pActInfo, eOP_State, pMissionObjective->GetStatus()); ActivateOutput<bool>(&m_pActInfo, eOP_IsSecondary, pMissionObjective->IsSecondary()); } } }