1 #pragma once 2 3 class CSpringGame; 4 5 #include "../../TestAI.h" 6 #include "SpringMap.h" 7 #include "SpringUnit.h" 8 #include "SpringUnitType.h" 9 #include "SpringMapFeature.h" 10 11 class CSpringGame : public IGame { 12 public: 13 CSpringGame(springai::OOAICallback* callback); 14 virtual ~CSpringGame(); 15 16 virtual IMap* Map(); 17 18 virtual std::string GameID(); 19 virtual void SendToConsole(std::string message); 20 virtual int Frame(); 21 virtual bool IsPaused(); 22 23 virtual IUnitType* GetTypeByName(std::string typeName); 24 25 virtual const char* ConfigFolderPath(); 26 virtual std::string ReadFile(std::string filename); 27 virtual bool LocatePath(std::string& filename); 28 29 virtual int GetTeamID(); 30 31 virtual bool HasEnemies(); 32 virtual bool HasFriendlies(); 33 virtual std::vector<IUnit*> GetEnemies(); 34 virtual std::vector<IUnit*> GetFriendlies(); 35 virtual std::vector<IUnit*> GetUnits(); 36 37 virtual CSpringUnit* CreateUnit(int id); 38 virtual CSpringUnit* CreateUnit(springai::Unit* unit, bool addToVectors = true); 39 virtual void DestroyUnit(int id); 40 virtual CSpringUnit* GetUnitById(int id); 41 42 virtual IAI* Me(); 43 44 virtual std::string GameName(); 45 46 virtual bool FileExists(std::string filename); 47 48 virtual void AddMarker(Position p,std::string label); 49 50 virtual std::string SendToContent(std::string data); 51 52 53 virtual SResourceData GetResource(int idx); 54 virtual int GetResourceCount(); 55 virtual SResourceData GetResourceByName(std::string name); 56 57 IUnitType* ToIUnitType(springai::UnitDef* def); 58 59 virtual void UpdateUnits(); 60 61 virtual IUnit* getUnitByID( int unit_id ); 62 /*virtual void removeUnit( IUnit* dead_unit );*/ 63 protected: 64 //helper functions to managing unit vectors. 65 //vectors are updated at maximum once per frame. 66 //if unit vectors are required, best call "UpdateUnits" before. 67 virtual void FillUnitVector(std::vector<IUnit*>& target, std::vector<springai::Unit*> source); 68 69 CSpringMap* map; 70 springai::OOAICallback* callback; 71 CTestAI* ai; 72 std::map<std::string,CSpringUnitType*> definitions; 73 springai::DataDirs* datadirs; 74 springai::Economy* economy; 75 std::vector<springai::Resource*> resources; 76 springai::Game* game; 77 std::map<int,CSpringUnit*> aliveUnits; 78 std::vector<IUnit*> friendlyUnits; 79 std::vector<IUnit*> teamUnits; 80 std::vector<IUnit*> enemyUnits; 81 int lastUnitUpdate; 82 }; 83