public void ScrambleTeams() { Thread.Sleep(5000); _bots.RemoveBots(); Thread.Sleep(2000); List <int> greaterTeamSlots; List <int> smallerTeamSlots; Team smallerTeam; if (_observation.GetBlueTeamSizeAdvantage() > 0) { greaterTeamSlots = _cg.BlueSlots; smallerTeamSlots = _cg.RedSlots; smallerTeam = Team.Red; } else { greaterTeamSlots = _cg.RedSlots; smallerTeamSlots = _cg.BlueSlots; smallerTeam = Team.Blue; } ScrambleEvenPortionsOfTeams(smallerTeamSlots, greaterTeamSlots); Thread.Sleep(3000); ScrambleUnevenPortionsOfTeams(smallerTeamSlots, greaterTeamSlots, smallerTeam); }
public void SwapToBalance() { int blueTeamSizeAdvantage = _observation.GetBlueTeamSizeAdvantage(); if (!_observation.GetTeamsAreBalanced()) { List <int> slots; Team emptyTeam; if (blueTeamSizeAdvantage > 0) { slots = _observation.GetBlueSlots(); emptyTeam = Team.Red; } else { slots = _observation.GetRedSlots(); emptyTeam = Team.Blue; } Random rnd = new Random(); int randomSlot = slots[rnd.Next(slots.Count)]; SwapWithEmpty(randomSlot, emptyTeam); } }
public void HandleAutoBalance() { // _prevBlueTeamSizeAdvantage = _blueTeamSizeAdvantage; _blueTeamSizeAdvantage = _observation.GetBlueTeamSizeAdvantage(); if (_observation.GetTeamsAreBalanced()) { EndAutoBalance(); } else if (_observation.GetImbalanceAmount() == 2) { Console.WriteLine($"blue team size advantage {_cg.BlueCount} vs {_cg.RedCount}"); BeginAutoBalance(); } else if (_observation.GetImbalanceAmount() >= 3 || _cg.BlueCount == 0 || _cg.RedCount == 0) { Console.WriteLine($"blue team size advantage {_cg.BlueCount} vs {_cg.RedCount}"); BeginAutoBalance(); } }
public void SwapIfImbalance() { int blueTeamSizeAdvantage = _observation.GetBlueTeamSizeAdvantage(); if (Math.Abs(blueTeamSizeAdvantage) >= 2) { Console.WriteLine("Evening teams"); _manipulation.SwapToBalance(); } }