public void SetEntries()
        {
            if (Count > 0)
            {
                First = m_List[0];
                HighLightRectangle(First.Rectangle, 1150);

                if (m_Number < Count)
                {
                    Current = m_List[m_Number];
                    HighLightRectangle(Current.Rectangle, 1151);
                }

                else
                    Current = null;

                if (m_Number - 1 > 0)
                {
                    Last = m_List[m_Number - 1];
                    HighLightRectangle(Last.Rectangle, 1152);
                }
                else
                    Last = null;
            }

            else
            {
                Current = null;
                First = null;
                Last = null;
            }
        }
        private static bool NewLocation(CrateRectangle rect, bool first, ref int x, ref int y, ref int movementpoints)
        {
            int changecoord = 0;
            bool vertical = false;
            bool positive = false;

            switch (first ? (int)rect.FirstDirection : (int)rect.SecondDirection)
            {
                case (int)Direction.North:
                    changecoord = rect.Rectangle.Start.Y;
                    vertical = true;
                    break;

                case (int)Direction.East:
                    changecoord = rect.Rectangle.End.X;
                    positive = true;
                    break;

                case (int)Direction.South:
                    changecoord = rect.Rectangle.End.Y;
                    positive = true;
                    vertical = true;
                    break;

                case (int)Direction.West:
                    changecoord = rect.Rectangle.Start.X;
                    break;
            }

            int tochange = vertical ? y : x;
            int difference = 0;
            bool completed = false;

            if (positive && (tochange + movementpoints) <= changecoord)
            {
                    tochange = tochange + movementpoints;
                    completed = true;
            }

            else if ((tochange - movementpoints) >= changecoord)
            {
                    tochange = tochange - movementpoints;
                    completed = true;
            }

            if(!completed)
                difference = changecoord - tochange + (first ? 0 : (positive ?1 : -1));

            tochange = tochange + difference;

            if (vertical)
                y = tochange;
            else
                x = tochange;

            movementpoints = movementpoints - Math.Abs(difference);

            return completed;
        }
        public void NewRegion_Callback(Mobile from, Map map, Point3D start, Point3D end, object state)
        {
            int loc = (int)state;
            Rectangle2D rect = new Rectangle2D(start, end);
            if (loc < m_List.Count)
            {
                m_List[loc] = new CrateRectangle(rect);
                Number = loc;
            }

            else
            {
                m_List.Add(new CrateRectangle(rect));
                Number = m_List.Count - 1;
            }

            from.SendGump(new RegionSettingsGump(this));
        }
 public static bool IsFirstRectangle(CrateRectangle rect)
 {
     return rect == Rectangles[0];
 }