Ich bleib mal an der Stelle einfach bei der variable
m_animMyFirstHud aus dem HalloWelt Tutorial von Crymod.
Geh nun zur Funktion (~line: 1181)
Code:
void CHUD::ModeChanged(ENanoMode mode)
(auch in der HUD.cpp zu finden)
Dort erweiterst du nun die switch / case anweisung wie folgt:
Code:
switch(mode)
{
case NANOMODE_SPEED:
m_animMyFirstHud.Invoke("setPic", 2); //<<-- 1st Pic
m_animPlayerStats.Invoke("setMode", "Speed");
m_fSpeedTimer = gEnv->pTimer->GetFrameStartTime().GetMilliSeconds();
m_fSuitChangeSoundTimer = m_fSpeedTimer;
break;
case NANOMODE_STRENGTH:
m_animMyFirstHud.Invoke("setPic", 3); //<<-- 2th Pic
m_animPlayerStats.Invoke("setMode", "Strength");
m_fStrengthTimer = gEnv->pTimer->GetFrameStartTime().GetMilliSeconds();
m_fSuitChangeSoundTimer = m_fStrengthTimer;
break;
case NANOMODE_DEFENSE:
m_animMyFirstHud.Invoke("setPic", 4); //<<-- 3th Pic
m_animPlayerStats.Invoke("setMode", "Armor");
m_fDefenseTimer = gEnv->pTimer->GetFrameStartTime().GetMilliSeconds();
m_fSuitChangeSoundTimer = m_fDefenseTimer;
break;
case NANOMODE_CLOAK:
m_animMyFirstHud.Invoke("setPic", 5); //<<-- 4th Pic
m_animPlayerStats.Invoke("setMode", "Cloak");
PlaySound(ESound_PresetNavigationBeep);
if(m_pNanoSuit->GetSlotValue(NANOSLOT_ARMOR, true) != 50 || m_pNanoSuit->GetSlotValue(NANOSLOT_SPEED, true) != 50 ||
m_pNanoSuit->GetSlotValue(NANOSLOT_STRENGTH, true) != 50 || m_pNanoSuit->GetSlotValue(NANOSLOT_MEDICAL, true) != 50)
{
TextMessage("suit_modification_engaged");
}
m_fSuitChangeSoundTimer = gEnv->pTimer->GetFrameStartTime().GetMilliSeconds();
if (gEnv->pAISystem)
{
pData = gEnv->pAISystem->CreateSignalExtraData();//AI System will be the owner of this data
pData->iValue = NANOMODE_CLOAK;
pPlayer = static_cast<CPlayer *>(gEnv->pGame->GetIGameFramework()->GetClientActor());
if(pPlayer && pPlayer->GetEntity() && pPlayer->GetEntity()->GetAI())
gEnv->pAISystem->SendSignal(SIGNALFILTER_SENDER,1,"OnNanoSuitMode",pPlayer->GetEntity()->GetAI(),pData);
}
break;
default:
break;
}