Example #1
0
        internal void Go(string roomIdentifier, bool leave = true)
        {
            if (!ObjectManager <IRoom> .Instance.Get <Room.RoomManager>().Contains(roomIdentifier))
            {
                throw new ArgumentException($"Unknown room: {roomIdentifier}");
            }

            if (leave)
            {
                var allowLeave = GetRoom()?.OnLeave(User);
                if (allowLeave == false)
                {
                    return;
                }
            }

            if (CurrentRoom != null)
            {
                Rooms.Push(CurrentRoom);
            }

            CurrentRoom = new StackedRoom(roomIdentifier);
            User.MessageManager.ShownStats = ShownStats.Default;
            Events.Go(User, roomIdentifier);
            GetRoom()?.OnEnter(User);
            User.ItemManager.OnEnter();
        }
Example #2
0
 public RoomManager(StackedRoom currentRoom, Stack <StackedRoom> rooms)
 {
     CurrentRoom = currentRoom;
     Rooms       = rooms;
 }