/* base/weapon.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_WEAPON_H__ #define __INCLUDED_BASE_WEAPON_H__ #include "core/info.h" namespace game { class Weapon : public core::Info { public: enum SubType {Ammo = 0, Cannon = 1, Turret = 2, Mine = 3 }; Weapon(); ~Weapon(); inline SubType subtype() const { return weapon_subtype; } inline bool stackable() const { return weapon_stackable; } inline int level() const { return weapon_level; } void set_stackable(bool stackable); void set_level(const int level); void set_subtype(const SubType subtype); /* --- static registry functions ---------------------------------- */ static Weapon *find(const std::string & label); static bool init(); static void done(); static void list(); static inline const core::InfoType *infotype() { return weapon_infotype; } private: static core::InfoType *weapon_infotype; int weapon_level; bool weapon_stackable; SubType weapon_subtype; }; } // namespace game #endif // __INCLUDED_BASE_WEAPON_H__