blob: 749f552f96d230f169ac0951b28af3ada4373ac7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/* 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<CombatGroup>& GetTargetList() { return target_list; }
List<CombatGroup>& GetDefendList() { return defend_list; }
List<Mission>& 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<CombatGroup> target_list;
List<CombatGroup> defend_list;
List<Mission> mission_list;
double target_factor[8];
};
#endif // Combatant_h
|