public void UnitCreated(int unit) { aicallback.SendTextMsg("Unit created: " + unit, 0); IUnitDef unitdef = aicallback.GetUnitDef(unit); aicallback.SendTextMsg("Unit created: " + unitdef.name, 0); IMoveData movedata = unitdef.movedata; if (movedata != null) { aicallback.SendTextMsg("Max Slope: " + movedata.maxSlope, 0); } if (unitdef.isCommander) { int numbuildoptions = unitdef.GetNumBuildOptions(); string buildoptionsstring = "Build options: "; for (int i = 0; i < numbuildoptions; i++) { buildoptionsstring += unitdef.GetBuildOption(i); } aicallback.SendTextMsg(buildoptionsstring, 0); Float3 commanderpos = aicallback.GetUnitPos(unit); aicallback.SendTextMsg("Commanderpos: " + commanderpos.ToString(), 0); int numunitdefs = aicallback.GetNumUnitDefs(); aicallback.SendTextMsg("Num unit defs: " + numunitdefs, 0); for (int i = 1; i <= numunitdefs; i++) { IUnitDef thisunitdef = aicallback.GetUnitDefByTypeId(i); if (thisunitdef.name == "ARMSOLAR") { aicallback.SendTextMsg("Found solar collector def: " + thisunitdef.id, 0); Float3 nearestbuildpos = aicallback.ClosestBuildSite(thisunitdef, commanderpos, 1400, 2); aicallback.SendTextMsg("Closest build site: " + nearestbuildpos.ToString(), 0); aicallback.DrawUnit("ARMSOLAR", nearestbuildpos, 0, 200, aicallback.GetMyAllyTeam(), true, true); aicallback.GiveOrder(unit, new Command(-thisunitdef.id, nearestbuildpos.ToDoubleArray())); } } } }
public bool CanBuild(string buildername, string targetname) { if (!buildablenamesbyname.ContainsKey(buildername)) { List <string> thisbuilderoptions = new List <string>(); buildablenamesbyname.Add(buildername, thisbuilderoptions); IUnitDef unitdef = BuildTable.GetInstance().UnitDefByName[buildername]; int numbuildoptions = unitdef.GetNumBuildOptions(); //BuildOption[] buildoptions = BuildTable.GetInstance().UnitDefByName[buildername].buildOptions; for (int i = 0; i < numbuildoptions; i++) //foreach (BuildOption buildoption in buildoptions) { thisbuilderoptions.Add(unitdef.GetBuildOption(i).ToLower()); } } return(buildablenamesbyname[buildername].Contains(targetname)); }