Implement damage alarm (#916)

Implements part of #320
master
DavivaD 2017-05-22 10:01:36 +01:00 committed by krzys_h
parent cd808ac59f
commit df12f87b47
3 changed files with 23 additions and 3 deletions

View File

@ -109,7 +109,8 @@ const std::unordered_map<std::string, SoundType> SOUND_STRINGS =
{"mushroom", SOUND_MUSHROOM},
{"firep", SOUND_FIREp},
{"explog1", SOUND_EXPLOg1},
{"explog2", SOUND_EXPLOg2}
{"explog2", SOUND_EXPLOg2},
{"alarms", SOUND_ALARMs}
};
} // anonymous namespace

View File

@ -116,6 +116,7 @@ enum SoundType
SOUND_EXPLOg1 = 79, /*!< ShooterBots damaging objects. */
SOUND_EXPLOg2 = 80, /*!< OrgaShooterBots damaging objects. */
SOUND_MOTORd = 81, /*!< Scribbler/ToyBot engine. */
SOUND_ALARMs = 82, /*!< Bot shield alarm. */
SOUND_MAX /** number of items in enum */
};

View File

@ -1484,7 +1484,25 @@ void CObjectInterface::UpdateInterface(float rTime)
if ( pg != nullptr )
{
assert(m_object->Implements(ObjectInterfaceType::Shielded));
pg->SetLevel(dynamic_cast<CShieldedObject*>(m_object)->GetShield());
icon = 3; // orange/gray
float shield = dynamic_cast<CShieldedObject*>(m_object)->GetShield();
if ( shield < 0.4f && shield != 0.0f) // low but not zero?
{
if ( m_lastAlarmTime >= 0.8f ) // blinks?
{
shield = 1.0f;
icon = 2; // red
}
if ( m_lastAlarmTime >= 1.0f )
{
m_sound->Play(SOUND_ALARMs, 0.5f); // beep-beep
m_lastAlarmTime = 0.0f;
}
}
pg->SetLevel(shield);
pg->SetIcon(icon);
}
pg = static_cast< CGauge* >(pw->SearchControl(EVENT_OBJECT_GRANGE));
@ -1494,7 +1512,7 @@ void CObjectInterface::UpdateInterface(float rTime)
icon = 2; // blue/red
range = dynamic_cast<CJetFlyingObject*>(m_object)->GetReactorRange();
if ( range < 0.2f && range != 0.0f && !m_physics->GetLand() )
if ( range < 0.2f && range != 0.0f && !m_physics->GetLand() ) // low but not zero/landed?
{
if ( Math::Mod(m_time, 0.5f) >= 0.2f ) // blinks?
{