#ifndef DAMAGEDISPATCH_HPP #define DAMAGEDISPATCH_HPP #pragma once #define INTERFACE_DamageDispatch(post) \ public: \ virtual void InflictCriticalHit(MWInternalDamageObject& internal_damage_object) ##post \ virtual Scalar TakeDamage(MWInternalDamageObject& internal_damage_object, Scalar damage_taken, Entity__TakeDamageMessage *message) ##post \ virtual void KillAllContainedSubsystems(MWInternalDamageObject& internal_damage_object) ##post #define PURE_DamageDispatch INTERFACE_DamageDispatch(=0;) #define DERIVED_DamageDispatch INTERFACE_DamageDispatch(;) namespace MechWarrior4 { class MWInternalDamageObject; class DamageDispatch { PURE_DamageDispatch; public: static DamageDispatch* GetInstance() { return (m_Instance); } static DamageDispatch* m_Instance; static void SetGlobalInvulnerability(bool fInvulnerable); static bool GetGlobalInvulnerability(); private: static bool m_GlobalInvulnerability; }; }; #endif // DAMAGEDISPATCH_HPP