/* base/faction.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_FACTION_H__ #define __INCLUDED_BASE_FACTION_H__ #include #include "math/color.h" #include "core/info.h" namespace game { class Faction : public core::Info { public: Faction(); virtual ~Faction(); /* --- inspectors ------------------------------------------------- */ inline const math::Color & color() const { return faction_color; } inline const math::Color & color_second() const { return faction_color_second; } /* --- actors ----------------------------------------------------- */ /** * @brief apply faction colors to an entity */ void apply(core::Entity *entity) const; /* --- mutators --------------------------------------------------- */ inline void set_color(const math::Color &color) { faction_color.assign(color); } inline void set_color_second(const math::Color &color_second) { faction_color_second.assign(color_second); } /* --- static ----------------------------------------------------- */ /** * @brief initialize Faction infotype and read factions.init */ static bool init(); /** * @brief list available factions */ static void list(); static Faction *find(const std::string & label); private: /* --- attributes ------------------------------------------------- */ math::Color faction_color; math::Color faction_color_second; /* --- static ----------------------------------------------------- */ static core::InfoType *faction_infotype; }; } // namespace game #endif // __INCLUDED_BASE_FACTION_H__