/* Starshatter: The Open Source Project Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. AUTHOR: John DiCamillo OVERVIEW ======== One side in a military conflict */ #ifndef Combatant_h #define Combatant_h #include "Types.h" #include "Geometry.h" #include "Text.h" #include "List.h" // +--------------------------------------------------------------------+ class CombatGroup; class Mission; // +--------------------------------------------------------------------+ class Combatant { public: static const char* TYPENAME() { return "Combatant"; } Combatant(const char* com_name, const char* file_name, int iff); Combatant(const char* com_name, CombatGroup* force); ~Combatant(); // operations: // accessors: const char* Name() const { return name; } int GetIFF() const { return iff; } int Score() const { return score; } const char* GetDescription() const { return name; } CombatGroup* GetForce() { return force; } CombatGroup* FindGroup(int type, int id=-1); List& GetTargetList() { return target_list; } List& GetDefendList() { return defend_list; } List& GetMissionList() { return mission_list; } void AddMission(Mission* m); void SetScore(int points) { score = points; } void AddScore(int points) { score += points; } double GetTargetStratFactor(int type); void SetTargetStratFactor(int type, double f); private: Text name; int iff; int score; CombatGroup* force; List target_list; List defend_list; List mission_list; double target_factor[8]; }; #endif // Combatant_h