1 #pragma once
2 
3 #include "../interfaces/IMapFeature.h"
4 #include "../interfaces/IUnit.h"
5 #include "../interfaces/IGame.h"
6 
7 class CSpringUnit : public IUnit {
8 public:
9 	CSpringUnit(springai::OOAICallback* callback, springai::Unit* u, IGame* game);
10 	virtual ~CSpringUnit();
11 
12 	virtual int ID();
13 	virtual int Team();
14 	virtual std::string Name();
15 
16 	virtual void SetDead(bool dead=true);
17 	virtual bool IsAlive();
18 	virtual bool IsAlly(int allyTeamId);
19 
20 	virtual bool IsCloaked();
21 
22 	virtual void Forget(); // makes the interface forget about this unit and cleanup
23 	virtual bool Forgotten(); // for interface/debugging use
24 
25 	virtual IUnitType* Type();
26 
27 	virtual bool CanMove();
28 	virtual bool CanDeploy();
29 	virtual bool CanBuild();
30 
31 	virtual bool CanAssistBuilding(IUnit* unit);
32 
33 	virtual bool CanMoveWhenDeployed();
34 	virtual bool CanFireWhenDeployed();
35 	virtual bool CanBuildWhenDeployed();
36 	virtual bool CanBuildWhenNotDeployed();
37 
38 	virtual void Wait(int timeout);
39 
40 	virtual void Stop();
41 	virtual void Move(Position p);
42 	virtual void MoveAndFire(Position p);
43 
44 	virtual bool Build(IUnitType* t);
45 	virtual bool Build(std::string typeName);
46 	virtual bool Build(std::string typeName, Position p);
47 	virtual bool Build(IUnitType* t, Position p);
48 
49 	virtual bool Build(std::string typeName, Position p, int facing);
50 	virtual bool Build(IUnitType* t, Position p, int facing);
51 
52 	virtual bool AreaReclaim(Position p, double radius);
53 	virtual bool Reclaim(IMapFeature* mapFeature);
54 	virtual bool Reclaim(IUnit* unit);
55 	virtual bool Attack(IUnit* unit);
56 	virtual bool Repair(IUnit* unit);
57 
58 
59 	virtual bool MorphInto(IUnitType* t);
60 
61 
62 	virtual Position GetPosition();
63 
64 	virtual float GetHealth();
65 	virtual float GetMaxHealth();
66 
67 	virtual int WeaponCount();
68 
69 	virtual float MaxWeaponsRange();
70 
71 	virtual bool CanBuild(IUnitType* t);
72 	virtual bool IsBeingBuilt();
73 
74 	virtual SResourceTransfer GetResourceUsage(int idx);
75 
76 	virtual void ExecuteCustomCommand(int cmdId, std::vector<float> params_list, short options, int timeOut);
77 
78 protected:
79 
80 	springai::OOAICallback* callback;
81 	springai::Unit* unit;
82 	bool dead;
83 	IGame* game;
84 	springai::UnitDef* def;
85 	std::vector<springai::UnitDef*> buildoptions;
86 };
87