예제 #1
0
        private void SelectRoom()
        {
            var room = homeBase.Rooms[roomSelectionX, roomSelectionY];

            var validTasks = homeBase.GetValidTasks(roomSelectionX, roomSelectionY);

            if (validTasks == null || validTasks.Count == 0)
            {
                return;
            }
            var validTaskNames = validTasks.Select(t => t.Title).ToArray();

            var selectedTaskName = new BlockingOptionModal()
            {
                Foreground = TCODColor.grey,
                Background = TCODColor.black,
                Message    = room.RoomType.GetName(),
                Options    = validTaskNames
            }.Show();
            var selectedTask = validTasks.FirstOrDefault(t => t.Title == selectedTaskName);

            if (selectedTask == null)
            {
                return;
            }

            var options = selectedTask.GetOptions(room);

            if (options == null || options.Length == 0)
            {
                Game.State.Tasks.Add(selectedTask.CreateTask(room, null));
                return;
            }

            var selectedOption = new BlockingOptionModal()
            {
                Foreground = TCODColor.grey,
                Background = TCODColor.black,
                Message    = $"{room.RoomType.GetName()} - {selectedTaskName}",
                Options    = options
            }.Show();

            Game.State.Tasks.Add(selectedTask.CreateTask(room, selectedOption));
        }