From e356758a7d5ab629a5ed2a2b6e101c287c754fc5 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 6 Mar 2017 17:06:48 +0900 Subject: [PATCH 1/9] Don't expicitly set origin of TextAwesome. --- osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 2 ++ osu.Game/Graphics/TextAwesome.cs | 5 ----- osu.Game/Graphics/UserInterface/TwoLayerButton.cs | 1 + osu.Game/Overlays/Notifications/Notification.cs | 1 + osu.Game/Overlays/Notifications/SimpleNotification.cs | 1 + osu.Game/Screens/Menu/Button.cs | 1 + osu.Game/Screens/Select/BeatmapInfoWedge.cs | 2 ++ 7 files changed, 8 insertions(+), 5 deletions(-) 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/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/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) }, From 0ee38571a651993478435155532f83fa9befaaac Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 6 Mar 2017 17:09:48 +0900 Subject: [PATCH 2/9] Move version-related properties to OsuGameBase. --- osu.Desktop/OsuGameDesktop.cs | 4 +-- osu.Desktop/Overlays/VersionManager.cs | 27 +++++-------------- osu.Game/OsuGame.cs | 2 -- osu.Game/OsuGameBase.cs | 36 ++++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 25 deletions(-) diff --git a/osu.Desktop/OsuGameDesktop.cs b/osu.Desktop/OsuGameDesktop.cs index d9b9c31617..3f06b0429e 100644 --- a/osu.Desktop/OsuGameDesktop.cs +++ b/osu.Desktop/OsuGameDesktop.cs @@ -17,8 +17,6 @@ namespace osu.Desktop { private VersionManager versionManager; - public override bool IsDeployedBuild => versionManager.IsDeployedBuild; - public OsuGameDesktop(string[] args = null) : base(args) { @@ -44,7 +42,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/OsuGame.cs b/osu.Game/OsuGame.cs index 9f7e3e04dc..98bb70c2c5 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -32,8 +32,6 @@ namespace osu.Game { public class OsuGame : OsuGameBase { - public virtual bool IsDeployedBuild => false; - public Toolbar Toolbar; private ChatOverlay chat; diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 1c34743567..10373e584b 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -1,6 +1,8 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System.Diagnostics; +using System.Reflection; using osu.Framework.Allocation; using osu.Framework.Configuration; using osu.Framework.Graphics; @@ -37,6 +39,40 @@ namespace osu.Game public readonly Bindable Beatmap = new Bindable(); + protected AssemblyName AssemblyName => Assembly.GetEntryAssembly().GetName(); + + public bool IsDeployedBuild => AssemblyName.Version.Major > 0; + + public bool IsDebug + { + get + { + bool isDebug = false; + Debug.Assert(isDebug = true); + return isDebug; + } + } + + public string Version + { + get + { + bool isDebug = false; + Debug.Assert(isDebug = true); + + 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() { From b5aff9df5ffe36792cd44ea7732be647d7347bfe Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 6 Mar 2017 17:20:19 +0900 Subject: [PATCH 3/9] Add options footer. --- osu.Game/Overlays/Options/OptionsFooter.cs | 68 +++++++++++++++++++ .../Options/Sections/MaintenanceSection.cs | 14 ---- osu.Game/Overlays/OptionsOverlay.cs | 3 +- osu.Game/osu.Game.csproj | 1 + 4 files changed, 71 insertions(+), 15 deletions(-) create mode 100644 osu.Game/Overlays/Options/OptionsFooter.cs 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/osu.Game.csproj b/osu.Game/osu.Game.csproj index cf98450307..f38c2f7ba0 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -120,6 +120,7 @@ + From 5ec2db655879befd4cd9079c38a8f9cfa212fb49 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 6 Mar 2017 17:18:31 +0900 Subject: [PATCH 4/9] Fix crash on opening options before intro has played. --- osu.Game/OsuGame.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 9f7e3e04dc..47524f0f68 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -194,7 +194,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) { From 9908c1905d9b56d1697277028ad72c1fa71f5dfc Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 6 Mar 2017 17:21:58 +0900 Subject: [PATCH 5/9] Add keyboard shortcuts at song select for mod/random/options. --- osu.Game/Screens/Select/PlaySongSelect.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 316cc50dae..ce0ee5f74b 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -440,8 +440,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; From 463c887879666d7564612f52f5ff0f5d74d3f3ed Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 6 Mar 2017 17:28:53 +0900 Subject: [PATCH 6/9] Fix WaveOverlayContainer staying visible when hidden. --- osu.Game/Overlays/WaveOverlayContainer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/WaveOverlayContainer.cs b/osu.Game/Overlays/WaveOverlayContainer.cs index 18971a532a..34cf10fe25 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); } @@ -142,7 +142,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) From 1e48b0a03703fac0efe57fd941c83230b5f7bf7b Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 6 Mar 2017 18:36:46 +0900 Subject: [PATCH 7/9] Ensure AssemblyName is never null (seems to be on CI server). --- osu.Game/OsuGameBase.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 10373e584b..77de2a176e 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -1,6 +1,7 @@ // 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; @@ -39,7 +40,7 @@ namespace osu.Game public readonly Bindable Beatmap = new Bindable(); - protected AssemblyName AssemblyName => Assembly.GetEntryAssembly().GetName(); + protected AssemblyName AssemblyName => Assembly.GetEntryAssembly()?.GetName() ?? new AssemblyName() { Version = new Version() }; public bool IsDeployedBuild => AssemblyName.Version.Major > 0; From 9fd16be2d44f79ba43f21ae297adcfdf11c3b090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Mon, 6 Mar 2017 19:59:29 +0100 Subject: [PATCH 8/9] Refactor IsDebug --- osu.Game/OsuGameBase.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 77de2a176e..c592ded666 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -49,6 +49,7 @@ namespace osu.Game get { bool isDebug = false; + // Debug.Assert conditions are only evaluated in debug mode Debug.Assert(isDebug = true); return isDebug; } @@ -58,11 +59,8 @@ namespace osu.Game { get { - bool isDebug = false; - Debug.Assert(isDebug = true); - if (!IsDeployedBuild) - return @"local " + (isDebug ? @"debug" : @"release"); + return @"local " + (IsDebug ? @"debug" : @"release"); var assembly = AssemblyName; return $@"{assembly.Version.Major}.{assembly.Version.Minor}.{assembly.Version.Build}"; From 1fdf865c885f7ac0ddbe18711094905ae3ca7101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Mon, 6 Mar 2017 20:01:36 +0100 Subject: [PATCH 9/9] Update framework --- osu-framework | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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