/// <summary>
        /// Sets a place's North/South/etc value to another Place's ID
        /// </summary>
        /// <param name="direction"></param>
        /// <param name="targetId"></param>
        public void SetDirection(LocationDirection direction, int targetId)
        {
            switch (direction)
            {
            case LocationDirection.North:
                North = targetId;
                break;

            case LocationDirection.South:
                South = targetId;
                break;

            case LocationDirection.East:
                East = targetId;
                break;

            case LocationDirection.West:
                West = targetId;
                break;

            case LocationDirection.Up:
                Up = targetId;
                break;

            case LocationDirection.Down:
                Down = targetId;
                break;

            default:
                throw new Exception("Location invalid");
            }
        }
        public static string LocToString(this LocationDirection direction)
        {
            switch (direction)
            {
            case LocationDirection.North:
                return("north");

            case LocationDirection.South:
                return("south");

            case LocationDirection.East:
                return("east");

            case LocationDirection.West:
                return("west");

            case LocationDirection.Up:
                return("up");

            case LocationDirection.Down:
                return("down");

            default:
                throw new Exception("Not a valid direction");
            }
        }
        public static LocationDirection GetOpposite(this LocationDirection direction)
        {
            switch (direction)
            {
            case LocationDirection.North:
                return(LocationDirection.South);

            case LocationDirection.South:
                return(LocationDirection.North);

            case LocationDirection.East:
                return(LocationDirection.West);

            case LocationDirection.West:
                return(LocationDirection.East);

            case LocationDirection.Up:
                return(LocationDirection.Down);

            case LocationDirection.Down:
                return(LocationDirection.Up);

            default:
                throw new Exception("Not a valid direction");
            }
        }
 private void ChangeSelectionToDirection(int roomId, Place room, LocationDirection direction)
 {
     if (roomId == 0)
     {
         roomId = CreateNewRoom(room, direction);
     }
     for (int i = 0; i < LvRoomsList.Items.Count; i++)
     {
         if (Convert.ToInt16(LvRoomsList.Items[i]) == roomId)
         {
             LvRoomsList.SelectedIndex = i;
         }
     }
 }
        public Dictionary <LocationDirection, Item> GetDoors()
        {
            Dictionary <LocationDirection, Item> valuePairs = new Dictionary <LocationDirection, Item>();

            foreach (Item item in GetItems())
            {
                if (item.GetDoorCounterpart(Saves.Items) != -1)
                {
                    LocationDirection direction = LocalConvert.ToLocationDirection(item.GetResults()[0][0]);
                    if (!valuePairs.ContainsKey(direction))
                    {
                        valuePairs.Add(direction, item);
                    }
                }
            }

            return(valuePairs);
        }
        private int CreateNewRoom(Place prevRoom, LocationDirection direction)
        {
            int[] idList   = Saves.Places.GetIDs();
            Place newPlace = new Place(idList);

            switch (direction)
            {
            case LocationDirection.North:
                // link the two places together
                prevRoom.North = newPlace.id;
                newPlace.South = prevRoom.id;
                break;

            case LocationDirection.East:
                prevRoom.East = newPlace.id;
                newPlace.West = prevRoom.id;
                break;

            case LocationDirection.South:
                prevRoom.South = newPlace.id;
                newPlace.North = prevRoom.id;
                break;

            case LocationDirection.West:
                prevRoom.West = newPlace.id;
                newPlace.East = prevRoom.id;
                break;

            case LocationDirection.Up:
                prevRoom.Up   = newPlace.id;
                newPlace.Down = prevRoom.id;
                break;

            case LocationDirection.Down:
                prevRoom.Down = newPlace.id;
                newPlace.Up   = prevRoom.id;
                break;
            }

            Saves.Places.UpdatePlace(prevRoom);
            Saves.Places.Add(newPlace);
            UpdateList();
            return(newPlace.id);
        }