Esempio n. 1
0
 /// <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;
 }
Esempio n. 2
0
        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();
            }
        }