public static Moves CalculateNoPlanBreakBestTerritoryTask(BotMain state, int maxDeployment, List <BotTerritory> territoriesToConsider, BotMap visibleMap, BotMap workingMap, string source) { var wmOpponentTerritories = workingMap.AllOpponentTerritories.Where(o => o.IsVisible).ToList(); var vmOpponentTerritories = visibleMap.CopyTerritories(wmOpponentTerritories); var sortedOpponentTerritories = state.TerritoryValueCalculator.SortAttackValue(vmOpponentTerritories); if (territoriesToConsider != null) { var territoriesToRemove = new List <BotTerritory>(); foreach (var territory in sortedOpponentTerritories) { if (!territoriesToConsider.Contains(territory)) { territoriesToRemove.Add(territory); } } territoriesToRemove.ForEach(o => sortedOpponentTerritories.Remove(o)); } foreach (var territory_1 in sortedOpponentTerritories) { if (territory_1.IsVisible) { var breakTerritoryMoves = state.BreakTerritoryTask.CalculateBreakTerritoryTask(territory_1, maxDeployment, BotTerritory.DeploymentType.Normal, BotTerritory.DeploymentType.Normal, source); if (breakTerritoryMoves != null) { return(breakTerritoryMoves); } } } return(null); }
public static Moves CalculateNoPlanDefendBestTerritoryTask(BotMain state, int maxDeployment, BotMap visibleMap, BotMap workingMap) { var wmOpponentBorderingTerritories = workingMap.GetOpponentBorderingTerritories(); var vmOpponentBorderingTerritories = visibleMap.CopyTerritories(wmOpponentBorderingTerritories); var sortedVMOpponentBorderingTerritories = state.TerritoryValueCalculator.SortDefenseValue(vmOpponentBorderingTerritories); foreach (var vmTerritory in sortedVMOpponentBorderingTerritories) { var defendTerritoryMoves = state.DefendTerritoryTask.CalculateDefendTerritoryTask(vmTerritory, maxDeployment, true, BotTerritory.DeploymentType.Normal, BotTerritory.DeploymentType.Normal); if (defendTerritoryMoves != null && defendTerritoryMoves.GetTotalDeployment() > 0) { return(defendTerritoryMoves); } } return(null); }