File: AIAICheats.h

package info (click to toggle)
spring 104.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 47,512 kB
  • sloc: cpp: 391,093; ansic: 79,943; python: 12,356; java: 12,201; awk: 5,889; sh: 1,826; xml: 655; makefile: 486; perl: 405; php: 211; objc: 194; sed: 2
file content (83 lines) | stat: -rw-r--r-- 2,154 bytes parent folder | download | duplicates (7)
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
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */

#ifndef _AI_AI_CHEATS_H
#define _AI_AI_CHEATS_H

#include "IAICheats.h"

struct SSkirmishAICallback;


namespace springLegacyAI {

class CAIAICallback;

/**
 * The AI side wrapper over the C AI interface for IAICheats.
 */
class CAIAICheats : public IAICheats {
public:
	CAIAICheats();
	CAIAICheats(int skirmishAIId, const SSkirmishAICallback* sAICallback,
			CAIAICallback* aiCallback);


	void SetMyHandicap(float handicap);

	void GiveMeMetal(float amount);
	void GiveMeEnergy(float amount);

	int CreateUnit(const char* name, float3 pos);

	const UnitDef* GetUnitDef(int unitid);

	float3 GetUnitPos(int unitid);
	float3 GetUnitVel(int unitid);

	int GetEnemyUnits(int* unitIds, int unitIds_max);
	int GetEnemyUnits(int* unitIds, const float3& pos, float radius,
			int unitIds_max);
	int GetNeutralUnits(int* unitIds, int unitIds_max);
	int GetNeutralUnits(int* unitIds, const float3& pos, float radius,
			int unitIds_max);

	int GetFeatures(int *features, int max);
	int GetFeatures(int *features, int max, const float3& pos, float radius);

	int GetUnitTeam(int unitid);
	int GetUnitAllyTeam(int unitid);
	float GetUnitHealth(int unitid);
	float GetUnitMaxHealth(int unitid);
	float GetUnitPower(int unitid);
	float GetUnitExperience(int unitid);
	bool IsUnitActivated(int unitid);
	bool UnitBeingBuilt(int unitid);
	bool IsUnitNeutral(int unitid);
	bool GetUnitResourceInfo(int unitid, UnitResourceInfo* resourceInfo);
	const CCommandQueue* GetCurrentUnitCommands(int unitid);

	int GetBuildingFacing(int unitid);
	bool IsUnitCloaked(int unitid);
	bool IsUnitParalyzed(int unitid);

	void EnableCheatEvents(bool enable);

	bool GetProperty(int id, int property, void* dst);
	bool GetValue(int id, void* dst);
	int HandleCommand(int commandId, void* data);

private:
	int skirmishAIId;
	const SSkirmishAICallback* sAICallback;
	CAIAICallback* aiCallback;

	/**
	 * Used to temporarily enable cheating for regular callbacks
	 * that require (extra) priviledges.
	 */
	void SetCheatsEnabled(bool enable);
};

} // namespace springLegacyAI

#endif // _AI_AI_CHEATS_H