mirror of
https://github.com/ppy/osu.git
synced 2024-12-15 03:22:55 +08:00
Merge remote-tracking branch 'refs/remotes/ppy/master' into replay_speed
This commit is contained in:
commit
402531d04c
@ -1 +1 @@
|
||||
Subproject commit 5f19dd913dfc69013a3b9cf30ccfd9c44881a321
|
||||
Subproject commit ef889b4ec7e6175d52d64411c15f4f195fd16209
|
@ -31,6 +31,8 @@ namespace osu.Game.Beatmaps.Drawables
|
||||
|
||||
public Action<BeatmapInfo> HideDifficultyRequested;
|
||||
|
||||
public Action<BeatmapInfo> EditRequested;
|
||||
|
||||
public BeatmapSetHeader Header;
|
||||
|
||||
public List<BeatmapPanel> BeatmapPanels;
|
||||
@ -87,7 +89,8 @@ namespace osu.Game.Beatmaps.Drawables
|
||||
Alpha = 0,
|
||||
GainedSelection = panelGainedSelection,
|
||||
HideRequested = p => HideDifficultyRequested?.Invoke(p),
|
||||
StartRequested = p => { StartRequested?.Invoke(p.Beatmap); },
|
||||
StartRequested = p => StartRequested?.Invoke(p.Beatmap),
|
||||
EditRequested = p => EditRequested?.Invoke(p.Beatmap),
|
||||
RelativeSizeAxes = Axes.X,
|
||||
}).ToList();
|
||||
|
||||
|
@ -8,11 +8,15 @@ using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Framework.Graphics.Shapes;
|
||||
using osu.Game.Graphics;
|
||||
using osu.Game.Graphics.UserInterface;
|
||||
using osu.Game.Screens.Edit.Menus;
|
||||
using osu.Game.Screens.Edit.Components.Timelines.Summary;
|
||||
using OpenTK;
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Framework.Graphics.UserInterface;
|
||||
using osu.Game.Graphics.UserInterface;
|
||||
using osu.Game.Screens.Edit.Screens;
|
||||
using osu.Game.Screens.Edit.Screens.Compose;
|
||||
using osu.Game.Screens.Edit.Screens.Design;
|
||||
|
||||
namespace osu.Game.Screens.Edit
|
||||
{
|
||||
@ -23,204 +27,88 @@ namespace osu.Game.Screens.Edit
|
||||
internal override bool ShowOverlays => false;
|
||||
|
||||
private readonly Box bottomBackground;
|
||||
private readonly Container screenContainer;
|
||||
|
||||
private EditorScreen currentScreen;
|
||||
|
||||
public Editor()
|
||||
{
|
||||
Add(new Container
|
||||
EditorMenuBar menuBar;
|
||||
SummaryTimeline timeline;
|
||||
|
||||
Children = new[]
|
||||
{
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Height = 40,
|
||||
Children = new Drawable[]
|
||||
new Container
|
||||
{
|
||||
new EditorMenuBar
|
||||
Name = "Screen container",
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Padding = new MarginPadding { Top = 40, Bottom = 60 },
|
||||
Child = screenContainer = new Container
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Masking = true
|
||||
}
|
||||
},
|
||||
new Container
|
||||
{
|
||||
Name = "Top bar",
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Height = 40,
|
||||
Child = menuBar = new EditorMenuBar
|
||||
{
|
||||
Anchor = Anchor.CentreLeft,
|
||||
Origin = Anchor.CentreLeft,
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuBarItem("File")
|
||||
new MenuItem("File")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuItem("Clear all notes"),
|
||||
new EditorMenuItem("Open difficulty..."),
|
||||
new EditorMenuItem("Save"),
|
||||
new EditorMenuItem("Create new difficulty..."),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Revert to saved"),
|
||||
new EditorMenuItem("Revert to saved (full"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Test beatmap"),
|
||||
new EditorMenuItem("Open AiMod"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Upload Beatmap..."),
|
||||
new EditorMenuItem("Export package"),
|
||||
new EditorMenuItem("Export map package"),
|
||||
new EditorMenuItem("Import from..."),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Open song folder"),
|
||||
new EditorMenuItem("Open .osu in Notepad"),
|
||||
new EditorMenuItem("Open .osb in Notepad"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Exit", MenuItemType.Standard, Exit)
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("Edit")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuItem("Undo"),
|
||||
new EditorMenuItem("Redo"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Cut"),
|
||||
new EditorMenuItem("Copy"),
|
||||
new EditorMenuItem("Paste"),
|
||||
new EditorMenuItem("Delete"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Select all"),
|
||||
new EditorMenuItem("Clone"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Reverse selection"),
|
||||
new EditorMenuItem("Flip horizontally"),
|
||||
new EditorMenuItem("Flip vertically"),
|
||||
new EditorMenuItem("Rotate 90deg clockwise"),
|
||||
new EditorMenuItem("Rotate 90deg anticlockwise"),
|
||||
new EditorMenuItem("Rotate by..."),
|
||||
new EditorMenuItem("Scale by..."),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Reset selected objects' samples"),
|
||||
new EditorMenuItem("Reset all samples", MenuItemType.Destructive),
|
||||
new EditorMenuItem("Reset combo colours", MenuItemType.Destructive),
|
||||
new EditorMenuItem("Reset breaks", MenuItemType.Destructive),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Nudge backward"),
|
||||
new EditorMenuItem("Nudge forward")
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("View")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuItem("Compose"),
|
||||
new EditorMenuItem("Design"),
|
||||
new EditorMenuItem("Timing"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Song setup..."),
|
||||
new EditorMenuItem("Timing setup..."),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Volume"),
|
||||
new EditorMenuItem("Grid level"),
|
||||
new EditorMenuItem("Show video"),
|
||||
new EditorMenuItem("Show sample name"),
|
||||
new EditorMenuItem("Snaking sliders"),
|
||||
new EditorMenuItem("Hit animations"),
|
||||
new EditorMenuItem("Follow points"),
|
||||
new EditorMenuItem("Stacking")
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("Compose")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuItem("Snap divisor"),
|
||||
new EditorMenuItem("Audio rate"),
|
||||
new EditorMenuItem("Grid snapping"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Create polygon cricles..."),
|
||||
new EditorMenuItem("Convert slider to stream"),
|
||||
new EditorMenuItem("Enable live mapping mode"),
|
||||
new EditorMenuItem("Sample import")
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("Design")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuItem("Move all elements in time...")
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("Timing")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuItem("Time signature"),
|
||||
new EditorMenuItem("Metronome clicks"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Add timing section"),
|
||||
new EditorMenuItem("Add inheriting section"),
|
||||
new EditorMenuItem("Reset current section"),
|
||||
new EditorMenuItem("Delete timing section"),
|
||||
new EditorMenuItem("Resnap current section"),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Timing setup..."),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Resnap all notes", MenuItemType.Destructive),
|
||||
new EditorMenuItem("Move all notes in time...", MenuItemType.Destructive),
|
||||
new EditorMenuItem("Recalculate slider lengths", MenuItemType.Destructive),
|
||||
new EditorMenuItem("Delete all timing sections", MenuItemType.Destructive),
|
||||
new EditorMenuItemSpacer(),
|
||||
new EditorMenuItem("Set current position as preview point")
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("Web")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuItem("This Beatmap's information page"),
|
||||
new EditorMenuItem("This Beatmap's thread"),
|
||||
new EditorMenuItem("Quick reply")
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("Help")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuItem("Show in-game help"),
|
||||
new EditorMenuItem("View FAQ")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
SummaryTimeline summaryTimeline;
|
||||
Add(new Container
|
||||
{
|
||||
Anchor = Anchor.BottomLeft,
|
||||
Origin = Anchor.BottomLeft,
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Height = 60,
|
||||
Children = new Drawable[]
|
||||
},
|
||||
new Container
|
||||
{
|
||||
bottomBackground = new Box { RelativeSizeAxes = Axes.Both },
|
||||
new Container
|
||||
Name = "Bottom bar",
|
||||
Anchor = Anchor.BottomLeft,
|
||||
Origin = Anchor.BottomLeft,
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Height = 60,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Padding = new MarginPadding { Top = 5, Bottom = 5, Left = 10, Right = 10 },
|
||||
Child = new FillFlowContainer
|
||||
bottomBackground = new Box { RelativeSizeAxes = Axes.Both },
|
||||
new Container
|
||||
{
|
||||
Name = "Bottom bar",
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Direction = FillDirection.Horizontal,
|
||||
Spacing = new Vector2(10, 0),
|
||||
Children = new[]
|
||||
Padding = new MarginPadding { Top = 5, Bottom = 5, Left = 10, Right = 10 },
|
||||
Child = new FillFlowContainer
|
||||
{
|
||||
summaryTimeline = new SummaryTimeline
|
||||
Name = "Bottom bar",
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Direction = FillDirection.Horizontal,
|
||||
Spacing = new Vector2(10, 0),
|
||||
Children = new[]
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Width = 0.65f
|
||||
timeline = new SummaryTimeline
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Width = 0.65f
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
summaryTimeline.Beatmap.BindTo(Beatmap);
|
||||
timeline.Beatmap.BindTo(Beatmap);
|
||||
menuBar.Mode.ValueChanged += onModeChanged;
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
@ -229,6 +117,27 @@ namespace osu.Game.Screens.Edit
|
||||
bottomBackground.Colour = colours.Gray2;
|
||||
}
|
||||
|
||||
private void onModeChanged(EditorScreenMode mode)
|
||||
{
|
||||
currentScreen?.Exit();
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case EditorScreenMode.Compose:
|
||||
currentScreen = new Compose();
|
||||
break;
|
||||
case EditorScreenMode.Design:
|
||||
currentScreen = new Design();
|
||||
break;
|
||||
default:
|
||||
currentScreen = new EditorScreen();
|
||||
break;
|
||||
}
|
||||
|
||||
currentScreen.Beatmap.BindTo(Beatmap);
|
||||
screenContainer.Add(currentScreen);
|
||||
}
|
||||
|
||||
protected override void OnResuming(Screen last)
|
||||
{
|
||||
Beatmap.Value.Track?.Stop();
|
||||
|
@ -11,28 +11,42 @@ using osu.Game.Graphics;
|
||||
using osu.Game.Graphics.UserInterface;
|
||||
using OpenTK;
|
||||
using OpenTK.Graphics;
|
||||
using osu.Framework.Configuration;
|
||||
using osu.Game.Screens.Edit.Screens;
|
||||
|
||||
namespace osu.Game.Screens.Edit.Menus
|
||||
{
|
||||
public class EditorMenuBar : OsuMenu
|
||||
{
|
||||
public readonly Bindable<EditorScreenMode> Mode = new Bindable<EditorScreenMode>();
|
||||
|
||||
public EditorMenuBar()
|
||||
: base(Direction.Horizontal, true)
|
||||
{
|
||||
RelativeSizeAxes = Axes.X;
|
||||
|
||||
MaskingContainer.CornerRadius = 0;
|
||||
ItemsContainer.Padding = new MarginPadding { Left = 100 };
|
||||
BackgroundColour = OsuColour.FromHex("111");
|
||||
|
||||
ScreenSelectionTabControl tabControl;
|
||||
AddRangeInternal(new Drawable[]
|
||||
{
|
||||
new ScreenSelectionTabControl
|
||||
tabControl = new ScreenSelectionTabControl
|
||||
{
|
||||
Anchor = Anchor.BottomRight,
|
||||
Origin = Anchor.BottomRight,
|
||||
X = -15
|
||||
}
|
||||
});
|
||||
|
||||
Mode.BindTo(tabControl.Current);
|
||||
}
|
||||
|
||||
protected override void LoadComplete()
|
||||
{
|
||||
base.LoadComplete();
|
||||
Mode.TriggerChange();
|
||||
}
|
||||
|
||||
protected override Framework.Graphics.UserInterface.Menu CreateSubMenu() => new SubMenu();
|
||||
|
@ -1,15 +0,0 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using osu.Framework.Graphics.UserInterface;
|
||||
|
||||
namespace osu.Game.Screens.Edit.Menus
|
||||
{
|
||||
public class EditorMenuBarItem : MenuItem
|
||||
{
|
||||
public EditorMenuBarItem(string text)
|
||||
: base(text)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -9,8 +9,8 @@ using osu.Framework.Graphics.Shapes;
|
||||
using osu.Framework.Graphics.UserInterface;
|
||||
using osu.Game.Graphics;
|
||||
using osu.Game.Graphics.UserInterface;
|
||||
using osu.Game.Screens.Edit.Screens;
|
||||
using OpenTK;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace osu.Game.Screens.Edit.Menus
|
||||
{
|
||||
@ -33,6 +33,8 @@ namespace osu.Game.Screens.Edit.Menus
|
||||
Height = 1,
|
||||
Colour = Color4.White.Opacity(0.2f),
|
||||
});
|
||||
|
||||
Current.Value = EditorScreenMode.Compose;
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
@ -70,16 +72,4 @@ namespace osu.Game.Screens.Edit.Menus
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum EditorScreenMode
|
||||
{
|
||||
[Description("compose")]
|
||||
Compose,
|
||||
[Description("design")]
|
||||
Design,
|
||||
[Description("timing")]
|
||||
Timing,
|
||||
[Description("song")]
|
||||
SongSetup
|
||||
}
|
||||
}
|
||||
|
41
osu.Game/Screens/Edit/Screens/Compose/Compose.cs
Normal file
41
osu.Game/Screens/Edit/Screens/Compose/Compose.cs
Normal file
@ -0,0 +1,41 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using OpenTK.Graphics;
|
||||
using osu.Framework.Extensions.Color4Extensions;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Framework.Graphics.Shapes;
|
||||
|
||||
namespace osu.Game.Screens.Edit.Screens.Compose
|
||||
{
|
||||
public class Compose : EditorScreen
|
||||
{
|
||||
public Compose()
|
||||
{
|
||||
Children = new[]
|
||||
{
|
||||
new Container
|
||||
{
|
||||
Name = "Timeline",
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Height = 110,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
new Box
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Colour = Color4.Black.Opacity(0.5f)
|
||||
},
|
||||
new Container
|
||||
{
|
||||
Name = "Content",
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Padding = new MarginPadding { Horizontal = 17, Vertical = 10 }
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
52
osu.Game/Screens/Edit/Screens/Design/Design.cs
Normal file
52
osu.Game/Screens/Edit/Screens/Design/Design.cs
Normal file
@ -0,0 +1,52 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Framework.Graphics.Shapes;
|
||||
using osu.Game.Graphics.Sprites;
|
||||
using OpenTK.Graphics;
|
||||
|
||||
namespace osu.Game.Screens.Edit.Screens.Design
|
||||
{
|
||||
internal class Design : EditorScreen
|
||||
{
|
||||
public Design()
|
||||
{
|
||||
Add(new Container
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
new Box
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Colour = Color4.Black,
|
||||
Alpha = 0.35f
|
||||
},
|
||||
new Container
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
new Box
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Colour = Color4.Black,
|
||||
Alpha = 0.5f
|
||||
},
|
||||
new Container
|
||||
{
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Padding = new MarginPadding(20),
|
||||
Child = new OsuSpriteText { Text = "Design screen" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
41
osu.Game/Screens/Edit/Screens/EditorScreen.cs
Normal file
41
osu.Game/Screens/Edit/Screens/EditorScreen.cs
Normal file
@ -0,0 +1,41 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using osu.Framework.Configuration;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Game.Beatmaps;
|
||||
|
||||
namespace osu.Game.Screens.Edit.Screens
|
||||
{
|
||||
public class EditorScreen : Container
|
||||
{
|
||||
public readonly Bindable<WorkingBeatmap> Beatmap = new Bindable<WorkingBeatmap>();
|
||||
|
||||
protected override Container<Drawable> Content => content;
|
||||
private readonly Container content;
|
||||
|
||||
public EditorScreen()
|
||||
{
|
||||
Anchor = Anchor.Centre;
|
||||
Origin = Anchor.Centre;
|
||||
RelativeSizeAxes = Axes.Both;
|
||||
|
||||
InternalChild = content = new Container { RelativeSizeAxes = Axes.Both };
|
||||
}
|
||||
|
||||
protected override void LoadComplete()
|
||||
{
|
||||
base.LoadComplete();
|
||||
|
||||
this.FadeTo(0)
|
||||
.Then()
|
||||
.FadeTo(1f, 250, Easing.OutQuint);
|
||||
}
|
||||
|
||||
public void Exit()
|
||||
{
|
||||
this.FadeOut(250).Expire();
|
||||
}
|
||||
}
|
||||
}
|
19
osu.Game/Screens/Edit/Screens/EditorScreenMode.cs
Normal file
19
osu.Game/Screens/Edit/Screens/EditorScreenMode.cs
Normal file
@ -0,0 +1,19 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace osu.Game.Screens.Edit.Screens
|
||||
{
|
||||
public enum EditorScreenMode
|
||||
{
|
||||
[Description("setup")]
|
||||
SongSetup,
|
||||
[Description("compose")]
|
||||
Compose,
|
||||
[Description("design")]
|
||||
Design,
|
||||
[Description("timing")]
|
||||
Timing,
|
||||
}
|
||||
}
|
@ -177,6 +177,8 @@ namespace osu.Game.Screens.Select
|
||||
|
||||
public Action<BeatmapSetInfo> RestoreRequested;
|
||||
|
||||
public Action<BeatmapInfo> EditRequested;
|
||||
|
||||
public Action<BeatmapInfo> HideDifficultyRequested;
|
||||
|
||||
public void SelectNext(int direction = 1, bool skipDifficulties = true)
|
||||
@ -347,6 +349,7 @@ namespace osu.Game.Screens.Select
|
||||
StartRequested = b => StartRequested?.Invoke(),
|
||||
DeleteRequested = b => DeleteRequested?.Invoke(b),
|
||||
RestoreHiddenRequested = s => RestoreRequested?.Invoke(s),
|
||||
EditRequested = b => EditRequested?.Invoke(b),
|
||||
HideDifficultyRequested = b => HideDifficultyRequested?.Invoke(b),
|
||||
State = BeatmapGroupState.Collapsed
|
||||
};
|
||||
|
@ -19,6 +19,7 @@ using osu.Game.Graphics;
|
||||
using osu.Game.Graphics.Containers;
|
||||
using osu.Game.Overlays;
|
||||
using osu.Game.Screens.Backgrounds;
|
||||
using osu.Game.Screens.Edit;
|
||||
using osu.Game.Screens.Select.Options;
|
||||
|
||||
namespace osu.Game.Screens.Select
|
||||
@ -108,6 +109,7 @@ namespace osu.Game.Screens.Select
|
||||
BeatmapsChanged = carouselBeatmapsLoaded,
|
||||
DeleteRequested = promptDelete,
|
||||
RestoreRequested = s => { foreach (var b in s.Beatmaps) manager.Restore(b); },
|
||||
EditRequested = editRequested,
|
||||
HideDifficultyRequested = b => manager.Hide(b),
|
||||
StartRequested = () => carouselRaisedStart(),
|
||||
});
|
||||
@ -195,6 +197,12 @@ namespace osu.Game.Screens.Select
|
||||
carousel.AllowSelection = !Beatmap.Disabled;
|
||||
}
|
||||
|
||||
private void editRequested(BeatmapInfo beatmap)
|
||||
{
|
||||
Beatmap.Value = manager.GetWorkingBeatmap(beatmap, Beatmap);
|
||||
Push(new Editor());
|
||||
}
|
||||
|
||||
private void onBeatmapRestored(BeatmapInfo b) => carousel.UpdateBeatmap(b);
|
||||
private void onBeatmapHidden(BeatmapInfo b) => carousel.UpdateBeatmap(b);
|
||||
|
||||
|
47
osu.Game/Tests/Visual/TestCaseEditor.cs
Normal file
47
osu.Game/Tests/Visual/TestCaseEditor.cs
Normal file
@ -0,0 +1,47 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Game.Beatmaps;
|
||||
using osu.Game.Screens.Edit;
|
||||
using osu.Game.Screens.Edit.Screens;
|
||||
|
||||
namespace osu.Game.Tests.Visual
|
||||
{
|
||||
public class TestCaseEditor : OsuTestCase
|
||||
{
|
||||
public override IReadOnlyList<Type> RequiredTypes => new[] { typeof(Editor), typeof(EditorScreen) };
|
||||
|
||||
private readonly Random rng;
|
||||
|
||||
private BeatmapManager beatmaps;
|
||||
private OsuGameBase osuGame;
|
||||
|
||||
public TestCaseEditor()
|
||||
{
|
||||
rng = new Random(1337);
|
||||
|
||||
Add(new Editor());
|
||||
AddStep("Next beatmap", nextBeatmap);
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(OsuGameBase osuGame, BeatmapManager beatmaps)
|
||||
{
|
||||
this.osuGame = osuGame;
|
||||
this.beatmaps = beatmaps;
|
||||
}
|
||||
|
||||
private void nextBeatmap()
|
||||
{
|
||||
var sets = beatmaps.GetAllUsableBeatmapSets();
|
||||
if (sets.Count == 0)
|
||||
return;
|
||||
|
||||
BeatmapInfo info = sets[rng.Next(0, sets.Count)].Beatmaps[0];
|
||||
osuGame.Beatmap.Value = beatmaps.GetWorkingBeatmap(info);
|
||||
}
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Framework.Graphics.UserInterface;
|
||||
using osu.Game.Graphics.UserInterface;
|
||||
using osu.Game.Screens.Edit.Menus;
|
||||
|
||||
@ -28,7 +29,7 @@ namespace osu.Game.Tests.Visual
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Items = new[]
|
||||
{
|
||||
new EditorMenuBarItem("File")
|
||||
new MenuItem("File")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
@ -55,7 +56,7 @@ namespace osu.Game.Tests.Visual
|
||||
new EditorMenuItem("Exit"),
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("Timing")
|
||||
new MenuItem("Timing")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
@ -78,7 +79,7 @@ namespace osu.Game.Tests.Visual
|
||||
new EditorMenuItem("Set Current Position as Preview Point"),
|
||||
}
|
||||
},
|
||||
new EditorMenuBarItem("Testing")
|
||||
new MenuItem("Testing")
|
||||
{
|
||||
Items = new[]
|
||||
{
|
||||
|
@ -621,11 +621,14 @@
|
||||
<Compile Include="Screens\Edit\Components\Timelines\Summary\Visualisations\DurationVisualisation.cs" />
|
||||
<Compile Include="Screens\Edit\Components\Timelines\Summary\Visualisations\PointVisualisation.cs" />
|
||||
<Compile Include="Screens\Edit\Components\Timelines\Summary\SummaryTimeline.cs" />
|
||||
<Compile Include="Screens\Edit\Screens\EditorScreenMode.cs" />
|
||||
<Compile Include="Screens\Edit\Menus\EditorMenuBar.cs" />
|
||||
<Compile Include="Screens\Edit\Menus\EditorMenuBarItem.cs" />
|
||||
<Compile Include="Screens\Edit\Menus\EditorMenuItem.cs" />
|
||||
<Compile Include="Screens\Edit\Menus\EditorMenuItemSpacer.cs" />
|
||||
<Compile Include="Screens\Edit\Menus\ScreenSelectionTabControl.cs" />
|
||||
<Compile Include="Screens\Edit\Screens\Design\Design.cs" />
|
||||
<Compile Include="Screens\Edit\Screens\EditorScreen.cs" />
|
||||
<Compile Include="Screens\Edit\Screens\Compose\Compose.cs" />
|
||||
<Compile Include="Screens\Loader.cs" />
|
||||
<Compile Include="Screens\Menu\Button.cs" />
|
||||
<Compile Include="Screens\Menu\ButtonSystem.cs" />
|
||||
@ -751,6 +754,7 @@
|
||||
<Compile Include="Tests\Visual\TestCaseDirect.cs" />
|
||||
<Compile Include="Tests\Visual\TestCaseDrawableRoom.cs" />
|
||||
<Compile Include="Tests\Visual\TestCaseDrawings.cs" />
|
||||
<Compile Include="Tests\Visual\TestCaseEditor.cs" />
|
||||
<Compile Include="Tests\Visual\TestCaseEditorMenuBar.cs" />
|
||||
<Compile Include="Tests\Visual\TestCaseEditorSummaryTimeline.cs" />
|
||||
<Compile Include="Tests\Visual\TestCaseGamefield.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user