diff --git a/osu-framework b/osu-framework index 169f0a758c..460a8ce5a4 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 169f0a758c6b565ee42832f99bf4b5303f4413a6 +Subproject commit 460a8ce5a4bcdb64d87725012cb18fbdb7c38f21 diff --git a/osu.Desktop/OsuGameDesktop.cs b/osu.Desktop/OsuGameDesktop.cs index dc9656dc5e..0af48880cb 100644 --- a/osu.Desktop/OsuGameDesktop.cs +++ b/osu.Desktop/OsuGameDesktop.cs @@ -19,8 +19,6 @@ namespace osu.Desktop { private VersionManager versionManager; - public override bool IsDeployedBuild => versionManager.IsDeployedBuild; - public OsuGameDesktop(string[] args = null) : base(args) { @@ -46,7 +44,7 @@ namespace osu.Desktop if (desktopWindow != null) { desktopWindow.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location); - desktopWindow.Title = @"osu!lazer"; + desktopWindow.Title = Name; desktopWindow.DragEnter += dragEnter; desktopWindow.DragDrop += dragDrop; diff --git a/osu.Desktop/Overlays/VersionManager.cs b/osu.Desktop/Overlays/VersionManager.cs index 789fbb6af3..42de05df21 100644 --- a/osu.Desktop/Overlays/VersionManager.cs +++ b/osu.Desktop/Overlays/VersionManager.cs @@ -19,6 +19,7 @@ using OpenTK; using OpenTK.Graphics; using System.Net.Http; using osu.Framework.Logging; +using osu.Game; namespace osu.Desktop.Overlays { @@ -27,16 +28,12 @@ namespace osu.Desktop.Overlays private UpdateManager updateManager; private NotificationManager notificationManager; - AssemblyName assembly = Assembly.GetEntryAssembly().GetName(); - - public bool IsDeployedBuild => assembly.Version.Major > 0; - protected override bool HideOnEscape => false; public override bool HandleInput => false; [BackgroundDependencyLoader] - private void load(NotificationManager notification, OsuColour colours, TextureStore textures) + private void load(NotificationManager notification, OsuColour colours, TextureStore textures, OsuGameBase game) { notificationManager = notification; @@ -45,17 +42,6 @@ namespace osu.Desktop.Overlays Origin = Anchor.BottomCentre; Alpha = 0; - bool isDebug = false; - Debug.Assert(isDebug = true); - - string version; - if (!IsDeployedBuild) - { - version = @"local " + (isDebug ? @"debug" : @"release"); - } - else - version = $@"{assembly.Version.Major}.{assembly.Version.Minor}.{assembly.Version.Build}"; - Children = new Drawable[] { new FillFlowContainer @@ -76,12 +62,12 @@ namespace osu.Desktop.Overlays new OsuSpriteText { Font = @"Exo2.0-Bold", - Text = $@"osu!lazer" + Text = game.Name }, new OsuSpriteText { - Colour = isDebug ? colours.Red : Color4.White, - Text = version + Colour = game.IsDebug ? colours.Red : Color4.White, + Text = game.Version }, } }, @@ -104,7 +90,7 @@ namespace osu.Desktop.Overlays } }; - if (IsDeployedBuild) + if (game.IsDeployedBuild) checkForUpdateAsync(); } @@ -228,6 +214,7 @@ namespace osu.Desktop.Overlays new TextAwesome { Anchor = Anchor.Centre, + Origin = Anchor.Centre, Icon = FontAwesome.fa_upload, Colour = Color4.White, } diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs index e0e390fcb1..5680c49620 100644 --- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs +++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs @@ -34,6 +34,7 @@ namespace osu.Game.Beatmaps.Drawables new TextAwesome { Anchor = Anchor.Centre, + Origin = Anchor.Centre, TextSize = Size.X, Colour = getColour(beatmap), Icon = FontAwesome.fa_circle @@ -41,6 +42,7 @@ namespace osu.Game.Beatmaps.Drawables new TextAwesome { Anchor = Anchor.Centre, + Origin = Anchor.Centre, TextSize = Size.X, Colour = Color4.White, Icon = Ruleset.GetRuleset(beatmap.Mode).Icon diff --git a/osu.Game/Graphics/TextAwesome.cs b/osu.Game/Graphics/TextAwesome.cs index 13d3cbc8c3..45f9ddeec9 100644 --- a/osu.Game/Graphics/TextAwesome.cs +++ b/osu.Game/Graphics/TextAwesome.cs @@ -26,11 +26,6 @@ namespace osu.Game.Graphics Text = ((char)icon).ToString(); } } - - public TextAwesome() - { - Origin = Framework.Graphics.Anchor.Centre; - } } public enum FontAwesome diff --git a/osu.Game/Graphics/UserInterface/TwoLayerButton.cs b/osu.Game/Graphics/UserInterface/TwoLayerButton.cs index 81cb94ce12..8221ef952f 100644 --- a/osu.Game/Graphics/UserInterface/TwoLayerButton.cs +++ b/osu.Game/Graphics/UserInterface/TwoLayerButton.cs @@ -98,6 +98,7 @@ namespace osu.Game.Graphics.UserInterface icon = new TextAwesome { Anchor = Anchor.Centre, + Origin = Anchor.Centre, TextSize = 25, }, } diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 79be419aa6..563f898b0f 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -34,8 +34,6 @@ namespace osu.Game { public class OsuGame : OsuGameBase { - public virtual bool IsDeployedBuild => false; - public Toolbar Toolbar; private ChatOverlay chat; @@ -228,7 +226,7 @@ namespace osu.Game private bool globalHotkeyPressed(InputState state, KeyDownEventArgs args) { - if (args.Repeat) return false; + if (args.Repeat || intro == null) return false; switch (args.Key) { diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 7730fa263c..6f9f070c9f 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -1,6 +1,9 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System; +using System.Diagnostics; +using System.Reflection; using osu.Framework.Allocation; using osu.Framework.Configuration; using osu.Framework.Graphics; @@ -39,6 +42,38 @@ namespace osu.Game public readonly Bindable Beatmap = new Bindable(); + protected AssemblyName AssemblyName => Assembly.GetEntryAssembly()?.GetName() ?? new AssemblyName() { Version = new Version() }; + + public bool IsDeployedBuild => AssemblyName.Version.Major > 0; + + public bool IsDebug + { + get + { + bool isDebug = false; + // Debug.Assert conditions are only evaluated in debug mode + Debug.Assert(isDebug = true); + return isDebug; + } + } + + public string Version + { + get + { + if (!IsDeployedBuild) + return @"local " + (IsDebug ? @"debug" : @"release"); + + var assembly = AssemblyName; + return $@"{assembly.Version.Major}.{assembly.Version.Minor}.{assembly.Version.Build}"; + } + } + + public OsuGameBase() + { + Name = @"osu!lazer"; + } + [BackgroundDependencyLoader] private void load() { diff --git a/osu.Game/Overlays/Notifications/Notification.cs b/osu.Game/Overlays/Notifications/Notification.cs index 9a51c6d6ae..ab929ccc0e 100644 --- a/osu.Game/Overlays/Notifications/Notification.cs +++ b/osu.Game/Overlays/Notifications/Notification.cs @@ -176,6 +176,7 @@ namespace osu.Game.Overlays.Notifications new TextAwesome { Anchor = Anchor.Centre, + Origin = Anchor.Centre, Icon = FontAwesome.fa_times_circle, } }; diff --git a/osu.Game/Overlays/Notifications/SimpleNotification.cs b/osu.Game/Overlays/Notifications/SimpleNotification.cs index c9c56e8d4a..0a33e2f416 100644 --- a/osu.Game/Overlays/Notifications/SimpleNotification.cs +++ b/osu.Game/Overlays/Notifications/SimpleNotification.cs @@ -51,6 +51,7 @@ namespace osu.Game.Overlays.Notifications iconDrawable = new TextAwesome { Anchor = Anchor.Centre, + Origin = Anchor.Centre, Icon = icon, } }); diff --git a/osu.Game/Overlays/Options/OptionsFooter.cs b/osu.Game/Overlays/Options/OptionsFooter.cs new file mode 100644 index 0000000000..23622aef08 --- /dev/null +++ b/osu.Game/Overlays/Options/OptionsFooter.cs @@ -0,0 +1,68 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// 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.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Primitives; +using osu.Game.Graphics; +using osu.Game.Graphics.Sprites; +using osu.Game.Modes; +using OpenTK; +using OpenTK.Graphics; + +namespace osu.Game.Overlays.Options +{ + public class OptionsFooter : FillFlowContainer + { + [BackgroundDependencyLoader] + private void load(OsuGameBase game, OsuColour colours) + { + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; + Direction = FillDirection.Vertical; + Padding = new MarginPadding { Top = 20, Bottom = 30 }; + + var modes = new List(); + + foreach (PlayMode m in Enum.GetValues(typeof(PlayMode))) + modes.Add(new TextAwesome + { + Icon = Ruleset.GetRuleset(m).Icon, + Colour = Color4.Gray, + }); + + Children = new Drawable[] + { + new FillFlowContainer + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + Direction = FillDirection.Full, + AutoSizeAxes = Axes.Both, + Children = modes, + Spacing = new Vector2(5), + Padding = new MarginPadding { Bottom = 10 }, + }, + new OsuSpriteText + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + Text = game.Name, + TextSize = 18, + Font = @"Exo2.0-Bold", + }, + new OsuSpriteText + { + Anchor = Anchor.TopCentre, + Origin = Anchor.TopCentre, + TextSize = 14, + Text = game.Version, + Colour = game.IsDebug ? colours.Red : Color4.White, + }, + }; + } + } +} \ No newline at end of file diff --git a/osu.Game/Overlays/Options/Sections/MaintenanceSection.cs b/osu.Game/Overlays/Options/Sections/MaintenanceSection.cs index 6aa9b66f5c..30695eb963 100644 --- a/osu.Game/Overlays/Options/Sections/MaintenanceSection.cs +++ b/osu.Game/Overlays/Options/Sections/MaintenanceSection.cs @@ -39,20 +39,6 @@ namespace osu.Game.Overlays.Options.Sections RelativeSizeAxes = Axes.X, Text = "Run osu! updater", }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Children = new[] - { - new OptionLabel - { - Text = "osu!lazer", - Anchor = Anchor.TopCentre, - Origin = Anchor.TopCentre, - }, - } - } }; } } diff --git a/osu.Game/Overlays/OptionsOverlay.cs b/osu.Game/Overlays/OptionsOverlay.cs index 89a2d029f6..04048dcf98 100644 --- a/osu.Game/Overlays/OptionsOverlay.cs +++ b/osu.Game/Overlays/OptionsOverlay.cs @@ -100,7 +100,8 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.X, Direction = FillDirection.Vertical, Children = sections, - } + }, + new OptionsFooter() } } } diff --git a/osu.Game/Overlays/WaveOverlayContainer.cs b/osu.Game/Overlays/WaveOverlayContainer.cs index 52de28521e..747b46aecc 100644 --- a/osu.Game/Overlays/WaveOverlayContainer.cs +++ b/osu.Game/Overlays/WaveOverlayContainer.cs @@ -134,7 +134,7 @@ namespace osu.Game.Overlays foreach (var w in wavesContainer.Children) w.State = Visibility.Visible; - contentContainer.FadeIn(APPEAR_DURATION, EasingTypes.OutQuint); + FadeIn(100, EasingTypes.OutQuint); contentContainer.MoveToY(0, APPEAR_DURATION, EasingTypes.OutQuint); FadeIn(100, EasingTypes.OutQuint); @@ -144,7 +144,7 @@ namespace osu.Game.Overlays { base.PopOut(); - contentContainer.FadeOut(DISAPPEAR_DURATION, EasingTypes.In); + FadeOut(DISAPPEAR_DURATION, EasingTypes.InQuint); contentContainer.MoveToY(DrawHeight * 2f, DISAPPEAR_DURATION, EasingTypes.In); foreach (var w in wavesContainer.Children) diff --git a/osu.Game/Screens/Menu/Button.cs b/osu.Game/Screens/Menu/Button.cs index 4954fd9366..d9992ea3bf 100644 --- a/osu.Game/Screens/Menu/Button.cs +++ b/osu.Game/Screens/Menu/Button.cs @@ -108,6 +108,7 @@ namespace osu.Game.Screens.Menu { Shadow = true, Anchor = Anchor.Centre, + Origin = Anchor.Centre, TextSize = 30, Position = new Vector2(0, 0), Icon = symbol diff --git a/osu.Game/Screens/Select/BeatmapInfoWedge.cs b/osu.Game/Screens/Select/BeatmapInfoWedge.cs index 393019f7eb..4c488444b6 100644 --- a/osu.Game/Screens/Select/BeatmapInfoWedge.cs +++ b/osu.Game/Screens/Select/BeatmapInfoWedge.cs @@ -209,12 +209,14 @@ namespace osu.Game.Screens.Select new TextAwesome { Icon = FontAwesome.fa_square, + Origin = Anchor.Centre, Colour = new Color4(68, 17, 136, 255), Rotation = 45 }, new TextAwesome { Icon = statistic.Icon, + Origin = Anchor.Centre, Colour = new Color4(255, 221, 85, 255), Scale = new Vector2(0.8f) }, diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 14e84af03a..018dc0c277 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -443,8 +443,19 @@ namespace osu.Game.Screens.Select protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) { + if (args.Repeat) return false; + switch (args.Key) { + case Key.F1: + modSelect.ToggleVisibility(); + return true; + case Key.F2: + carousel.SelectRandom(); + return true; + case Key.F3: + beatmapOptions.ToggleVisibility(); + return true; case Key.Enter: footer.StartButton.TriggerClick(); return true; diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 139506b3a1..34e1c4ddf2 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -132,6 +132,7 @@ +