public EnemySelector(double maxenemyspeed, bool WaterOk, bool BadTerrainOk) { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); // csai.EnemyEntersLOSEvent += new CSAI.EnemyEntersLOSHandler( EnemyEntersLOS ); enemycontroller = EnemyController.GetInstance(); unitdefhelp = new UnitDefHelp(aicallback); this.maxenemyspeed = maxenemyspeed; this.WaterOk = WaterOk; this.BadTerrainOk = BadTerrainOk; }
Ownership() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); csai.UnitCreatedEvent += new CSAI.UnitCreatedHandler(csai_UnitCreatedEvent); csai.UnitDestroyedEvent += new CSAI.UnitDestroyedHandler(csai_UnitDestroyedEvent); csai.UnitFinishedEvent += new CSAI.UnitFinishedHandler(csai_UnitFinishedEvent); if (csai.DebugOn) { csai.RegisterVoiceCommand("dumpownership", new CSAI.VoiceCommandHandler(DumpOwnership)); } }
// do we need this??? handled by specific controllers??? //IntArrayList commanders = new IntArrayList(); //IntArrayList constructors = new IntArrayList(); //IntArrayList metalcollectors = new IntArrayList(); //IntArrayList energycollectors = new IntArrayList(); //IntArrayList groundattack = new IntArrayList(); UnitController() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); unitdefhelp = new UnitDefHelp(aicallback); csai.UnitFinishedEvent += new CSAI.UnitFinishedHandler(this.NewUnitFinished); csai.UnitDestroyedEvent += new CSAI.UnitDestroyedHandler(this.UnitDestroyed); csai.RegisterVoiceCommand("killallfriendly", new CSAI.VoiceCommandHandler(this.VoiceCommandKillAllFriendly)); csai.RegisterVoiceCommand("countunits", new CSAI.VoiceCommandHandler(this.VoiceCommandCountUnits)); logfile.WriteLine("*UnitController initialized*"); }
// int terrainwidth; // int terrainheight; public ScoutControllerRaider() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); random = new Random(); unitcontroller = UnitController.GetInstance(); // buildtable = BuildTable.GetInstance(); enemycontroller = EnemyController.GetInstance(); searchcoordinator = new SpreadSearchPackCoordinatorWithSearchGrid(ScoutUnitDefsById); logfile.WriteLine("*ScoutControllerRaider initialized*"); }
// can pass in pointer to a hashtable in another class if we want // ie other class can directly modify our hashtable public SpreadSearchPackCoordinatorWithSearchGrid(Hashtable UnitDefListByDeployedId) { this.UnitDefListByDeployedId = UnitDefListByDeployedId; csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); mapwidth = aicallback.GetMapWidth(); mapheight = aicallback.GetMapHeight(); debugon = csai.DebugOn; csai.TickEvent += new CSAI.TickHandler(this.Tick); csai.UnitIdleEvent += new CSAI.UnitIdleHandler(UnitIdle); }
} // Singleton pattern Metal() // protected constructor to force Singleton instantiation { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); unitcontroller = UnitController.GetInstance(); unitdefhelp = new UnitDefHelp(aicallback); ExtractorRadius = aicallback.GetExtractorRadius(); unitcontroller.UnitAddedEvent += new UnitController.UnitAddedHandler(UnitAdded); unitcontroller.UnitRemovedEvent += new UnitController.UnitRemovedHandler(UnitRemoved); csai.RegisterVoiceCommand("showmetalspots", new CSAI.VoiceCommandHandler(this.DrawMetalSpotsCommand)); }
BuildMap() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); unitdefhelp = new UnitDefHelp(aicallback); unitcontroller = UnitController.GetInstance(); csai.UnitCreatedEvent += new CSAI.UnitCreatedHandler(UnitCreated); csai.UnitDestroyedEvent += new CSAI.UnitDestroyedHandler(UnitDestroyed); unitcontroller.UnitAddedEvent += new UnitController.UnitAddedHandler(UnitCreated); Init(); }
FriendlyUnitPositionObserver() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); //csai.UnitFinishedEvent += new CSAI.UnitFinishedHandler( this.NewUnitFinished ); //csai.UnitDestroyedEvent += new CSAI.UnitDestroyedHandler( this.UnitDestroyed ); csai.TickEvent += new CSAI.TickHandler(Tick); unitcontroller = UnitController.GetInstance(); unitcontroller.UnitAddedEvent += new UnitController.UnitAddedHandler(UnitAdded); unitcontroller.UnitRemovedEvent += new UnitController.UnitRemovedHandler(UnitRemoved); unitdefhelp = new UnitDefHelp(aicallback); }
public ScoutControllerRandomSearch(IPlayStyle playstyle) { random = new Random(); this.playstyle = playstyle; csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); unitcontroller = UnitController.GetInstance(); buildtable = BuildTable.GetInstance(); searchcoordinator = new SpreadSearchPackCoordinatorWithSearchGrid(ScoutUnitDefsById); logfile.WriteLine("*ScoutController initialized*"); }
public double[,] GetHeightMap() { LogFile.GetInstance().WriteLine("Getting heightmap, this could take a while... "); IAICallback aicallback = CSAI.GetInstance().aicallback; int mapwidth = aicallback.GetMapWidth(); int mapheight = aicallback.GetMapHeight(); double[,] HeightMap = new double[mapwidth + 1, mapheight + 1]; for (int x = 0; x < mapwidth + 1; x++) { for (int y = 0; y < mapheight + 1; y++) { HeightMap[x, y] = aicallback.GetElevation(x * MovementMaps.SQUARE_SIZE, y * MovementMaps.SQUARE_SIZE); } } return(HeightMap); }
public Hashtable FactoriesByTypeName = new Hashtable(); // deployedid of factories hashed by typename (eg "armvp") public FactoryController(IPlayStyle playstyle) { this.playstyle = playstyle; csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); buildtable = BuildTable.GetInstance(); unitcontroller = UnitController.GetInstance(); unitdefhelp = new UnitDefHelp(aicallback); csai.UnitFinishedEvent += new CSAI.UnitFinishedHandler(csai_UnitFinishedEvent); csai.UnitDestroyedEvent += new CSAI.UnitDestroyedHandler(csai_UnitDestroyedEvent); csai.RegisterVoiceCommand("dumpfactories", new CSAI.VoiceCommandHandler(DumpFactories)); }
public ConstructorController(IPlayStyle playstyle) { this.playstyle = playstyle; csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); ShowNextBuildSite = csai.DebugOn; unitcontroller = UnitController.GetInstance(); // factorycontroller = FactoryController.GetInstance(); buildtable = BuildTable.GetInstance(); metal = Metal.GetInstance(); ShowNextBuildSite = csai.DebugOn; logfile.WriteLine("ConstructorController::ConstructorController() finished"); }
public EnemySelector(double maxenemyspeed, IUnitDef typicalunitdef) { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); // csai.EnemyEntersLOSEvent += new CSAI.EnemyEntersLOSHandler( EnemyEntersLOS ); enemycontroller = EnemyController.GetInstance(); unitdefhelp = new UnitDefHelp(aicallback); this.maxenemyspeed = maxenemyspeed; this.WaterOk = WaterOk; this.BadTerrainOk = BadTerrainOk; this.typicalunitdef = typicalunitdef; // startarea = MovementMaps.GetInstance().GetArea(typicalunitdef, startpos); }
BuildTable() // protected constructor to force Singleton instantiation { CSAI = CSAI.GetInstance(); aicallback = CSAI.aicallback; logfile = LogFile.GetInstance(); modname = aicallback.GetModName(); logfile.WriteLine("calling GetUnitDefList... "); availableunittypes = aicallback.GetUnitDefList(); logfile.WriteLine("... done"); if (!LoadCache(modname)) { aicallback.SendTextMsg("Creating new cachefile for mod " + modname, 0); GenerateBuildTable(modname); SaveCache(modname); } }
EnemyMap() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); enemymap = new int[mapwidth / 2, mapheight / 2]; unitdefhelp = new UnitDefHelp(aicallback); //unitcontroller = UnitController.GetInstance(); enemycontroller = EnemyController.GetInstance(); //csai.UnitCreatedEvent += new CSAI.UnitCreatedHandler( UnitCreated ); //csai.UnitDestroyedEvent += new CSAI.UnitDestroyedHandler( UnitDestroyed ); enemycontroller.NewStaticEnemyAddedEvent += new EnemyController.NewStaticEnemyAddedHandler(StaticEnemyAdded); enemycontroller.EnemyRemovedEvent += new EnemyController.EnemyRemovedHandler(EnemyRemoved); Init(); }
BuildMap() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); unitdefhelp = new UnitDefHelp(aicallback); unitcontroller = UnitController.GetInstance(); csai.UnitCreatedEvent += new CSAI.UnitCreatedHandler(UnitCreated); csai.UnitDestroyedEvent += new CSAI.UnitDestroyedHandler(UnitDestroyed); unitcontroller.UnitAddedEvent += new UnitController.UnitAddedHandler(UnitCreated); if (csai.DebugOn) { csai.RegisterVoiceCommand("dumpbuildmap", new CSAI.VoiceCommandHandler(DumpBuildMap)); } Init(); }
EnemyController() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); autoshowenemies = csai.DebugOn; unitcontroller = UnitController.GetInstance(); csai.TickEvent += new CSAI.TickHandler(Tick); csai.EnemyEnterRadarEvent += new CSAI.EnemyEnterRadarHandler(this.EnemyEnterRadar); csai.EnemyEnterLOSEvent += new CSAI.EnemyEnterLOSHandler(this.EnemyEnterLOS); csai.EnemyLeaveRadarEvent += new CSAI.EnemyLeaveRadarHandler(this.EnemyLeaveRadar); csai.EnemyDestroyedEvent += new CSAI.EnemyDestroyedHandler(this.EnemyDestroyed); csai.RegisterVoiceCommand("enemiescount", new CSAI.VoiceCommandHandler(VoiceCommandCountEnemies)); csai.RegisterVoiceCommand("showenemies", new CSAI.VoiceCommandHandler(VoiceCommandShowEnemies)); csai.RegisterVoiceCommand("autoshowenemieson", new CSAI.VoiceCommandHandler(VoiceCommandAutoShowEnemiesOn)); csai.RegisterVoiceCommand("autoshowenemiesoff", new CSAI.VoiceCommandHandler(VoiceCommandAutoShowEnemiesOff)); unitdefhelp = new UnitDefHelp(aicallback); }
// int terrainwidth; // int terrainheight; public ScoutControllerRaider(IPlayStyle playstyle) { this.playstyle = playstyle; csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); random = new Random(); //terrainwidth = aicallback.GetMapWidth() * MovementMaps.SQUARE_SIZE; // terrainheight = aicallback.GetMapHeight() * MovementMaps.SQUARE_SIZE; //int[,] sectorlastcheckedtickcount = new int[ terrainwidth, terrainheight ]; // bool[,] sectorispriority = new bool[ terrainwidth, terrainheight ];; unitcontroller = UnitController.GetInstance(); buildtable = BuildTable.GetInstance(); enemycontroller = EnemyController.GetInstance(); searchcoordinator = new SpreadSearchPackCoordinatorWithSearchGrid(ScoutUnitDefsById); logfile.WriteLine("*ScoutControllerRaider initialized*"); }
//int numOfUnits = 0; //IUnitDef[] unitList; //IUnitDef solarcollectordef; public void InitAI(IAICallback aicallback, int team) { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); this.aicallback = aicallback; try{ this.Team = team; logfile = LogFile.GetInstance().Init(Path.Combine(AIDirectoryPath, "csharpai_team" + team + ".log")); logfile.WriteLine("C# AI started v" + AIVersion + ", team " + team + " ref " + reference + " map " + aicallback.GetMapName() + " mod " + aicallback.GetModName()); logfile.WriteLine("RL Date/time: " + DateTime.Now.ToString()); if (File.Exists(AIDirectoryPath + "/debug.flg")) // if this file exists, activate debug mode; saves manually changing this for releases { logfile.WriteLine("Toggling debug on"); DebugOn = true; } if (DebugOn) { //new Testing.RunTests().Go(); } InitCache(); BuildEconomy buildeconomy = new BuildEconomy(); // UnitController.GetInstance().LoadExistingUnits(); // need this if we're being reloaded in middle of a game, to get already existing units SendTextMsg("C# AI initialized v" + AIVersion + ", team " + team); } catch (Exception e) { logfile.WriteLine("Exception: " + e.ToString()); SendTextMsg("Exception: " + e.ToString()); } }
UnitCommandCache() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); }
MetalController() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); }
public void InitAI(IAICallback aicallback, int team) { this.aicallback = aicallback; Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); try{ Directory.CreateDirectory(AIDirectoryPath); this.Team = team; logfile = LogFile.GetInstance().Init(Path.Combine(AIDirectoryPath, "csharpai_team" + team + ".log")); logfile.WriteLine("C# AI started v" + AIVersion + ", team " + team + " ref " + reference + " map " + aicallback.GetMapName() + " mod " + aicallback.GetModName()); logfile.WriteLine("RL Date/time: " + DateTime.Now.ToString()); if (File.Exists(AIDirectoryPath + "/debug.flg")) // if this file exists, activate debug mode; saves manually changing this for releases { logfile.WriteLine("Toggling debug on"); DebugOn = true; } if (DebugOn) { //new Testing.RunTests().Go(); } InitCache(); /* * IUnitDef unitdef = aicallback.GetUnitDefByTypeId(34); * aicallback.SendTextMsg(unitdef.name,0); * aicallback.SendTextMsg(unitdef.id.ToString(), 0); * aicallback.SendTextMsg(unitdef.humanName, 0); * aicallback.SendTextMsg(unitdef.movedata.moveType.ToString(), 0); * aicallback.SendTextMsg(unitdef.movedata.maxSlope.ToString(), 0); * aicallback.GetMetalMap(); * aicallback.GetLosMap(); * aicallback.GetRadarMap(); * aicallback.GetFriendlyUnits(); * aicallback.GetFeatures(); * aicallback.GetEnemyUnitsInRadarAndLos(); * * Metal.GetInstance(); */ //aicallback.GetElevation(300,300); //new SlopeMap().GetSlopeMap(); //double[,] _SlopeMap = new double[256, 256]; //LosMap.GetInstance(); //MovementMaps.GetInstance(); //BuildMap.GetInstance().Init(); //return; // -- test stuff here -- logfile.WriteLine("Is game paused? : " + aicallback.IsGamePaused()); // -- end test stuff -- BuildEconomy buildeconomy = new BuildEconomy(); // UnitController.GetInstance().LoadExistingUnits(); // need this if we're being reloaded in middle of a game, to get already existing units SendTextMsg("C# AI initialized v" + AIVersion + ", team " + team); } catch (Exception e) { logfile.WriteLine("Exception: " + e.ToString()); SendTextMsg("Exception: " + e.ToString()); } }
StrategyController() { csai = CSAI.GetInstance(); logfile = LogFile.GetInstance(); csai.TickEvent += new CSAI.TickHandler(Tick); }
BuildTree() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); }
public static Float3 GetNearestReclaim(Float3 mypos, int constructorid) { if (CSAI.GetInstance().aicallback.GetCurrentFrame() == 0) // check ticks first, beacuse metal shows as zero at start { return(null); } LogFile logfile = LogFile.GetInstance(); IAICallback aicallback = CSAI.GetInstance().aicallback; IUnitDef unitdef = UnitController.GetInstance().UnitDefByDeployedId[constructorid]; if (!new UnitDefHelp(aicallback).IsMobile(unitdef)) { return(null); } //Float3 mypos = aicallback.GetUnitPos( constructorid ); MovementMaps movementmaps = MovementMaps.GetInstance(); int currentarea = movementmaps.GetArea(unitdef, mypos); //double nearestreclaimdistancesquared = 1000000; //Float3 nearestreclaimpos = null; double bestmetaldistanceratio = 0; int bestreclaimid = 0; int metalspace = (int)(aicallback.GetMetalStorage() - aicallback.GetMetal()); logfile.WriteLine("available space in metal storage: " + metalspace); int[] nearbyfeatures = aicallback.GetFeatures(mypos, maxreclaimradius); bool reclaimfound = false; foreach (int feature in nearbyfeatures) { IFeatureDef featuredef = aicallback.GetFeatureDef(feature); if (featuredef.metal > 0 && featuredef.metal <= metalspace) { Float3 thisfeaturepos = aicallback.GetFeaturePos(feature); double thisdistance = Math.Sqrt(Float3Helper.GetSquaredDistance(thisfeaturepos, mypos)); double thismetaldistanceratio = featuredef.metal / thisdistance; if (thismetaldistanceratio > bestmetaldistanceratio && movementmaps.GetArea(unitdef, thisfeaturepos) == currentarea) { logfile.WriteLine("Potential reclaim, distance = " + thisdistance + " metal = " + featuredef.metal + " ratio = " + thismetaldistanceratio); bestmetaldistanceratio = thismetaldistanceratio; bestreclaimid = feature; // nearestreclaimpo reclaimfound = true; } } } if (reclaimfound && (bestmetaldistanceratio > (1.0 / (100 * reclaimradiusperonehundredmetal)))) { Float3 reclaimpos = aicallback.GetFeaturePos(bestreclaimid); logfile.WriteLine("Reclaim found, pos " + reclaimpos.ToString()); if (CSAI.GetInstance().DebugOn) { aicallback.DrawUnit("ARMMEX", reclaimpos, 0.0f, 200, aicallback.GetMyAllyTeam(), true, true); } return(reclaimpos); //aicallback.GiveOrder( constructorid, new Command( Command.CMD_RECLAIM, // new double[]{ reclaimpos.x, reclaimpos.y, reclaimpos.z, 10 } ) ); } else { //logfile.WriteLine( "No reclaim within parameters" ); return(null); } }
public SlopeMap() { csai = CSAI.GetInstance(); aicallback = csai.aicallback; logfile = LogFile.GetInstance(); }
//int numOfUnits = 0; //IUnitDef[] unitList; //IUnitDef solarcollectordef; public void InitAI(IAICallback aicallback, int team) { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); this.aicallback = aicallback; try{ this.Team = team; logfile = LogFile.GetInstance().Init(team); logfile.WriteLine("C# AI started v" + AIVersion + ", team " + team + " ref " + reference + " map " + aicallback.GetMapName() + " mod " + aicallback.GetModName()); if (File.Exists("AI/CSAI/debug.flg")) // if this file exists, activate debug mode; saves manually changing this for releases { logfile.WriteLine("Toggling debug on"); DebugOn = true; } if (DebugOn) { new Testing.RunTests().Go(); } InitCache(); PlayStyleManager.GetInstance(); LoadPlayStyles.Go(); metal = Metal.GetInstance(); CommanderController.GetInstance(); BuildTable.GetInstance(); UnitController.GetInstance(); EnemyController.GetInstance(); EnergyController.GetInstance(); MovementMaps.GetInstance(); BuildMap.GetInstance(); //FactoryController.GetInstance(); //RadarController.GetInstance(); //TankController.GetInstance(); //ScoutController.GetInstance(); //ConstructorController.GetInstance(); metal.Init(); BuildPlanner.GetInstance(); UnitController.GetInstance().LoadExistingUnits(); // need this if we're being reloaded in middle of a game, to get already existing units EnemyController.GetInstance().LoadExistingUnits(); StrategyController.GetInstance(); LoadStrategies.Go(); PlayStyleManager.GetInstance().ChoosePlayStyle("tankrush"); if (aicallback.GetModName().ToLower().IndexOf("aass") == 0 || aicallback.GetModName().ToLower().IndexOf("xtape") == 0) { aicallback.SendTextMsg("C# AI initialized v" + AIVersion + ", team " + team, 0); aicallback.SendTextMsg("Please say '.csai help' for available commands", 0); PlayStyleManager.GetInstance().ListPlayStyles(); //CommanderController.GetInstance().CommanderBuildPower(); } else { aicallback.SendTextMsg("Warning: CSAI needs AA2.23 or XTA7 to run correctly at this time", 0); logfile.WriteLine("*********************************************************"); logfile.WriteLine("*********************************************************"); logfile.WriteLine("**** ****"); logfile.WriteLine("**** Warning: CSAI needs AA2.23 or XTA7 to run correctly at this time ****"); logfile.WriteLine("**** ****"); logfile.WriteLine("*********************************************************"); logfile.WriteLine("*********************************************************"); } } catch (Exception e) { logfile.WriteLine("Exception: " + e.ToString()); aicallback.SendTextMsg("Exception: " + e.ToString(), 0); } }
public PackCoordinatorSelector() { logfile = LogFile.GetInstance(); }