-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathstrategyBase.cpp
112 lines (78 loc) · 2.57 KB
/
strategyBase.cpp
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <strategyBase.h>
#include <resizeBuff.h>
class nation {
public:
nation(nationType inNation);
virtual ~nation(void);
void begin(void);
unitSet createSet();
bool attackTerritory(territory* inTrritory,unitSet* attackingForce);
};
nation nations[NUM_NATIONS];
class gameUnit : public linkListObj {
public:
gameUnit(unitType inType,nation* inNation=NULL);
virtual ~gameUnit(void);
virtual float unitCost(void);
virtual float attackValue(void);
virtual float defendValue(void);
virtual medium ourMedium(void);
virtual bool moveUnit(nationType by,territory* from,territory* to);
unitType ourType;
nation* ourNation;
};
class unitSet : public linkList {
public:
unitSet(void);
virtual ~unitSet(void);
void addUnit(gameUnit* unitPtr);
void releaseUnit(gameUnit* unitPtr);
void setMode(bool deploy);
bool moveSet(nationType by,territory* to);
void attack(unitSet* defending);
void defend(unitSet* attacking);
bool deployed;
};
class territory {
public:
territory();
virtual ~territory(void);
void setType(territoryType inType);
virtual void addAdjacent(territory* neighbor);
virtual float storedValue();
virtual float incomeRate();
virtual void addDefenders(unitSet* inDefenders);
virtual void removeDefenders(unitSet* inDefenders);
virtual void addAdjacent(territory* neighbor);
territoryType TType;
unitSet* defendingUnits;
};
// ******************************
// class gameMap {
// ******************************
gameMap::gameMap(int inNumTerritories) {
numTerritories = inNumTerritories;
territoryList = NULL;
resizeBuff(numTerritories*sizeof(territory),&territoryList);
}
gameMap::~gameMap(void) {
resizeBuff(0,&territoryList);
}
void gameMap::setupTerritory(int TerritoryID) {
territory* TPtr;
TPtr = &(territoryList[TerritoryID]);
switch(TerritoryID) {
case 1 :
TPtr->setType(sea);
TPtr->addAdjacent(&territoryList[2]);
TPtr->addAdjacent(&territoryList[3]);
TPtr->addAdjacent(&territoryList[4]);
TPtr->addAdjacent(&territoryList[5]);
}
}
void gameMap::setupTerritories(void) {
if (territoryList) {
for (int i=0;i<numTerritories;i++) {
setupTerritory(i+1); // Array is base zero, maps are base 1.
}
}