Use +infinity instead of -1 for immediate object destruction

master
krzys-h 2015-08-13 19:46:30 +02:00
parent 275e792a81
commit a644fc107d
3 changed files with 7 additions and 5 deletions

View File

@ -21,6 +21,8 @@
#include "object/object_interface_type.h"
#include <limits>
enum class DamageType
{
Fire = 1, //!< fire damage (AlienSpider or Shooter), burns on destruction
@ -48,7 +50,7 @@ public:
virtual ~CDamageableObject()
{}
//! Damage the object, with the given force. Returns true if the object has been fully destroyed (assuming the object is destroyable, of course). force < 0 => destroy immediately (default), force == 0 => default damage values
// NOTE: You should never assume that after this function exits, the object is destroyed, unless it returns true. Even if you specify force = -1, if may still sometimes decide not to destroy the object.
virtual bool DamageObject(DamageType type, float force = -1.0f) = 0;
//! Damage the object, with the given force. Returns true if the object has been fully destroyed (assuming the object is destroyable, of course). force == infinity => destroy immediately (default), force == 0 => default damage values
// NOTE: You should never assume that after this function exits, the object is destroyed, unless it returns true. Even if you specify force = infinity, if may still sometimes decide not to destroy the object.
virtual bool DamageObject(DamageType type, float force = std::numeric_limits<float>::infinity()) = 0;
};

View File

@ -366,7 +366,7 @@ bool COldObject::DamageObject(DamageType type, float force)
if (Implements(ObjectInterfaceType::Shielded))
{
float magnifyDamage = m_magnifyDamage * m_main->GetGlobalMagnifyDamage();
if (force >= 0)
if (force != std::numeric_limits<float>::infinity())
{
// Calculate the shield lost by the explosion
if ( force == 0.0f ) // use default?

View File

@ -106,7 +106,7 @@ public:
void Simplify() override;
bool DamageObject(DamageType type, float force = -1.0f) override;
bool DamageObject(DamageType type, float force = std::numeric_limits<float>::infinity()) override;
void DestroyObject(DestructionType type) override;
bool EventProcess(const Event& event) override;