/* base/spacemine.h This file is part of the Osirion project and is distributed under the terms and conditions of the GNU General Public License version 2 */ #ifndef __INCLUDED_BASE_SPACEMINE_H__ #define __INCLUDED_BASE_SPACEMINE_H__ #include "core/entity.h" #include "base/template.h" #include "base/weapon.h" namespace game { class SpaceMine : public core::EntityDynamic { public: SpaceMine(const Weapon *weapon); virtual ~SpaceMine(); virtual void upkeep(const unsigned long timestamp); virtual void collision(Entity *other); virtual void frame(const unsigned long elapsed); static inline void set_template (const Template *entitytemplate) { spacemine_template = entitytemplate; } /* --- inspectors ------------------------------------------ */ /** * @brief the amount of damage this spacemine inflicts * */ inline const float damage() const { return spacemine_damage; } /** * @brief id of the player who dropped the spacemine * */ inline const int owner_id() const { return spacemine_owner_id; } /* --- mutators -------------------------------------------- */ /** * @brief set the amount of damage this spacemine inflicts * */ inline void set_damage(const float damage) { spacemine_damage = damage; } /** * @brief set the id of the player who dropped the spacemine * */ inline void set_owner_id(const int owner_id) { spacemine_owner_id = owner_id; } private: unsigned long spacemine_detonated_timestamp; float spacemine_damage; int spacemine_owner_id; static const Template *spacemine_template; }; } // namespace game #endif // __INCLUDED_BASE_SPACEMINE_H__