Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/base/faction.h')
-rw-r--r--src/game/base/faction.h78
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__