/* 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: Weapon(); ~Weapon(); inline bool stackable() const { return weapon_stackable; } inline int level() const { return weapon_level; } inline void set_stackable(bool stackable) { weapon_stackable = stackable; } inline void set_level(const int level) { weapon_level = level; } /* --- 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; }; } // namespace game #endif // __INCLUDED_BASE_WEAPON_H__