示例#1
0
        public static GameArea GetAreaFromArea(GameArea area, int Radius, bool Oblique, GameScenario Scenario, Faction faction)
        {
            Dictionary <Point, object> closedList = new Dictionary <Point, object>();
            GameArea area2 = new GameArea();

            foreach (Point point in area.Area)
            {
                area2.CombineArea(GetViewArea(point, Radius, Oblique, Scenario, faction), closedList);
            }
            foreach (Point point in closedList.Keys)
            {
                area2.Area.Add(point);
            }
            return(area2);
        }
示例#2
0
        public static GameArea GetAreaFromArea(GameArea area, int radius, bool oblique, GameScenario Scenario, Faction faction)
        {
            /*int longRadius;
             * if (area.Count <= 1)
             *  longRadius = radius;
             * else if (area.Count <= 5)
             *  longRadius = radius + 1;
             * else
             *  longRadius = radius + 2;
             * GameArea candidateArea = GetArea(area.Centre, longRadius, oblique);
             * if (longRadius >= (radius + 1))
             * {
             *  candidateArea.Area.Remove(new Point(area.Centre.X - longRadius, area.Centre.Y - longRadius));
             *  candidateArea.Area.Remove(new Point(area.Centre.X - longRadius, area.Centre.Y + longRadius));
             *  candidateArea.Area.Remove(new Point(area.Centre.X + longRadius, area.Centre.Y - longRadius));
             *  candidateArea.Area.Remove(new Point(area.Centre.X + longRadius, area.Centre.Y + longRadius));
             * }
             * if (longRadius >= (radius + 2))
             * {
             *  candidateArea.Area.Remove(new Point(area.Centre.X - longRadius + 1, area.Centre.Y - longRadius));
             *  candidateArea.Area.Remove(new Point(area.Centre.X - longRadius, area.Centre.Y - longRadius + 1));
             *  candidateArea.Area.Remove(new Point(area.Centre.X - longRadius + 1, area.Centre.Y + longRadius));
             *  candidateArea.Area.Remove(new Point(area.Centre.X - longRadius, area.Centre.Y + longRadius - 1));
             *  candidateArea.Area.Remove(new Point(area.Centre.X + longRadius - 1, area.Centre.Y - longRadius));
             *  candidateArea.Area.Remove(new Point(area.Centre.X + longRadius, area.Centre.Y - longRadius + 1));
             *  candidateArea.Area.Remove(new Point(area.Centre.X + longRadius - 1, area.Centre.Y + longRadius));
             *  candidateArea.Area.Remove(new Point(area.Centre.X + longRadius, area.Centre.Y + longRadius - 1));
             * }
             * return candidateArea;*/
            Dictionary <Point, object> closedList = new Dictionary <Point, object>();
            GameArea area2 = new GameArea();

            foreach (Point point in area.Area)
            {
                area2.CombineArea(GetViewArea(point, radius, oblique, Scenario, faction), closedList);
            }
            foreach (Point point in closedList.Keys)
            {
                area2.Area.Add(point);
            }
            return(area2);
        }
示例#3
0
 public static GameArea GetAreaFromArea(GameArea area, int radius, bool oblique, GameScenario Scenario, Faction faction)
 {
     /*int longRadius;
     if (area.Count <= 1)
         longRadius = radius;
     else if (area.Count <= 5)
         longRadius = radius + 1;
     else
         longRadius = radius + 2;
     GameArea candidateArea = GetArea(area.Centre, longRadius, oblique);
     if (longRadius >= (radius + 1))
     {
         candidateArea.Area.Remove(new Point(area.Centre.X - longRadius, area.Centre.Y - longRadius));
         candidateArea.Area.Remove(new Point(area.Centre.X - longRadius, area.Centre.Y + longRadius));
         candidateArea.Area.Remove(new Point(area.Centre.X + longRadius, area.Centre.Y - longRadius));
         candidateArea.Area.Remove(new Point(area.Centre.X + longRadius, area.Centre.Y + longRadius));
     }
     if (longRadius >= (radius + 2))
     {
         candidateArea.Area.Remove(new Point(area.Centre.X - longRadius + 1, area.Centre.Y - longRadius));
         candidateArea.Area.Remove(new Point(area.Centre.X - longRadius, area.Centre.Y - longRadius + 1));
         candidateArea.Area.Remove(new Point(area.Centre.X - longRadius + 1, area.Centre.Y + longRadius));
         candidateArea.Area.Remove(new Point(area.Centre.X - longRadius, area.Centre.Y + longRadius - 1));
         candidateArea.Area.Remove(new Point(area.Centre.X + longRadius - 1, area.Centre.Y - longRadius));
         candidateArea.Area.Remove(new Point(area.Centre.X + longRadius, area.Centre.Y - longRadius + 1));
         candidateArea.Area.Remove(new Point(area.Centre.X + longRadius - 1, area.Centre.Y + longRadius));
         candidateArea.Area.Remove(new Point(area.Centre.X + longRadius, area.Centre.Y + longRadius - 1));
     }
     return candidateArea;*/
     Dictionary<Point, object> closedList = new Dictionary<Point, object>();
     GameArea area2 = new GameArea();
     foreach (Point point in area.Area)
     {
         area2.CombineArea(GetViewArea(point, radius, oblique, Scenario, faction), closedList);
     }
     foreach (Point point in closedList.Keys)
     {
         area2.Area.Add(point);
     }
     return area2;
 }
示例#4
0
 public static GameArea GetAreaFromArea(GameArea area, int Radius, bool Oblique, GameScenario Scenario, Faction faction)
 {
     Dictionary<Point, object> closedList = new Dictionary<Point, object>();
     GameArea area2 = new GameArea();
     foreach (Point point in area.Area)
     {
         area2.CombineArea(GetViewArea(point, Radius, Oblique, Scenario, faction), closedList);
     }
     foreach (Point point in closedList.Keys)
     {
         area2.Area.Add(point);
     }
     return area2;
 }