mirror of
https://github.com/osukey/osukey.git
synced 2025-08-07 00:23:59 +09:00
Use DI to open the copy rather than passing in an ugly action
This commit is contained in:
@ -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());
|
||||||
|
})
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user