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)); }