mirror of
https://github.com/ppy/osu.git
synced 2024-12-15 20:45:46 +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> HideDifficultyRequested;
|
||||||
|
|
||||||
|
public Action<BeatmapInfo> EditRequested;
|
||||||
|
|
||||||
public BeatmapSetHeader Header;
|
public BeatmapSetHeader Header;
|
||||||
|
|
||||||
public List<BeatmapPanel> BeatmapPanels;
|
public List<BeatmapPanel> BeatmapPanels;
|
||||||
@ -87,7 +89,8 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
Alpha = 0,
|
Alpha = 0,
|
||||||
GainedSelection = panelGainedSelection,
|
GainedSelection = panelGainedSelection,
|
||||||
HideRequested = p => HideDifficultyRequested?.Invoke(p),
|
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,
|
RelativeSizeAxes = Axes.X,
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
|
@ -8,11 +8,15 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.UserInterface;
|
|
||||||
using osu.Game.Screens.Edit.Menus;
|
using osu.Game.Screens.Edit.Menus;
|
||||||
using osu.Game.Screens.Edit.Components.Timelines.Summary;
|
using osu.Game.Screens.Edit.Components.Timelines.Summary;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using osu.Framework.Allocation;
|
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
|
namespace osu.Game.Screens.Edit
|
||||||
{
|
{
|
||||||
@ -23,171 +27,53 @@ namespace osu.Game.Screens.Edit
|
|||||||
internal override bool ShowOverlays => false;
|
internal override bool ShowOverlays => false;
|
||||||
|
|
||||||
private readonly Box bottomBackground;
|
private readonly Box bottomBackground;
|
||||||
|
private readonly Container screenContainer;
|
||||||
|
|
||||||
|
private EditorScreen currentScreen;
|
||||||
|
|
||||||
public Editor()
|
public Editor()
|
||||||
{
|
{
|
||||||
Add(new Container
|
EditorMenuBar menuBar;
|
||||||
|
SummaryTimeline timeline;
|
||||||
|
|
||||||
|
Children = new[]
|
||||||
{
|
{
|
||||||
|
new Container
|
||||||
|
{
|
||||||
|
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,
|
RelativeSizeAxes = Axes.X,
|
||||||
Height = 40,
|
Height = 40,
|
||||||
Children = new Drawable[]
|
Child = menuBar = new EditorMenuBar
|
||||||
{
|
|
||||||
new EditorMenuBar
|
|
||||||
{
|
{
|
||||||
Anchor = Anchor.CentreLeft,
|
Anchor = Anchor.CentreLeft,
|
||||||
Origin = Anchor.CentreLeft,
|
Origin = Anchor.CentreLeft,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Items = new[]
|
Items = new[]
|
||||||
{
|
{
|
||||||
new EditorMenuBarItem("File")
|
new MenuItem("File")
|
||||||
{
|
{
|
||||||
Items = new[]
|
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 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")
|
new Container
|
||||||
{
|
|
||||||
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
|
|
||||||
{
|
{
|
||||||
|
Name = "Bottom bar",
|
||||||
Anchor = Anchor.BottomLeft,
|
Anchor = Anchor.BottomLeft,
|
||||||
Origin = Anchor.BottomLeft,
|
Origin = Anchor.BottomLeft,
|
||||||
RelativeSizeAxes = Axes.X,
|
RelativeSizeAxes = Axes.X,
|
||||||
@ -207,7 +93,7 @@ namespace osu.Game.Screens.Edit
|
|||||||
Spacing = new Vector2(10, 0),
|
Spacing = new Vector2(10, 0),
|
||||||
Children = new[]
|
Children = new[]
|
||||||
{
|
{
|
||||||
summaryTimeline = new SummaryTimeline
|
timeline = new SummaryTimeline
|
||||||
{
|
{
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
@ -218,9 +104,11 @@ namespace osu.Game.Screens.Edit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
},
|
||||||
|
};
|
||||||
|
|
||||||
summaryTimeline.Beatmap.BindTo(Beatmap);
|
timeline.Beatmap.BindTo(Beatmap);
|
||||||
|
menuBar.Mode.ValueChanged += onModeChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
@ -229,6 +117,27 @@ namespace osu.Game.Screens.Edit
|
|||||||
bottomBackground.Colour = colours.Gray2;
|
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)
|
protected override void OnResuming(Screen last)
|
||||||
{
|
{
|
||||||
Beatmap.Value.Track?.Stop();
|
Beatmap.Value.Track?.Stop();
|
||||||
|
@ -11,28 +11,42 @@ using osu.Game.Graphics;
|
|||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
using osu.Framework.Configuration;
|
||||||
|
using osu.Game.Screens.Edit.Screens;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Edit.Menus
|
namespace osu.Game.Screens.Edit.Menus
|
||||||
{
|
{
|
||||||
public class EditorMenuBar : OsuMenu
|
public class EditorMenuBar : OsuMenu
|
||||||
{
|
{
|
||||||
|
public readonly Bindable<EditorScreenMode> Mode = new Bindable<EditorScreenMode>();
|
||||||
|
|
||||||
public EditorMenuBar()
|
public EditorMenuBar()
|
||||||
: base(Direction.Horizontal, true)
|
: base(Direction.Horizontal, true)
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.X;
|
RelativeSizeAxes = Axes.X;
|
||||||
|
|
||||||
|
MaskingContainer.CornerRadius = 0;
|
||||||
ItemsContainer.Padding = new MarginPadding { Left = 100 };
|
ItemsContainer.Padding = new MarginPadding { Left = 100 };
|
||||||
BackgroundColour = OsuColour.FromHex("111");
|
BackgroundColour = OsuColour.FromHex("111");
|
||||||
|
|
||||||
|
ScreenSelectionTabControl tabControl;
|
||||||
AddRangeInternal(new Drawable[]
|
AddRangeInternal(new Drawable[]
|
||||||
{
|
{
|
||||||
new ScreenSelectionTabControl
|
tabControl = new ScreenSelectionTabControl
|
||||||
{
|
{
|
||||||
Anchor = Anchor.BottomRight,
|
Anchor = Anchor.BottomRight,
|
||||||
Origin = Anchor.BottomRight,
|
Origin = Anchor.BottomRight,
|
||||||
X = -15
|
X = -15
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Mode.BindTo(tabControl.Current);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void LoadComplete()
|
||||||
|
{
|
||||||
|
base.LoadComplete();
|
||||||
|
Mode.TriggerChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Framework.Graphics.UserInterface.Menu CreateSubMenu() => new SubMenu();
|
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.Framework.Graphics.UserInterface;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Game.Screens.Edit.Screens;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace osu.Game.Screens.Edit.Menus
|
namespace osu.Game.Screens.Edit.Menus
|
||||||
{
|
{
|
||||||
@ -33,6 +33,8 @@ namespace osu.Game.Screens.Edit.Menus
|
|||||||
Height = 1,
|
Height = 1,
|
||||||
Colour = Color4.White.Opacity(0.2f),
|
Colour = Color4.White.Opacity(0.2f),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Current.Value = EditorScreenMode.Compose;
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[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<BeatmapSetInfo> RestoreRequested;
|
||||||
|
|
||||||
|
public Action<BeatmapInfo> EditRequested;
|
||||||
|
|
||||||
public Action<BeatmapInfo> HideDifficultyRequested;
|
public Action<BeatmapInfo> HideDifficultyRequested;
|
||||||
|
|
||||||
public void SelectNext(int direction = 1, bool skipDifficulties = true)
|
public void SelectNext(int direction = 1, bool skipDifficulties = true)
|
||||||
@ -347,6 +349,7 @@ namespace osu.Game.Screens.Select
|
|||||||
StartRequested = b => StartRequested?.Invoke(),
|
StartRequested = b => StartRequested?.Invoke(),
|
||||||
DeleteRequested = b => DeleteRequested?.Invoke(b),
|
DeleteRequested = b => DeleteRequested?.Invoke(b),
|
||||||
RestoreHiddenRequested = s => RestoreRequested?.Invoke(s),
|
RestoreHiddenRequested = s => RestoreRequested?.Invoke(s),
|
||||||
|
EditRequested = b => EditRequested?.Invoke(b),
|
||||||
HideDifficultyRequested = b => HideDifficultyRequested?.Invoke(b),
|
HideDifficultyRequested = b => HideDifficultyRequested?.Invoke(b),
|
||||||
State = BeatmapGroupState.Collapsed
|
State = BeatmapGroupState.Collapsed
|
||||||
};
|
};
|
||||||
|
@ -19,6 +19,7 @@ using osu.Game.Graphics;
|
|||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Screens.Backgrounds;
|
using osu.Game.Screens.Backgrounds;
|
||||||
|
using osu.Game.Screens.Edit;
|
||||||
using osu.Game.Screens.Select.Options;
|
using osu.Game.Screens.Select.Options;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Select
|
namespace osu.Game.Screens.Select
|
||||||
@ -108,6 +109,7 @@ namespace osu.Game.Screens.Select
|
|||||||
BeatmapsChanged = carouselBeatmapsLoaded,
|
BeatmapsChanged = carouselBeatmapsLoaded,
|
||||||
DeleteRequested = promptDelete,
|
DeleteRequested = promptDelete,
|
||||||
RestoreRequested = s => { foreach (var b in s.Beatmaps) manager.Restore(b); },
|
RestoreRequested = s => { foreach (var b in s.Beatmaps) manager.Restore(b); },
|
||||||
|
EditRequested = editRequested,
|
||||||
HideDifficultyRequested = b => manager.Hide(b),
|
HideDifficultyRequested = b => manager.Hide(b),
|
||||||
StartRequested = () => carouselRaisedStart(),
|
StartRequested = () => carouselRaisedStart(),
|
||||||
});
|
});
|
||||||
@ -195,6 +197,12 @@ namespace osu.Game.Screens.Select
|
|||||||
carousel.AllowSelection = !Beatmap.Disabled;
|
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 onBeatmapRestored(BeatmapInfo b) => carousel.UpdateBeatmap(b);
|
||||||
private void onBeatmapHidden(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 System.Collections.Generic;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Graphics.UserInterface;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Screens.Edit.Menus;
|
using osu.Game.Screens.Edit.Menus;
|
||||||
|
|
||||||
@ -28,7 +29,7 @@ namespace osu.Game.Tests.Visual
|
|||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Items = new[]
|
Items = new[]
|
||||||
{
|
{
|
||||||
new EditorMenuBarItem("File")
|
new MenuItem("File")
|
||||||
{
|
{
|
||||||
Items = new[]
|
Items = new[]
|
||||||
{
|
{
|
||||||
@ -55,7 +56,7 @@ namespace osu.Game.Tests.Visual
|
|||||||
new EditorMenuItem("Exit"),
|
new EditorMenuItem("Exit"),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new EditorMenuBarItem("Timing")
|
new MenuItem("Timing")
|
||||||
{
|
{
|
||||||
Items = new[]
|
Items = new[]
|
||||||
{
|
{
|
||||||
@ -78,7 +79,7 @@ namespace osu.Game.Tests.Visual
|
|||||||
new EditorMenuItem("Set Current Position as Preview Point"),
|
new EditorMenuItem("Set Current Position as Preview Point"),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new EditorMenuBarItem("Testing")
|
new MenuItem("Testing")
|
||||||
{
|
{
|
||||||
Items = new[]
|
Items = new[]
|
||||||
{
|
{
|
||||||
|
@ -621,11 +621,14 @@
|
|||||||
<Compile Include="Screens\Edit\Components\Timelines\Summary\Visualisations\DurationVisualisation.cs" />
|
<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\Visualisations\PointVisualisation.cs" />
|
||||||
<Compile Include="Screens\Edit\Components\Timelines\Summary\SummaryTimeline.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\EditorMenuBar.cs" />
|
||||||
<Compile Include="Screens\Edit\Menus\EditorMenuBarItem.cs" />
|
|
||||||
<Compile Include="Screens\Edit\Menus\EditorMenuItem.cs" />
|
<Compile Include="Screens\Edit\Menus\EditorMenuItem.cs" />
|
||||||
<Compile Include="Screens\Edit\Menus\EditorMenuItemSpacer.cs" />
|
<Compile Include="Screens\Edit\Menus\EditorMenuItemSpacer.cs" />
|
||||||
<Compile Include="Screens\Edit\Menus\ScreenSelectionTabControl.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\Loader.cs" />
|
||||||
<Compile Include="Screens\Menu\Button.cs" />
|
<Compile Include="Screens\Menu\Button.cs" />
|
||||||
<Compile Include="Screens\Menu\ButtonSystem.cs" />
|
<Compile Include="Screens\Menu\ButtonSystem.cs" />
|
||||||
@ -751,6 +754,7 @@
|
|||||||
<Compile Include="Tests\Visual\TestCaseDirect.cs" />
|
<Compile Include="Tests\Visual\TestCaseDirect.cs" />
|
||||||
<Compile Include="Tests\Visual\TestCaseDrawableRoom.cs" />
|
<Compile Include="Tests\Visual\TestCaseDrawableRoom.cs" />
|
||||||
<Compile Include="Tests\Visual\TestCaseDrawings.cs" />
|
<Compile Include="Tests\Visual\TestCaseDrawings.cs" />
|
||||||
|
<Compile Include="Tests\Visual\TestCaseEditor.cs" />
|
||||||
<Compile Include="Tests\Visual\TestCaseEditorMenuBar.cs" />
|
<Compile Include="Tests\Visual\TestCaseEditorMenuBar.cs" />
|
||||||
<Compile Include="Tests\Visual\TestCaseEditorSummaryTimeline.cs" />
|
<Compile Include="Tests\Visual\TestCaseEditorSummaryTimeline.cs" />
|
||||||
<Compile Include="Tests\Visual\TestCaseGamefield.cs" />
|
<Compile Include="Tests\Visual\TestCaseGamefield.cs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user