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(); }
public RoomManager(StackedRoom currentRoom, Stack <StackedRoom> rooms) { CurrentRoom = currentRoom; Rooms = rooms; }