summaryrefslogtreecommitdiffhomepage
path: root/Stars45/CombatEvent.h
blob: 8cc11f475af7b219775a7119c6e3a4250b58cfb7 (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
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
113
114
115
116
117
118
119
120
121
122
/*  Project Starshatter 4.5
	Destroyer Studios LLC
	Copyright © 1997-2004. All Rights Reserved.

	SUBSYSTEM:    Stars.exe
	FILE:         CombatEvent.h
	AUTHOR:       John DiCamillo


	OVERVIEW
	========
	A significant (newsworthy) event in the dynamic campaign.
*/

#ifndef CombatEvent_h
#define CombatEvent_h

#include "Types.h"
#include "Geometry.h"
#include "Bitmap.h"
#include "Text.h"
#include "List.h"

// +--------------------------------------------------------------------+

class Campaign;
class CombatGroup;
class CombatUnit;

// +--------------------------------------------------------------------+

class CombatEvent
{
public:
	static const char* TYPENAME() { return "CombatEvent"; }

	enum EVENT_TYPE {
		ATTACK,
		DEFEND,
		MOVE_TO,
		CAPTURE,
		STRATEGY,

		CAMPAIGN_START,
		STORY,
		CAMPAIGN_END,
		CAMPAIGN_FAIL
	};

	enum EVENT_SOURCE {
		FORCOM,
		TACNET,
		INTEL,
		MAIL,
		NEWS
	};

	CombatEvent(Campaign* c, int type, int time, int team, int source, const char* rgn);

	int operator == (const CombatEvent& u)  const { return this == &u; }

	// accessors/mutators:
	int                  Type()         const { return type;       }
	int                  Time()         const { return time;       }
	int                  GetIFF()       const { return team;       }
	int                  Points()       const { return points;     }
	int                  Source()       const { return source;     }
	Point                Location()     const { return loc;        }
	const char*          Region()       const { return region;     }
	const char*          Title()        const { return title;      }
	const char*          Information()  const { return info;       }
	const char*          Filename()     const { return file;       }
	const char*          ImageFile()    const { return image_file; }
	const char*          SceneFile()    const { return scene_file; }
	Bitmap&              Image()              { return image;      }
	const char*          SourceName()   const;
	const char*          TypeName()     const;
	bool                 Visited()      const { return visited;    }

	void                 SetType(int t)       { type = t;          }
	void                 SetTime(int t)       { time = t;          }
	void                 SetIFF(int t)        { team = t;          }
	void                 SetPoints(int p)     { points = p;        }
	void                 SetSource(int s)     { source = s;        }
	void                 SetLocation(const Point& p) { loc = p;    }
	void                 SetRegion(Text rgn)  { region = rgn;      }
	void                 SetTitle(Text t)     { title = t;         }
	void                 SetInformation(Text t) { info = t;        }
	void                 SetFilename(Text f)  { file = f;          }
	void                 SetImageFile(Text f) { image_file = f;    }
	void                 SetSceneFile(Text f) { scene_file = f;    }
	void                 SetVisited(bool v)   { visited = v;       }

	// operations:
	void                 Load();

	// utilities:
	static int           TypeFromName(const char* n);
	static int           SourceFromName(const char* n);
	static const char*   TypeName(int n);
	static const char*   SourceName(int n);

private:
	Campaign*            campaign;
	int                  type;
	int                  time;
	int                  team;
	int                  points;
	int                  source;
	bool                 visited;
	Point                loc;
	Text                 region;
	Text                 title;
	Text                 info;
	Text                 file;
	Text                 image_file;
	Text                 scene_file;
	Bitmap               image;
};

#endif CombatEvent_h