Use DI to open the copy rather than passing in an ugly action

This commit is contained in:
Dean Herbert
2020-10-19 17:15:35 +09:00
parent 6d22f0e196
commit 437ca91b94
3 changed files with 13 additions and 16 deletions

View File

@ -38,11 +38,12 @@ namespace osu.Game.Screens.Multi.Lounge.Components
public event Action<SelectionState> StateChanged; public event Action<SelectionState> StateChanged;
public Action DuplicateRoom;
private readonly Box selectionBox; private readonly Box selectionBox;
private CachedModelDependencyContainer<Room> dependencies; private CachedModelDependencyContainer<Room> dependencies;
[Resolved(canBeNull: true)]
private Multiplayer multiplayer { get; set; }
[Resolved] [Resolved]
private BeatmapManager beatmaps { get; set; } private BeatmapManager beatmaps { get; set; }
@ -239,7 +240,10 @@ namespace osu.Game.Screens.Multi.Lounge.Components
public MenuItem[] ContextMenuItems => new MenuItem[] public MenuItem[] ContextMenuItems => new MenuItem[]
{ {
new OsuMenuItem("Create copy", MenuItemType.Standard, DuplicateRoom) new OsuMenuItem("Create copy", MenuItemType.Standard, () =>
{
multiplayer?.CreateRoom(Room.CreateCopy());
})
}; };
} }
} }

View File

@ -111,14 +111,6 @@ namespace osu.Game.Screens.Multi.Lounge.Components
{ {
roomFlow.Add(new DrawableRoom(room) roomFlow.Add(new DrawableRoom(room)
{ {
DuplicateRoom = () =>
{
Room newRoom = room.CreateCopy();
if (!newRoom.Name.Value.StartsWith("Copy of "))
newRoom.Name.Value = $"Copy of {room.Name.Value}";
loungeSubScreen?.Open(newRoom);
},
Action = () => Action = () =>
{ {
if (room == selectedRoom.Value) if (room == selectedRoom.Value)

View File

@ -134,7 +134,7 @@ namespace osu.Game.Screens.Multi
{ {
Anchor = Anchor.TopRight, Anchor = Anchor.TopRight,
Origin = Anchor.TopRight, Origin = Anchor.TopRight,
Action = createRoom Action = () => CreateRoom()
}, },
roomManager = new RoomManager() roomManager = new RoomManager()
} }
@ -289,10 +289,11 @@ namespace osu.Game.Screens.Multi
logo.Delay(WaveContainer.DISAPPEAR_DURATION / 2).FadeOut(); logo.Delay(WaveContainer.DISAPPEAR_DURATION / 2).FadeOut();
} }
private void createRoom() /// <summary>
{ /// Create a new room.
loungeSubScreen.Open(new Room { Name = { Value = $"{api.LocalUser}'s awesome room" } }); /// </summary>
} /// <param name="room">An optional template to use when creating the room.</param>
public void CreateRoom(Room room = null) => loungeSubScreen.Open(room ?? new Room { Name = { Value = $"{api.LocalUser}'s awesome room" } });
private void beginHandlingTrack() private void beginHandlingTrack()
{ {