File: EventClient.h

package info (click to toggle)
spring 0.81.2.1%2Bdfsg1-6
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 28,496 kB
  • ctags: 37,096
  • sloc: cpp: 238,659; ansic: 13,784; java: 12,175; awk: 3,428; python: 1,159; xml: 738; perl: 405; sh: 297; makefile: 267; pascal: 228; objc: 192
file content (162 lines) | stat: -rw-r--r-- 5,572 bytes parent folder | download
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#ifndef EVENT_CLIENT_H
#define EVENT_CLIENT_H
// EventClient.h: interface for the CEventClient class.
//
//////////////////////////////////////////////////////////////////////

#include <string>
#include <vector>
#include <map>

#include "float3.h"

using std::string;
using std::vector;
using std::map;

class CUnit;
class CWeapon;
class CFeature;
class CProjectile;
struct Command;
class CLogSubsystem;


class CEventClient
{
	public:
		enum SpecialTeams {
			NoAccessTeam   = -1,
			AllAccessTeam  = -2,
			MinSpecialTeam = AllAccessTeam
		};

	public:
		inline const std::string& GetName()   const { return name;   }
		inline int                GetOrder()  const { return order;  }
		inline bool               GetSynced() const { return synced; }

		// used by the eventHandler to register
		// call-ins when an EventClient is being added
		virtual bool WantsEvent(const std::string& eventName) { return false; }

		// used by the eventHandler to route certain event types
		virtual int  GetReadAllyTeam() const { return NoAccessTeam; }
		virtual bool GetFullRead()     const { return GetReadAllyTeam() == AllAccessTeam; }
		inline bool CanReadAllyTeam(int allyTeam) {
			return (GetFullRead() || (GetReadAllyTeam() == allyTeam));
		}

	private:
		const std::string name;
		const int         order;
		const bool        synced;

	protected:
		CEventClient(const std::string& name, int order, bool synced);
		virtual ~CEventClient();

	public:
		// Synced events
		virtual void GamePreload();
		virtual void GameStart();
		virtual void GameOver();
		virtual void TeamDied(int teamID);
		virtual void TeamChanged(int teamID);
		virtual void PlayerChanged(int playerID);
		virtual void PlayerRemoved(int playerID, int reason);

		virtual void UnitCreated(const CUnit* unit, const CUnit* builder);
		virtual void UnitFinished(const CUnit* unit);
		virtual void UnitFromFactory(const CUnit* unit, const CUnit* factory,
		                             bool userOrders);
		virtual void UnitDestroyed(const CUnit* unit, const CUnit* attacker);
		virtual void UnitTaken(const CUnit* unit, int newTeam);
		virtual void UnitGiven(const CUnit* unit, int oldTeam);

		virtual void UnitIdle(const CUnit* unit);
		virtual void UnitCommand(const CUnit* unit, const Command& command);
		virtual void UnitCmdDone(const CUnit* unit, int cmdType, int cmdTag);
		virtual void UnitDamaged(const CUnit* unit, const CUnit* attacker,
		                         float damage, int weaponID, bool paralyzer);
		virtual void UnitExperience(const CUnit* unit, float oldExperience);

		virtual void UnitSeismicPing(const CUnit* unit, int allyTeam,
		                             const float3& pos, float strength);
		virtual void UnitEnteredRadar(const CUnit* unit, int allyTeam);
		virtual void UnitEnteredLos(const CUnit* unit, int allyTeam);
		virtual void UnitLeftRadar(const CUnit* unit, int allyTeam);
		virtual void UnitLeftLos(const CUnit* unit, int allyTeam);

		virtual void UnitEnteredWater(const CUnit* unit);
		virtual void UnitEnteredAir(const CUnit* unit);
		virtual void UnitLeftWater(const CUnit* unit);
		virtual void UnitLeftAir(const CUnit* unit);

		virtual void UnitLoaded(const CUnit* unit, const CUnit* transport);
		virtual void UnitUnloaded(const CUnit* unit, const CUnit* transport);

		virtual void UnitCloaked(const CUnit* unit);
		virtual void UnitDecloaked(const CUnit* unit);

		virtual void UnitMoveFailed(const CUnit* unit);

		virtual void FeatureCreated(const CFeature* feature);
		virtual void FeatureDestroyed(const CFeature* feature);

		virtual void ProjectileCreated(const CProjectile* proj);
		virtual void ProjectileDestroyed(const CProjectile* proj);

		virtual void StockpileChanged(const CUnit* unit,
		                              const CWeapon* weapon, int oldCount);

		virtual bool Explosion(int weaponID, const float3& pos, const CUnit* owner);

		// Unsynced events
		virtual void Update();

		virtual bool KeyPress(unsigned short key, bool isRepeat);
		virtual bool KeyRelease(unsigned short key);
		virtual bool MouseMove(int x, int y, int dx, int dy, int button);
		virtual bool MousePress(int x, int y, int button);
		virtual int  MouseRelease(int x, int y, int button); // FIXME - bool / void?
		virtual bool MouseWheel(bool up, float value);
		virtual bool JoystickEvent(const std::string& event, int val1, int val2);
		virtual bool IsAbove(int x, int y);
		virtual std::string GetTooltip(int x, int y);

		virtual bool DefaultCommand(const CUnit* unit, const CFeature* feature, int& cmd);

		virtual bool CommandNotify(const Command& cmd);

		virtual bool AddConsoleLine(const std::string& msg, const CLogSubsystem& subsystem);

		virtual bool GroupChanged(int groupID);

		virtual bool GameSetup(const std::string& state, bool& ready,
		                       const map<int, std::string>& playerStates);

		virtual std::string WorldTooltip(const CUnit* unit,
		                                 const CFeature* feature,
		                                 const float3* groundPos);

		virtual bool MapDrawCmd(int playerID, int type,
		                        const float3* pos0,
		                        const float3* pos1,
		                        const std::string* label);

		virtual void ViewResize();

		virtual void DrawGenesis();
		virtual void DrawWorld();
		virtual void DrawWorldPreUnit();
		virtual void DrawWorldShadow();
		virtual void DrawWorldReflection();
		virtual void DrawWorldRefraction();
		virtual void DrawScreenEffects();
		virtual void DrawScreen();
		virtual void DrawInMiniMap();
};


#endif /* EVENT_CLIENT_H */