diff options
Diffstat (limited to 'src/game/base/faction.h')
-rw-r--r-- | src/game/base/faction.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/game/base/faction.h b/src/game/base/faction.h new file mode 100644 index 0000000..608f7c7 --- /dev/null +++ b/src/game/base/faction.h @@ -0,0 +1,78 @@ +/* + 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 <list> + +#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__ |