1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-31 05:41:19 +08:00

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
Unverified
parent 6d22f0e196
commit 437ca91b94
3 changed files with 13 additions and 16 deletions
@@ -38,11 +38,12 @@ namespace osu.Game.Screens.Multi.Lounge.Components
public event Action<SelectionState> StateChanged;
public Action DuplicateRoom;
private readonly Box selectionBox;
private CachedModelDependencyContainer<Room> dependencies;
[Resolved(canBeNull: true)]
private Multiplayer multiplayer { get; set; }
[Resolved]
private BeatmapManager beatmaps { get; set; }
@@ -239,7 +240,10 @@ namespace osu.Game.Screens.Multi.Lounge.Components
public MenuItem[] ContextMenuItems => new MenuItem[]
{
new OsuMenuItem("Create copy", MenuItemType.Standard, DuplicateRoom)
new OsuMenuItem("Create copy", MenuItemType.Standard, () =>
{
multiplayer?.CreateRoom(Room.CreateCopy());
})
};
}
}
@@ -111,14 +111,6 @@ namespace osu.Game.Screens.Multi.Lounge.Components
{
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 = () =>
{
if (room == selectedRoom.Value)
+6 -5
View File
@@ -134,7 +134,7 @@ namespace osu.Game.Screens.Multi
{
Anchor = Anchor.TopRight,
Origin = Anchor.TopRight,
Action = createRoom
Action = () => CreateRoom()
},
roomManager = new RoomManager()
}
@@ -289,10 +289,11 @@ namespace osu.Game.Screens.Multi
logo.Delay(WaveContainer.DISAPPEAR_DURATION / 2).FadeOut();
}
private void createRoom()
{
loungeSubScreen.Open(new Room { Name = { Value = $"{api.LocalUser}'s awesome room" } });
}
/// <summary>
/// Create a new 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()
{