/* base/projectile.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_PROJECTILE_H__ #define __INCLUDED_BASE_PROJECTILE_H__ #include "core/entity.h" namespace game { class EntityProjectile : public core::EntityDynamic { public: EntityProjectile(unsigned long lifespan); virtual ~EntityProjectile(); virtual void upkeep(const unsigned long timestamp); virtual void collision(Entity *other); virtual void frame(const unsigned long elapsed); /* --- inspectors ------------------------------------------ */ inline const unsigned long timestamp() const { return projectile_timestamp; } /** * @brief the lifespan of this projectile, in milliseconds * */ inline const unsigned long lifespan() const { return projectile_lifespan; } /** * @brief the amount of damage this projectile inflicts * */ inline const float damage() const { return projectile_damage; } /** * @brief id of the player who fired the projectile * */ inline const int ownerid() const { return projectile_ownerid; } /* --- mutators -------------------------------------------- */ /** * @brief reset physics state * */ virtual void reset(); /** * @brief set the amount of damage this projectile inflicts * */ inline void set_damage(const float damage) { projectile_damage = damage; } /** * @brief set the id of the player who fired the projectile * */ inline void set_ownerid(const int ownerid) { projectile_ownerid = ownerid; } private: unsigned long projectile_timestamp; unsigned long projectile_lifespan; float projectile_damage; int projectile_ownerid; }; } // namespace game #endif // __INCLUDED_BASE_PROJECTILE_H__