public Space this[RoomPoint point] { get { return(m_spaces[point.Y, point.X]); } }
public bool IsExist(RoomPoint point) { if (point.X < 0 || point.X >= Width) { return(false); } else if (point.Y < 0 || point.Y >= Height) { return(false); } return(true); }
private IList <Space> GetNeighborsProcess(RoomPoint location) { IList <Space> spaces = new List <Space>(8); var points = CreatePossibleNeighborsPoints(location); foreach (var point in points) { if (IsExist(point)) { spaces.Add(this[point]); } } return(spaces); }
private RoomPoint[] CreatePossibleNeighborsPoints(RoomPoint point) { RoomPoint[] result = new RoomPoint[8]; //index 0-2的point for (int i = -1; i <= 1; ++i) { result[i + 1] = new RoomPoint(point.X + i, point.Y - 1); } result[3] = new RoomPoint(point.X + 1, point.Y); //index 4-6 for (int i = -1; i <= 1; ++i) { result[5 + i] = new RoomPoint(point.X - i, point.Y + 1); } result[7] = new RoomPoint(point.X - 1, point.Y); return(result); }
internal Space(RoomPoint loc) { m_units = new UnitCollection(); Location = loc; }
/// <summary> /// 获取与该点相邻的Space集合,包括斜线相邻 /// </summary> /// <param name="location"></param> /// <returns></returns> public IEnumerable <Space> GetNeighbors(RoomPoint location) { return(GetNeighborsProcess(location)); }
public RoomPointF(RoomPoint point) { m_vector = point.Coefficients.Clone(); }
public Space CreateSpace(RoomPoint loc) { return(new Space(loc)); }