public void AddAIMove(int move, Player pl) { int myminerals = 0; if (move == 3001) { myminerals = UnitService.AbilityUpgradeUnit(AbilityPool.Abilities.SingleOrDefault(x => x.Ability == UnitAbilities.Stimpack), pl); } if (move == 3002) { myminerals = UnitService.AbilityUpgradeUnit(AbilityPool.Abilities.SingleOrDefault(x => x.Ability == UnitAbilities.CombatShield), pl); } if (move == 3003) { myminerals = UnitService.AbilityUpgradeUnit(AbilityPool.Abilities.SingleOrDefault(x => x.Ability == UnitAbilities.ConcussiveShells), pl); } if (move == 3004) { myminerals = UnitService.UpgradeUnit(UnitUpgrades.GroundAttac, pl); } if (move == 3005) { myminerals = UnitService.UpgradeUnit(UnitUpgrades.GroundArmor, pl); } int num = 0; for (int i = 0; i < 3; i++) { for (int j = 0; j < 20; j++) { for (int k = 0; k < 50; k++) { if (move == num) { Unit unit = UnitPool.Units.SingleOrDefault(x => x.ID == i + 1); if (unit != null) { Unit myunit = unit.DeepCopy(); myunit.PlacePos = new Vector2((float)k / 2, (float)j / 2); UnitService.NewUnit(pl, myunit); pl.Units.Add(myunit); myminerals = myunit.Cost; } } num++; } } } pl.MineralsCurrent -= myminerals; }
public void SetString(string build, Player pl) { if (build == null || build == "") { return; } pl.SoftReset(); var ents = build.Split(","); foreach (var ent in ents) { if (ent.Count(x => x == '|') > 1) { var unitents = ent.Split('|'); Unit unit = UnitPool.Units.SingleOrDefault(x => x.ID == int.Parse(unitents[0])); if (unit != null) { Unit myunit = unit.DeepCopy(); myunit.PlacePos = new Vector2(float.Parse(unitents[2]), float.Parse(unitents[1])); UnitService.NewUnit(pl, myunit); pl.Units.Add(myunit); pl.MineralsCurrent += myunit.Cost; } } else if (ent.Count(x => x == '|') == 1) { var upgradeents = ent.Split('|'); UnitUpgrade upgrade = new UnitUpgrade(); upgrade.Upgrade = (UnitUpgrades)int.Parse(upgradeents[0]); upgrade.Level = int.Parse(upgradeents[1]); pl.MineralsCurrent += UnitService.UpgradeUnit(upgrade.Upgrade, pl); } else { int ua = -1; if (int.TryParse(ent, out ua)) { UnitAbility myability = AbilityPool.Abilities.SingleOrDefault(x => x.Ability == (UnitAbilities)ua).DeepCopy(); pl.MineralsCurrent += UnitService.AbilityUpgradeUnit(myability, pl); } } } }
public static async Task GetMove(Player _opp) { string action = await GetMovesService.GetMoveFaster(String.Join('X', _opp.GetAIMoves())); int move = int.Parse(action); Object obj = GetMovesService.ActionToMove(move); if (obj is Unit) { Unit unit = obj as Unit; UnitService.NewUnit(_opp, unit); _opp.MineralsCurrent -= unit.Cost; _opp.Units.Add(unit); } else if (obj is UnitAbility) { UnitAbility ab = obj as UnitAbility; _opp.MineralsCurrent -= UnitService.AbilityUpgradeUnit(ab, _opp); } }
///<summary> ///Restore player from this ///</summary> public void SetBuild(Player pl) { pl.SoftReset(); lock (this) { foreach (var ent in Abilities) { pl.MineralsCurrent += UnitService.AbilityUpgradeUnit(AbilityPool.Abilities.SingleOrDefault(x => x.Ability == ent), pl); } foreach (var ent in Upgrades) { pl.MineralsCurrent += UnitService.UpgradeUnit(ent, pl); } foreach (var ent in Units) { if (ent.Value > 0) { for (int i = 0; i < ent.Value; i++) { Unit unit = UnitPool.Units.SingleOrDefault(x => x.ID == ent.Key).DeepCopy(); var positions = Position.Where(x => x.Key == unit.ID).ToList(); if (positions.Count() >= i) { Vector2Ser vec = positions.ElementAt(i).Value; unit.PlacePos = new Vector2(vec.x, vec.y); UnitService.NewUnit(pl, unit); pl.Units.Add(unit); pl.MineralsCurrent += unit.Cost; } } } } } }
public static int GetPlayer(GameMapModel _map, dsreplay replay, Player pl, int gameloop = 0) { dsplayer dspl = replay.PLAYERS.SingleOrDefault(x => x.REALPOS == pl.Pos); if (dspl == null) { return(gameloop); } pl.SoftReset(); if (pl.Name == "") { pl.Name = dspl.NAME; pl.Pos = dspl.REALPOS; UnitRace race = UnitRace.Terran; if (dspl.RACE == "Protoss") { race = UnitRace.Protoss; } else if (dspl.RACE == "Zerg") { race = UnitRace.Zerg; } pl.Race = race; pl.Units = UnitPool.Units.Where(x => x.Race == race && x.Cost > 0).ToList(); } if (gameloop == 0) { gameloop = _map.plSpawns[pl.Pos].OrderBy(o => o).First(); } foreach (var unit in _map.Spawns[gameloop].Where(x => x.Owner == pl.Pos)) { Unit myunit = unit.DeepCopy(); if (pl.Pos <= 3) { //myunit.PlacePos = UnitService.mirrorImage(myunit.PlacePos); //myunit.PlacePos = new Vector2(Battlefield.Xmax - myunit.PlacePos.X, myunit.PlacePos.Y); myunit.PlacePos = new Vector2(myunit.PlacePos.X, 2 * 5 - myunit.PlacePos.Y - 1); } UnitService.NewUnit(pl, myunit); pl.Units.Add(myunit); pl.MineralsCurrent -= myunit.Cost; } foreach (var dic in _map.Upgrades[pl.Pos].OrderBy(x => x.Key)) { if (dic.Key > gameloop) { break; } foreach (var upgrade in dic.Value) { pl.MineralsCurrent -= UnitService.UpgradeUnit(upgrade.Upgrade, pl); } } foreach (var dic in _map.AbilityUpgrades[pl.Pos].OrderBy(x => x.Key)) { if (dic.Key > gameloop) { break; } foreach (var upgrade in dic.Value) { pl.MineralsCurrent -= UnitService.AbilityUpgradeUnit(upgrade, pl); } } pl.MineralsCurrent = 10000; return(gameloop); }