#ifndef FACTION_H #define FACTION_H #include #include #include #include "Weak.h" class RadarNet; class Faction : public Object, public Weak { public: static const struct BasicFactions { BasicFactions(); Ptr none, privateer, rogue; Ptr aggressive_faction, neutral_faction; Ptr faction_a, faction_b, faction_c; } basic_factions; enum Attitude { FRIENDLY, NEUTRAL, HOSTILE }; Faction(const char * name=""); ~Faction(); inline void setName(const std::string & name) { this->name = name; } inline const std::string & getName() { return name; } void setDefaultAttitude(Attitude a) { default_attitude = a; } Attitude getDefaultAttitude() { return default_attitude; } void setAttitudeTowards(WeakPtr, Attitude); Attitude getAttitudeTowards(WeakPtr); void setColor(const Vector &); const Vector& getColor(); Ptr getRadarNet(); Faction & operator=(const Faction &); private: std::string name; Attitude default_attitude; std::map, Attitude> attitudes; Vector color; Ptr radarnet; }; #endif