InfectedSoundEventBase.c
enum EInfectedSoundEventType
{
GENERAL,
}
class InfectedSoundEventBase extends SoundEventBase
{
ZombieBase m_Infected;
void InfectedSoundEventBase()
{
m_Type = EInfectedSoundEventType.GENERAL;
}
void ~InfectedSoundEventBase()
{
if (m_SoundSetCallback) m_SoundSetCallback.Stop();
}
void Init(ZombieBase pInfected)
{
m_Infected = pInfected;
}
void SoftStop()
{
if (m_SoundSetCallback)
{
m_SoundSetCallback.Loop(false);
m_SoundSetCallback = null;
}
}
override void Stop()
{
if (m_SoundSetCallback)
{
m_SoundSetCallback.Stop();
m_SoundSetCallback = null;
}
g_Game.GetCallQueue(CALL_CATEGORY_GAMEPLAY).RemoveByName(this, "PosUpdate");
}
void PosUpdate()
{
if (m_SoundSetCallback)
{
m_SoundSetCallback.SetPosition(m_Infected.GetPosition());
}
}
override bool Play()
{
string soundset_name;
soundset_name = string.Format("%1_%2_SoundSet", m_Infected.ClassName(), m_SoundSetNameRoot);
m_SoundSetCallback = m_Infected.ProcessVoiceFX(soundset_name);
if ( m_SoundSetCallback )
{
g_Game.GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLaterByName(this, "PosUpdate", 0, true);
return true;
}
string error = "[%1] No sound callback for : \'%2\' in state: \'%3\' Please define relevant SoundSet in %4";
#ifdef DEVELOPER
Error(string.Format(error, "ERROR", m_Infected.ClassName(), m_SoundSetNameRoot, "Zombie_SoundSets.hpp"));
#else
PrintToRPT("" + string.Format(error, "WARNING", m_Infected.ClassName(), m_SoundSetNameRoot, "sounds/hpp/config.cpp"));
#endif
return false;
}
}