// Methods
 public static MovementPath GetClientMovement(List<UInt32> Keys)
 {
     MovementPath path = new MovementPath();
     PathElement element = null;
     int num = 0;
     int num2 = 0;
     foreach (int num2_loopVariable in Keys)
     {
         num2 = num2_loopVariable;
         MapPoint point = new MapPoint((num2 & 4095));
         PathElement item = new PathElement { Cell = point };
         if ((num == 0))
         {
             path.CellStart = point;
         }
         else
         {
             element.Orientation = element.Cell.OrientationTo(item.Cell);
         }
         if ((num == (Keys.Count - 1)))
         {
             path.CellEnd = point;
         }
         path.Cells.Add(item);
         element = item;
         num += 1;
     }
     return path;
 }
 public static List<uint> GetServerMovement(MovementPath Path)
 {
     List<uint> list = new List<uint>();
     int orientation = 0;
     foreach (PathElement element in Path.Cells) {
         orientation = element.Orientation;
         list.Add(Convert.ToUInt32(((orientation & 7) << 12) | (element.Cell.CellId & 4095)));
     }
     list.Add(Convert.ToUInt32(((orientation & 7) << 12) | (Path.CellEnd.CellId & 4095)));
     return list;
 }
示例#3
0
        public MovementPath FindPath(int FromCell, int ToCell, bool ate, bool adc)
        {
            MovPath = new MovementPath();
            MovPath.CellStart = new MapPoint(FromCell);
            MovPath.CellEnd = new MapPoint(ToCell);
            AllowDiag = adc;
            AllowDiagCornering = adc;
            AllowTroughEntity = ate;

            StartPathfinding(new MapPoint(FromCell), new MapPoint(ToCell));
            ProcessPathfinding();

            return MovPath;
        }
示例#4
0
 private MovementPath method_3(SimpleCellInfo class13_0)
 {
     List<MapPoint> range = new List<MapPoint>();
     SimpleCellInfo class2 = class13_0;
     while (class2.v_OriginPoint.CellId != this.MapPoint_FromCell.CellId)
     {
         class2 = class2.class13_0;
         range.Add(class2.v_OriginPoint);
     }
     range.Reverse();
     range.Add(class13_0.v_OriginPoint);
     if (this.v_MouvementPoints != -1)
     {
         range = range.GetRange(0, (((this.v_MouvementPoints + 1) > range.Count) ? range.Count : (this.v_MouvementPoints + 1)));
     }
     MovementPath path = new MovementPath { CellStart = this.MapPoint_FromCell, CellEnd = range[(range.Count - 1)] };
     int num = (range.Count - 2);
     int i = 0;
     while (i <= num)
     {
         PathElement item = new PathElement { Cell = range[i], Orientation = range[i].OrientationTo(range[(i + 1)]) };
         path.Cells.Add(item);
         i += 1;
     }
     path.Compress();
     return path;
 }