/// <summary> /// Initialise Region /// </summary> /// <param name="id">id</param> /// <param name="superRegion">SuperRegion</param> public Region(int id, SuperRegion superRegion) { this.id = id; this.superRegion = superRegion; this.neighbours = new BaseRegions(); player = PLAYER.UNKNOWN; armies = 2; }
private void CalcFront() { RegionsMe = new BaseRegions(Map.GetInstance().RWhere(PLAYER.ME)); RegionsFront = new BaseRegions(Map.GetInstance().Regions.Where(R => R.Player == PLAYER.ME && R.Neighbours.Any(N => N.Player != PLAYER.ME)).ToList()); RegionsInland = new BaseRegions(RegionsMe.Regions.Except(RegionsFront.Regions).ToList()); // Reset all Regions Map.GetInstance().Regions.ForEach(R => { R.IsFront = false; R.FrontDistance = 99; }); // Set Front on True and 1 if (RegionsFront.Regions.Count > 0) RegionsFront.Regions.ForEach(R => { R.IsFront = true; R.FrontDistance = 1; } ); // RegionsOpen: Regions belonging to Me without route to front List<Region> RegionsOpen = RegionsInland.Regions; while (RegionsOpen.Count > 0) { List<Region> Temp = RegionsOpen.Where(R => R.Neighbours.Any(N => N.FrontDistance < 99)).ToList(); if (Temp.Count > 0) Temp.ForEach(R => R.FrontDistance = R.Neighbours.Min(N => N.FrontDistance) + 1); RegionsOpen = RegionsOpen.Where(R => R.FrontDistance == 99).ToList(); } }