From 89d7de31eed9d65950e54f3003f1247adf6f4b80 Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Sun, 9 Oct 2016 20:45:34 +0300 Subject: [PATCH 01/20] VolumeControl: add controls for Effects and Music --- osu.Game/VolumeControl.cs | 89 ++++++++++++++++++++------------------- osu.Game/VolumeMeter.cs | 49 +++++++++++++++++++++ osu.Game/osu.Game.csproj | 1 + 3 files changed, 95 insertions(+), 44 deletions(-) create mode 100644 osu.Game/VolumeMeter.cs diff --git a/osu.Game/VolumeControl.cs b/osu.Game/VolumeControl.cs index 0ea9aab67e..79f8712c31 100644 --- a/osu.Game/VolumeControl.cs +++ b/osu.Game/VolumeControl.cs @@ -1,19 +1,18 @@ -using System; -using OpenTK; -using OpenTK.Graphics; -using osu.Framework.Configuration; +using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Drawables; using osu.Framework.Input; using osu.Framework.Graphics.Transformations; +using OpenTK; namespace osu.Game { internal class VolumeControl : Container { - private Box meterFill; - private Container meterContainer; + private FlowContainer volumeMetersContainer; + private VolumeMeter VolumeMeterGlobal; + private VolumeMeter VolumeMeterSample; + private VolumeMeter VolumeMeterTrack; public BindableDouble VolumeGlobal { get; set; } public BindableDouble VolumeSample { get; set; } @@ -29,41 +28,17 @@ namespace osu.Game base.Load(); Children = new Drawable[] { - meterContainer = new Container { + volumeMetersContainer = new FlowContainer() { Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, - Position = new Vector2(10, 10), - Size = new Vector2(40, 180), + Position = new Vector2(10, 30), Alpha = 0, + Padding = new Vector2(15,0), Children = new Drawable[] { - new Box - { - Colour = Color4.Black, - RelativeSizeAxes = Axes.Both, - }, - new Container - { - RelativeSizeAxes = Axes.Both, - Size = new Vector2(0.5f, 0.9f), - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Children = new Drawable[] - { - new Box - { - Colour = Color4.DarkGray, - RelativeSizeAxes = Axes.Both, - }, - meterFill = new Box - { - Colour = Color4.White, - RelativeSizeAxes = Axes.Both, - Origin = Anchor.BottomCentre, - Anchor = Anchor.BottomCentre - }, - } - } + VolumeMeterGlobal = new VolumeMeter("Master"), + VolumeMeterSample= new VolumeMeter("Effects"), + VolumeMeterTrack= new VolumeMeter("Music") } } }; @@ -75,7 +50,19 @@ namespace osu.Game { appear(); - VolumeGlobal.Value -= 0.05f; + if (VolumeMeterSample.Contains(state.Mouse.Position)) + { + VolumeSample.Value -= 0.05f; + } + else if (VolumeMeterTrack.Contains(state.Mouse.Position)) + { + VolumeTrack.Value -= 0.05f; + } + else + { + VolumeGlobal.Value -= 0.05f; + } + updateFill(); return base.OnWheelDown(state); @@ -85,7 +72,19 @@ namespace osu.Game { appear(); - VolumeGlobal.Value += 0.05f; + if (VolumeMeterSample.Contains(state.Mouse.Position)) + { + VolumeSample.Value += 0.05f; + } + else if (VolumeMeterTrack.Contains(state.Mouse.Position)) + { + VolumeTrack.Value += 0.05f; + } + else + { + VolumeGlobal.Value += 0.05f; + } + updateFill(); return base.OnWheelUp(state); @@ -93,15 +92,17 @@ namespace osu.Game private void updateFill() { - meterFill.ScaleTo(new Vector2(1, (float)VolumeGlobal.Value), 300, EasingTypes.OutQuint); + VolumeMeterGlobal.MeterFill.ScaleTo(new Vector2(1, (float)VolumeGlobal.Value), 300, EasingTypes.OutQuint); + VolumeMeterSample.MeterFill.ScaleTo(new Vector2(1, (float)VolumeSample.Value), 300, EasingTypes.OutQuint); + VolumeMeterTrack.MeterFill.ScaleTo(new Vector2(1, (float)VolumeTrack.Value), 300, EasingTypes.OutQuint); } private void appear() { - meterContainer.ClearTransformations(); - meterContainer.FadeIn(100); - meterContainer.Delay(1000); - meterContainer.FadeOut(100); + volumeMetersContainer.ClearTransformations(); + volumeMetersContainer.FadeIn(100); + volumeMetersContainer.Delay(1000); + volumeMetersContainer.FadeOut(100); } } } \ No newline at end of file diff --git a/osu.Game/VolumeMeter.cs b/osu.Game/VolumeMeter.cs new file mode 100644 index 0000000000..9c437e59ae --- /dev/null +++ b/osu.Game/VolumeMeter.cs @@ -0,0 +1,49 @@ +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Drawables; +using osu.Framework.Graphics.Sprites; +using OpenTK; +using OpenTK.Graphics; + +namespace osu.Game +{ + internal class VolumeMeter : Container + { + public Box MeterFill { get; set; } + public VolumeMeter(string meterName) + { + Size = new Vector2(40, 180); + Children = new Drawable[] + { + new Box + { + Colour = Color4.Black, + RelativeSizeAxes = Axes.Both, + }, + new Container + { + RelativeSizeAxes = Axes.Both, + Size = new Vector2(0.5f, 0.9f), + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Children = new Drawable[] + { + new Box + { + Colour = Color4.DarkGray, + RelativeSizeAxes = Axes.Both, + }, + MeterFill = new Box + { + Colour = Color4.White, + RelativeSizeAxes = Axes.Both, + Origin = Anchor.BottomCentre, + Anchor = Anchor.BottomCentre + }, + } + }, + new SpriteText {Text = meterName, Anchor = Anchor.BottomCentre,Origin = Anchor.BottomCentre,Position = new Vector2(0,-20)} + }; + } + } +} \ No newline at end of file diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 7852d68e33..e6cc35ee08 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -133,6 +133,7 @@ + From f3c1c60ab780a23ec5aa03dd7f63bf483609e060 Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Mon, 10 Oct 2016 17:19:05 +0300 Subject: [PATCH 02/20] Change volume in VolumeMeter --- osu.Game/VolumeControl.cs | 57 +++++---------------------------------- osu.Game/VolumeMeter.cs | 33 +++++++++++++++++++++-- 2 files changed, 37 insertions(+), 53 deletions(-) diff --git a/osu.Game/VolumeControl.cs b/osu.Game/VolumeControl.cs index 79f8712c31..fe69cc7b71 100644 --- a/osu.Game/VolumeControl.cs +++ b/osu.Game/VolumeControl.cs @@ -2,7 +2,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input; -using osu.Framework.Graphics.Transformations; using OpenTK; namespace osu.Game @@ -10,10 +9,6 @@ namespace osu.Game internal class VolumeControl : Container { private FlowContainer volumeMetersContainer; - private VolumeMeter VolumeMeterGlobal; - private VolumeMeter VolumeMeterSample; - private VolumeMeter VolumeMeterTrack; - public BindableDouble VolumeGlobal { get; set; } public BindableDouble VolumeSample { get; set; } public BindableDouble VolumeTrack { get; set; } @@ -28,75 +23,35 @@ namespace osu.Game base.Load(); Children = new Drawable[] { - volumeMetersContainer = new FlowContainer() { + volumeMetersContainer = new FlowContainer + { Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, Position = new Vector2(10, 30), Alpha = 0, - Padding = new Vector2(15,0), + Padding = new Vector2(15, 0), Children = new Drawable[] { - VolumeMeterGlobal = new VolumeMeter("Master"), - VolumeMeterSample= new VolumeMeter("Effects"), - VolumeMeterTrack= new VolumeMeter("Music") + new VolumeMeter("Master", VolumeGlobal), + new VolumeMeter("Effects", VolumeSample), + new VolumeMeter("Music", VolumeTrack) } } }; - - updateFill(); } protected override bool OnWheelDown(InputState state) { appear(); - - if (VolumeMeterSample.Contains(state.Mouse.Position)) - { - VolumeSample.Value -= 0.05f; - } - else if (VolumeMeterTrack.Contains(state.Mouse.Position)) - { - VolumeTrack.Value -= 0.05f; - } - else - { - VolumeGlobal.Value -= 0.05f; - } - - updateFill(); - return base.OnWheelDown(state); } protected override bool OnWheelUp(InputState state) { appear(); - - if (VolumeMeterSample.Contains(state.Mouse.Position)) - { - VolumeSample.Value += 0.05f; - } - else if (VolumeMeterTrack.Contains(state.Mouse.Position)) - { - VolumeTrack.Value += 0.05f; - } - else - { - VolumeGlobal.Value += 0.05f; - } - - updateFill(); - return base.OnWheelUp(state); } - private void updateFill() - { - VolumeMeterGlobal.MeterFill.ScaleTo(new Vector2(1, (float)VolumeGlobal.Value), 300, EasingTypes.OutQuint); - VolumeMeterSample.MeterFill.ScaleTo(new Vector2(1, (float)VolumeSample.Value), 300, EasingTypes.OutQuint); - VolumeMeterTrack.MeterFill.ScaleTo(new Vector2(1, (float)VolumeTrack.Value), 300, EasingTypes.OutQuint); - } - private void appear() { volumeMetersContainer.ClearTransformations(); diff --git a/osu.Game/VolumeMeter.cs b/osu.Game/VolumeMeter.cs index 9c437e59ae..218126d3c8 100644 --- a/osu.Game/VolumeMeter.cs +++ b/osu.Game/VolumeMeter.cs @@ -1,7 +1,10 @@ -using osu.Framework.Graphics; +using osu.Framework.Configuration; +using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Drawables; using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Transformations; +using osu.Framework.Input; using OpenTK; using OpenTK.Graphics; @@ -10,8 +13,12 @@ namespace osu.Game internal class VolumeMeter : Container { public Box MeterFill { get; set; } - public VolumeMeter(string meterName) + + public BindableDouble Volume { get; set; } + + public VolumeMeter(string meterName, BindableDouble volume) { + Volume = volume; Size = new Vector2(40, 180); Children = new Drawable[] { @@ -45,5 +52,27 @@ namespace osu.Game new SpriteText {Text = meterName, Anchor = Anchor.BottomCentre,Origin = Anchor.BottomCentre,Position = new Vector2(0,-20)} }; } + + public override void Load() + { + base.Load(); + updateFill(); + } + + protected override bool OnWheelUp(InputState state) + { + Volume.Value += 0.05f; + updateFill(); + return base.OnWheelUp(state); + } + + protected override bool OnWheelDown(InputState state) + { + Volume.Value -= 0.05f; + updateFill(); + return base.OnWheelDown(state); + } + + private void updateFill() => MeterFill.ScaleTo(new Vector2(1, (float)Volume.Value), 300, EasingTypes.OutQuint); } } \ No newline at end of file From 06288d3f7c0c55f41cbfcc1272b04783c904259f Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Wed, 12 Oct 2016 17:36:42 +0300 Subject: [PATCH 03/20] Change "Master" volume if particular meter is not selected. --- osu.Game/VolumeControl.cs | 10 ++++++++-- osu.Game/VolumeMeter.cs | 21 ++++++++++----------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/osu.Game/VolumeControl.cs b/osu.Game/VolumeControl.cs index fe69cc7b71..0317ef3406 100644 --- a/osu.Game/VolumeControl.cs +++ b/osu.Game/VolumeControl.cs @@ -1,4 +1,5 @@ -using osu.Framework.Configuration; +using System.Linq; +using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input; @@ -9,6 +10,7 @@ namespace osu.Game internal class VolumeControl : Container { private FlowContainer volumeMetersContainer; + private VolumeMeter volumeMeterMaster; public BindableDouble VolumeGlobal { get; set; } public BindableDouble VolumeSample { get; set; } public BindableDouble VolumeTrack { get; set; } @@ -32,7 +34,7 @@ namespace osu.Game Padding = new Vector2(15, 0), Children = new Drawable[] { - new VolumeMeter("Master", VolumeGlobal), + volumeMeterMaster = new VolumeMeter("Master", VolumeGlobal), new VolumeMeter("Effects", VolumeSample), new VolumeMeter("Music", VolumeTrack) } @@ -43,12 +45,16 @@ namespace osu.Game protected override bool OnWheelDown(InputState state) { appear(); + if (volumeMetersContainer.Children.All(vm => !vm.Contains(state.Mouse.Position))) + volumeMeterMaster.TriggerWheelDown(state); return base.OnWheelDown(state); } protected override bool OnWheelUp(InputState state) { appear(); + if (volumeMetersContainer.Children.All(vm => !vm.Contains(state.Mouse.Position))) + volumeMeterMaster.TriggerWheelUp(state); return base.OnWheelUp(state); } diff --git a/osu.Game/VolumeMeter.cs b/osu.Game/VolumeMeter.cs index 218126d3c8..0f173ea465 100644 --- a/osu.Game/VolumeMeter.cs +++ b/osu.Game/VolumeMeter.cs @@ -12,20 +12,19 @@ namespace osu.Game { internal class VolumeMeter : Container { - public Box MeterFill { get; set; } - - public BindableDouble Volume { get; set; } + private Box meterFill; + private BindableDouble volume; public VolumeMeter(string meterName, BindableDouble volume) { - Volume = volume; + this.volume = volume; Size = new Vector2(40, 180); Children = new Drawable[] { new Box { Colour = Color4.Black, - RelativeSizeAxes = Axes.Both, + RelativeSizeAxes = Axes.Both }, new Container { @@ -38,15 +37,15 @@ namespace osu.Game new Box { Colour = Color4.DarkGray, - RelativeSizeAxes = Axes.Both, + RelativeSizeAxes = Axes.Both }, - MeterFill = new Box + meterFill = new Box { Colour = Color4.White, RelativeSizeAxes = Axes.Both, Origin = Anchor.BottomCentre, Anchor = Anchor.BottomCentre - }, + } } }, new SpriteText {Text = meterName, Anchor = Anchor.BottomCentre,Origin = Anchor.BottomCentre,Position = new Vector2(0,-20)} @@ -61,18 +60,18 @@ namespace osu.Game protected override bool OnWheelUp(InputState state) { - Volume.Value += 0.05f; + volume.Value += 0.05f; updateFill(); return base.OnWheelUp(state); } protected override bool OnWheelDown(InputState state) { - Volume.Value -= 0.05f; + volume.Value -= 0.05f; updateFill(); return base.OnWheelDown(state); } - private void updateFill() => MeterFill.ScaleTo(new Vector2(1, (float)Volume.Value), 300, EasingTypes.OutQuint); + private void updateFill() => meterFill.ScaleTo(new Vector2(1, (float)volume.Value), 300, EasingTypes.OutQuint); } } \ No newline at end of file From 00db36fdbea4ce1895864fde7b7874380ea52ec1 Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Wed, 12 Oct 2016 20:45:42 +0300 Subject: [PATCH 04/20] Update code in accordance with the code review --- osu.Game/VolumeControl.cs | 16 +++++++--------- osu.Game/VolumeMeter.cs | 11 ++++++----- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/osu.Game/VolumeControl.cs b/osu.Game/VolumeControl.cs index dd789d1934..a63b2147fc 100644 --- a/osu.Game/VolumeControl.cs +++ b/osu.Game/VolumeControl.cs @@ -1,9 +1,9 @@ -using System.Linq; +using osu.Framework; using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Input; -using osu.Framework.Graphics.Transformations; +using OpenTK; namespace osu.Game { @@ -30,8 +30,8 @@ namespace osu.Game Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, Position = new Vector2(10, 30), + Spacing = new Vector2(15,0), Alpha = 0, - Padding = new Vector2(15, 0), Children = new Drawable[] { volumeMeterMaster = new VolumeMeter("Master", VolumeGlobal), @@ -45,17 +45,15 @@ namespace osu.Game protected override bool OnWheelDown(InputState state) { appear(); - if (volumeMetersContainer.Children.All(vm => !vm.Contains(state.Mouse.Position))) - volumeMeterMaster.TriggerWheelDown(state); - return base.OnWheelDown(state); + volumeMeterMaster.TriggerWheelDown(state); + return true; } protected override bool OnWheelUp(InputState state) { appear(); - if (volumeMetersContainer.Children.All(vm => !vm.Contains(state.Mouse.Position))) - volumeMeterMaster.TriggerWheelUp(state); - return base.OnWheelUp(state); + volumeMeterMaster.TriggerWheelUp(state); + return true; } private void appear() diff --git a/osu.Game/VolumeMeter.cs b/osu.Game/VolumeMeter.cs index 0f173ea465..23cd771098 100644 --- a/osu.Game/VolumeMeter.cs +++ b/osu.Game/VolumeMeter.cs @@ -1,4 +1,5 @@ -using osu.Framework.Configuration; +using osu.Framework; +using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Drawables; @@ -52,9 +53,9 @@ namespace osu.Game }; } - public override void Load() + public override void Load(BaseGame game) { - base.Load(); + base.Load(game); updateFill(); } @@ -62,14 +63,14 @@ namespace osu.Game { volume.Value += 0.05f; updateFill(); - return base.OnWheelUp(state); + return true; } protected override bool OnWheelDown(InputState state) { volume.Value -= 0.05f; updateFill(); - return base.OnWheelDown(state); + return true; } private void updateFill() => meterFill.ScaleTo(new Vector2(1, (float)volume.Value), 300, EasingTypes.OutQuint); From 059e2a3c5a239b262ed42de4054d4193495a1400 Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Wed, 12 Oct 2016 22:17:53 +0300 Subject: [PATCH 05/20] Improve appearing of the volume meters --- osu.Game/VolumeControl.cs | 11 +++++++++-- osu.Game/VolumeMeter.cs | 21 +++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/osu.Game/VolumeControl.cs b/osu.Game/VolumeControl.cs index a63b2147fc..fdb7bf1785 100644 --- a/osu.Game/VolumeControl.cs +++ b/osu.Game/VolumeControl.cs @@ -20,9 +20,18 @@ namespace osu.Game RelativeSizeAxes = Axes.Both; } + private void volumeChanged(object sender, System.EventArgs e) + { + appear(); + } + public override void Load(BaseGame game) { base.Load(game); + VolumeGlobal.ValueChanged += volumeChanged; + VolumeSample.ValueChanged += volumeChanged; + VolumeTrack.ValueChanged += volumeChanged; + Children = new Drawable[] { volumeMetersContainer = new FlowContainer @@ -44,14 +53,12 @@ namespace osu.Game protected override bool OnWheelDown(InputState state) { - appear(); volumeMeterMaster.TriggerWheelDown(state); return true; } protected override bool OnWheelUp(InputState state) { - appear(); volumeMeterMaster.TriggerWheelUp(state); return true; } diff --git a/osu.Game/VolumeMeter.cs b/osu.Game/VolumeMeter.cs index 23cd771098..3309b19b12 100644 --- a/osu.Game/VolumeMeter.cs +++ b/osu.Game/VolumeMeter.cs @@ -1,5 +1,4 @@ -using osu.Framework; -using osu.Framework.Configuration; +using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Drawables; @@ -53,26 +52,28 @@ namespace osu.Game }; } - public override void Load(BaseGame game) + public double Volume { - base.Load(game); - updateFill(); + get { return volume.Value; } + private set + { + volume.Value = value; + updateFill(); + } } protected override bool OnWheelUp(InputState state) { - volume.Value += 0.05f; - updateFill(); + Volume += 0.05f; return true; } protected override bool OnWheelDown(InputState state) { - volume.Value -= 0.05f; - updateFill(); + Volume -= 0.05f; return true; } - private void updateFill() => meterFill.ScaleTo(new Vector2(1, (float)volume.Value), 300, EasingTypes.OutQuint); + private void updateFill() => meterFill.ScaleTo(new Vector2(1, (float)Volume), 300, EasingTypes.OutQuint); } } \ No newline at end of file From 80d5fa72431a49613067a0fddf8476234c53c684 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 13 Oct 2016 20:53:42 +0800 Subject: [PATCH 06/20] Specify HitObjectConvertException. --- osu.Game/Beatmaps/Objects/Catch/CatchConverter.cs | 2 +- osu.Game/Beatmaps/Objects/HitObjectConverter.cs | 10 ++++++++++ osu.Game/Beatmaps/Objects/Mania/ManiaConverter.cs | 2 +- osu.Game/Beatmaps/Objects/Taiko/TaikoConverter.cs | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/osu.Game/Beatmaps/Objects/Catch/CatchConverter.cs b/osu.Game/Beatmaps/Objects/Catch/CatchConverter.cs index dbd97e90bc..317a4e9bb1 100644 --- a/osu.Game/Beatmaps/Objects/Catch/CatchConverter.cs +++ b/osu.Game/Beatmaps/Objects/Catch/CatchConverter.cs @@ -25,7 +25,7 @@ namespace osu.Game.Beatmaps.Objects.Catch { OsuBaseHit o = i as OsuBaseHit; - if (o == null) throw new Exception(@"Can't convert!"); + if (o == null) throw new HitObjectConvertException(@"Catch", i); h = new Fruit { diff --git a/osu.Game/Beatmaps/Objects/HitObjectConverter.cs b/osu.Game/Beatmaps/Objects/HitObjectConverter.cs index a70526e85a..723199d8f1 100644 --- a/osu.Game/Beatmaps/Objects/HitObjectConverter.cs +++ b/osu.Game/Beatmaps/Objects/HitObjectConverter.cs @@ -1,6 +1,7 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System; using System.Collections.Generic; namespace osu.Game.Beatmaps.Objects @@ -10,4 +11,13 @@ namespace osu.Game.Beatmaps.Objects { public abstract List Convert(List input); } + public class HitObjectConvertException : Exception + { + public HitObject Input { get; } + public HitObjectConvertException(string modeName, HitObject input) + : base($@"Can't convert from {input.GetType().Name} to {modeName} HitObject!") + { + Input = input; + } + } } diff --git a/osu.Game/Beatmaps/Objects/Mania/ManiaConverter.cs b/osu.Game/Beatmaps/Objects/Mania/ManiaConverter.cs index 22d8f9ae9c..cc03244709 100644 --- a/osu.Game/Beatmaps/Objects/Mania/ManiaConverter.cs +++ b/osu.Game/Beatmaps/Objects/Mania/ManiaConverter.cs @@ -28,7 +28,7 @@ namespace osu.Game.Beatmaps.Objects.Mania { OsuBaseHit o = i as OsuBaseHit; - if (o == null) throw new Exception(@"Can't convert!"); + if (o == null) throw new HitObjectConvertException(@"Mania", i); h = new Note { diff --git a/osu.Game/Beatmaps/Objects/Taiko/TaikoConverter.cs b/osu.Game/Beatmaps/Objects/Taiko/TaikoConverter.cs index 3189a0dec7..d70e8f8406 100644 --- a/osu.Game/Beatmaps/Objects/Taiko/TaikoConverter.cs +++ b/osu.Game/Beatmaps/Objects/Taiko/TaikoConverter.cs @@ -21,7 +21,7 @@ namespace osu.Game.Beatmaps.Objects.Taiko { OsuBaseHit o = i as OsuBaseHit; - if (o == null) throw new Exception(@"Can't convert!"); + if (o == null) throw new HitObjectConvertException(@"Taiko", i); h = new TaikoBaseHit { From 45a92493065ec5ee6d6b732c76e7087062bde40a Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 13 Oct 2016 21:14:18 +0800 Subject: [PATCH 07/20] Move implementation of HitRender.Converter to base class using an abstract Converter property. --- osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs | 7 ++++--- osu.Game/GameModes/Play/HitRenderer.cs | 5 ++++- osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs | 10 +++------- osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs | 7 ++++--- osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs | 7 ++++--- 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs b/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs index d8e5aaaa35..6862759035 100644 --- a/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs +++ b/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs @@ -1,7 +1,6 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System.Collections.Generic; using osu.Framework.Graphics; using osu.Game.Beatmaps.Objects; using osu.Game.Beatmaps.Objects.Catch; @@ -11,9 +10,11 @@ namespace osu.Game.GameModes.Play.Catch { public class CatchHitRenderer : HitRenderer { - protected override Playfield CreatePlayfield() => new CatchPlayfield(); + private static readonly CatchConverter converter = new CatchConverter(); - protected override List Convert(List objects) => new CatchConverter().Convert(objects); + protected override HitObjectConverter Converter => converter; + + protected override Playfield CreatePlayfield() => new CatchPlayfield(); protected override Drawable GetVisualRepresentation(CatchBaseHit h) => new DrawableFruit(h); } diff --git a/osu.Game/GameModes/Play/HitRenderer.cs b/osu.Game/GameModes/Play/HitRenderer.cs index b18d9ebb6d..53cca2072c 100644 --- a/osu.Game/GameModes/Play/HitRenderer.cs +++ b/osu.Game/GameModes/Play/HitRenderer.cs @@ -10,6 +10,7 @@ using osu.Framework; namespace osu.Game.GameModes.Play { public abstract class HitRenderer : Container + where T : HitObject { private List objects; @@ -27,7 +28,9 @@ namespace osu.Game.GameModes.Play protected abstract Playfield CreatePlayfield(); - protected abstract List Convert(List objects); + protected abstract HitObjectConverter Converter { get; } + + protected virtual List Convert(List objects) => Converter.Convert(objects); public override void Load(BaseGame game) { diff --git a/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs b/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs index 302f40878b..ef74fd4a7a 100644 --- a/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs +++ b/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs @@ -1,12 +1,11 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using OpenTK; using osu.Framework.Graphics; using osu.Game.Beatmaps.Objects; using osu.Game.Beatmaps.Objects.Mania; -using OpenTK; using osu.Game.Beatmaps.Objects.Mania.Drawable; -using System.Collections.Generic; namespace osu.Game.GameModes.Play.Mania { @@ -17,13 +16,10 @@ namespace osu.Game.GameModes.Play.Mania public ManiaHitRenderer(int columns = 5) { this.columns = columns; + Converter = new ManiaConverter(columns); } - protected override List Convert(List objects) - { - ManiaConverter converter = new ManiaConverter(columns); - return converter.Convert(objects); - } + protected override HitObjectConverter Converter { get; } protected override Playfield CreatePlayfield() => new ManiaPlayfield(columns); diff --git a/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs b/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs index 130d6d212f..78532b8f25 100644 --- a/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs +++ b/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs @@ -1,7 +1,6 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System.Collections.Generic; using osu.Framework.Graphics; using osu.Game.Beatmaps.Objects; using osu.Game.Beatmaps.Objects.Osu; @@ -11,9 +10,11 @@ namespace osu.Game.GameModes.Play.Osu { public class OsuHitRenderer : HitRenderer { - protected override Playfield CreatePlayfield() => new OsuPlayfield(); + private static readonly OsuConverter converter = new OsuConverter(); - protected override List Convert(List objects) => new OsuConverter().Convert(objects); + protected override HitObjectConverter Converter => converter; + + protected override Playfield CreatePlayfield() => new OsuPlayfield(); protected override Drawable GetVisualRepresentation(OsuBaseHit h) => new DrawableCircle(h); } diff --git a/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs b/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs index 9fab5998f5..54d1eefab1 100644 --- a/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs +++ b/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs @@ -1,7 +1,6 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System.Collections.Generic; using osu.Framework.Graphics; using osu.Game.Beatmaps.Objects; using osu.Game.Beatmaps.Objects.Taiko; @@ -11,10 +10,12 @@ namespace osu.Game.GameModes.Play.Taiko { public class TaikoHitRenderer : HitRenderer { - protected override List Convert(List objects) => new TaikoConverter().Convert(objects); + private static readonly TaikoConverter converter = new TaikoConverter(); + + protected override HitObjectConverter Converter => converter; protected override Playfield CreatePlayfield() => new TaikoPlayfield(); protected override Drawable GetVisualRepresentation(TaikoBaseHit h) => new DrawableTaikoHit(h); } -} \ No newline at end of file +} From aad5c6a44dd8f237e04ea648ded9f1dbf7790da3 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 13 Oct 2016 21:42:51 +0800 Subject: [PATCH 08/20] Use DateTimeOffset for message timestamp. --- osu.Game/Online/Chat/Display/ChatLine.cs | 2 +- osu.Game/Online/Chat/Message.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Online/Chat/Display/ChatLine.cs b/osu.Game/Online/Chat/Display/ChatLine.cs index 5032ff0b9f..92146be0b2 100644 --- a/osu.Game/Online/Chat/Display/ChatLine.cs +++ b/osu.Game/Online/Chat/Display/ChatLine.cs @@ -43,7 +43,7 @@ namespace osu.Game.Online.Chat.Display { new SpriteText { - Text = Message.Timestamp.ToLocalTime().ToLongTimeString(), + Text = Message.Timestamp.LocalDateTime.ToLongTimeString(), TextSize = text_size, Colour = new Color4(128, 128, 128, 255) }, diff --git a/osu.Game/Online/Chat/Message.cs b/osu.Game/Online/Chat/Message.cs index 5b344da22c..9fb9668f64 100644 --- a/osu.Game/Online/Chat/Message.cs +++ b/osu.Game/Online/Chat/Message.cs @@ -18,7 +18,7 @@ namespace osu.Game.Online.Chat public int ChannelId; [JsonProperty(@"timestamp")] - public DateTime Timestamp; + public DateTimeOffset Timestamp; [JsonProperty(@"content")] public string Content; From ac66c0899144e7a46f30bd4d55b90e581f5b9b9b Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Thu, 13 Oct 2016 21:55:49 +0800 Subject: [PATCH 09/20] Make converter per-instance. --- osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs | 4 +--- osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs | 4 +--- osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs b/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs index 6862759035..d086c78956 100644 --- a/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs +++ b/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs @@ -10,9 +10,7 @@ namespace osu.Game.GameModes.Play.Catch { public class CatchHitRenderer : HitRenderer { - private static readonly CatchConverter converter = new CatchConverter(); - - protected override HitObjectConverter Converter => converter; + protected override HitObjectConverter Converter { get; } = new CatchConverter(); protected override Playfield CreatePlayfield() => new CatchPlayfield(); diff --git a/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs b/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs index 78532b8f25..005bcba6c3 100644 --- a/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs +++ b/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs @@ -10,9 +10,7 @@ namespace osu.Game.GameModes.Play.Osu { public class OsuHitRenderer : HitRenderer { - private static readonly OsuConverter converter = new OsuConverter(); - - protected override HitObjectConverter Converter => converter; + protected override HitObjectConverter Converter { get; } = new OsuConverter(); protected override Playfield CreatePlayfield() => new OsuPlayfield(); diff --git a/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs b/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs index 54d1eefab1..1818cb1695 100644 --- a/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs +++ b/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs @@ -10,9 +10,7 @@ namespace osu.Game.GameModes.Play.Taiko { public class TaikoHitRenderer : HitRenderer { - private static readonly TaikoConverter converter = new TaikoConverter(); - - protected override HitObjectConverter Converter => converter; + protected override HitObjectConverter Converter { get; } = new TaikoConverter(); protected override Playfield CreatePlayfield() => new TaikoPlayfield(); From d5cb331eb3ef6dd25546967cb29a67c6ba649abd Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Thu, 13 Oct 2016 17:52:49 +0300 Subject: [PATCH 10/20] Unsubscribe from ValueChanged events --- osu.Game/VolumeControl.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/osu.Game/VolumeControl.cs b/osu.Game/VolumeControl.cs index fdb7bf1785..bc67513fb4 100644 --- a/osu.Game/VolumeControl.cs +++ b/osu.Game/VolumeControl.cs @@ -51,6 +51,14 @@ namespace osu.Game }; } + protected override void Dispose(bool isDisposing) + { + VolumeGlobal.ValueChanged -= volumeChanged; + VolumeSample.ValueChanged -= volumeChanged; + VolumeTrack.ValueChanged -= volumeChanged; + base.Dispose(isDisposing); + } + protected override bool OnWheelDown(InputState state) { volumeMeterMaster.TriggerWheelDown(state); From 8cca8861fa18c4d94db79b9eeb69cf8c822c1343 Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Thu, 13 Oct 2016 19:11:51 +0300 Subject: [PATCH 11/20] Fix formatting --- osu.Game/VolumeMeter.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/VolumeMeter.cs b/osu.Game/VolumeMeter.cs index 3309b19b12..93443d6cfb 100644 --- a/osu.Game/VolumeMeter.cs +++ b/osu.Game/VolumeMeter.cs @@ -48,7 +48,13 @@ namespace osu.Game } } }, - new SpriteText {Text = meterName, Anchor = Anchor.BottomCentre,Origin = Anchor.BottomCentre,Position = new Vector2(0,-20)} + new SpriteText + { + Text = meterName, + Anchor = Anchor.BottomCentre, + Origin = Anchor.BottomCentre, + Position = new Vector2(0,-20) + } }; } From ade925937aecd380a22cd67866043e398c8cb961 Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Fri, 14 Oct 2016 09:46:40 +0300 Subject: [PATCH 12/20] Set text position using Origin property --- osu.Game/VolumeMeter.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/osu.Game/VolumeMeter.cs b/osu.Game/VolumeMeter.cs index 93443d6cfb..121059a380 100644 --- a/osu.Game/VolumeMeter.cs +++ b/osu.Game/VolumeMeter.cs @@ -52,8 +52,7 @@ namespace osu.Game { Text = meterName, Anchor = Anchor.BottomCentre, - Origin = Anchor.BottomCentre, - Position = new Vector2(0,-20) + Origin = Anchor.TopCentre } }; } From cb54d33c6e99694ca1ac36c77a6e4b6ab39c49b8 Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan Date: Fri, 14 Oct 2016 17:48:07 +0800 Subject: [PATCH 13/20] Make converter instance per-convert. --- osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs | 2 +- osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs | 3 +-- osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs | 2 +- osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs b/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs index d086c78956..3de1c34915 100644 --- a/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs +++ b/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs @@ -10,7 +10,7 @@ namespace osu.Game.GameModes.Play.Catch { public class CatchHitRenderer : HitRenderer { - protected override HitObjectConverter Converter { get; } = new CatchConverter(); + protected override HitObjectConverter Converter => new CatchConverter(); protected override Playfield CreatePlayfield() => new CatchPlayfield(); diff --git a/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs b/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs index ef74fd4a7a..93b9a58822 100644 --- a/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs +++ b/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs @@ -16,10 +16,9 @@ namespace osu.Game.GameModes.Play.Mania public ManiaHitRenderer(int columns = 5) { this.columns = columns; - Converter = new ManiaConverter(columns); } - protected override HitObjectConverter Converter { get; } + protected override HitObjectConverter Converter => new ManiaConverter(columns); protected override Playfield CreatePlayfield() => new ManiaPlayfield(columns); diff --git a/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs b/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs index 005bcba6c3..331882da73 100644 --- a/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs +++ b/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs @@ -10,7 +10,7 @@ namespace osu.Game.GameModes.Play.Osu { public class OsuHitRenderer : HitRenderer { - protected override HitObjectConverter Converter { get; } = new OsuConverter(); + protected override HitObjectConverter Converter => new OsuConverter(); protected override Playfield CreatePlayfield() => new OsuPlayfield(); diff --git a/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs b/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs index 1818cb1695..bee74d5451 100644 --- a/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs +++ b/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs @@ -10,7 +10,7 @@ namespace osu.Game.GameModes.Play.Taiko { public class TaikoHitRenderer : HitRenderer { - protected override HitObjectConverter Converter { get; } = new TaikoConverter(); + protected override HitObjectConverter Converter => new TaikoConverter(); protected override Playfield CreatePlayfield() => new TaikoPlayfield(); From 56f914ba47fb4c58681e041bf6bdfa2391f00459 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 14 Oct 2016 23:08:53 +0900 Subject: [PATCH 14/20] Make sure *.cs has CRLF line endings. --- .gitattributes | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitattributes b/.gitattributes index f9cb7c5c9a..60b563a8e8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,8 @@ # This won't normalise line endings, but it will ensure that merge drivers use CRLF * -text eol=crlf +*.cs eol=crlf + # Currently in-use binary file extensions *.blend binary *.bmp binary From 1dbf91eaaf5f107f3c6616171d0aef2d389f4edb Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Fri, 14 Oct 2016 10:11:41 -0400 Subject: [PATCH 15/20] Add Visual Studio code meta files --- .vscode/launch.json | 24 ++++++++++++++++++++++++ .vscode/tasks.json | 26 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..f1682a2ce2 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch", + "type": "mono", + "request": "launch", + "program": "${workspaceRoot}/osu.Desktop.VisualTests/bin/Debug/osu!.exe", + "args": [], + "cwd": "${workspaceRoot}", + "preLaunchTask": "", + "runtimeExecutable": null, + "env": {}, + "externalConsole": false + }, + { + "name": "Attach", + "type": "mono", + "request": "attach", + "address": "localhost", + "port": 55555 + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000000..0c0e79f7fb --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,26 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "0.1.0", + "windows": { + "command": "msbuild" + }, + "linux": { + "command": "xbuild" + }, + "args": [ + // Ask msbuild to generate full paths for file names. + "/property:GenerateFullPaths=true" + ], + "taskSelector": "/t:", + "showOutput": "silent", + "tasks": [ + { + "taskName": "build", + // Show the output window only if unrecognized errors occur. + "showOutput": "silent", + // Use the standard MS compiler pattern to detect errors, warnings and infos + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file From f27c0d9e9191718601c013b098b4056ca6b907b9 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Fri, 14 Oct 2016 10:13:33 -0400 Subject: [PATCH 16/20] Fix .gitattributes This behavior should check out files in the native line ending depending on your platform. --- .gitattributes | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 60b563a8e8..13e9c11fb7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,7 +1,9 @@ # This won't normalise line endings, but it will ensure that merge drivers use CRLF * -text eol=crlf -*.cs eol=crlf +*.cs text=auto +*.csproj text=auto +*.sln text=auto # Currently in-use binary file extensions *.blend binary From 7276038ca75a6a850e22818c9d77be9322bc8205 Mon Sep 17 00:00:00 2001 From: autismpp Date: Fri, 14 Oct 2016 14:09:35 +0300 Subject: [PATCH 17/20] Replace Console.WriteLine with Logger.Log. --- osu.Game/OsuGame.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 65e7045445..684cc42d5a 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -22,6 +22,7 @@ using osu.Game.Input; using OpenTK.Input; using System.IO; using osu.Game.Beatmaps.IO; +using osu.Framework.Logging; namespace osu.Game { @@ -62,10 +63,10 @@ namespace osu.Game if (args.Length == 1 && File.Exists(args[0])) { BeatmapIPC.SendMessage(new ImportBeatmap { Path = args[0] }).Wait(); - Console.WriteLine(@"Sent file to running instance"); + Logger.Log(@"Sent file to running instance"); } else - Console.WriteLine(@"osu! does not support multiple running instances."); + Logger.Log(@"osu! does not support multiple running instances.", LoggingTarget.Runtime, LogLevel.Error); Environment.Exit(0); } @@ -79,7 +80,7 @@ namespace osu.Game catch (Exception ex) { // TODO: Show the user some info? - Console.WriteLine($@"Failed to import beatmap: {ex}"); + Logger.Log($@"Failed to import beatmap: {ex}", LoggingTarget.Runtime, LogLevel.Error); } }; From 01db512d77996dd95e6411ac90fd9843ad4ab412 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 15 Oct 2016 20:43:42 +0900 Subject: [PATCH 18/20] Revert .gitattributes additions for now. --- .gitattributes | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.gitattributes b/.gitattributes index 13e9c11fb7..f9cb7c5c9a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,10 +1,6 @@ # This won't normalise line endings, but it will ensure that merge drivers use CRLF * -text eol=crlf -*.cs text=auto -*.csproj text=auto -*.sln text=auto - # Currently in-use binary file extensions *.blend binary *.bmp binary From 8f5de3040c4063799184d4747981a00841d6ad73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 15 Oct 2016 15:30:51 +0200 Subject: [PATCH 19/20] Update framework. --- osu-framework | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu-framework b/osu-framework index 3629521379..cb420e7f7f 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 3629521379bea5d79cd41e35ad6c6dfe21b4f9e7 +Subproject commit cb420e7f7f4ef9cdda8ae8336d997946384d3732 From 1d8ff5fe4630c3fe27d712683f83b7bda4c1b27d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 15 Oct 2016 15:31:16 +0200 Subject: [PATCH 20/20] Use circular hover region for osu! logo. --- osu.Game/GameModes/Menu/OsuLogo.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/osu.Game/GameModes/Menu/OsuLogo.cs b/osu.Game/GameModes/Menu/OsuLogo.cs index 51446df757..5e98c078a6 100644 --- a/osu.Game/GameModes/Menu/OsuLogo.cs +++ b/osu.Game/GameModes/Menu/OsuLogo.cs @@ -8,6 +8,7 @@ using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Transformations; using osu.Framework.Input; using osu.Framework; +using OpenTK; namespace osu.Game.GameModes.Menu { @@ -16,7 +17,7 @@ namespace osu.Game.GameModes.Menu /// public partial class OsuLogo : AutoSizeContainer { - private Sprite logo; + private SpriteCircular logo; private Container logoBounceContainer; private MenuVisualisation vis; @@ -37,6 +38,11 @@ namespace osu.Game.GameModes.Menu } } + public override bool Contains(Vector2 screenSpacePos) + { + return logo.Contains(screenSpacePos); + } + public bool Interactive = true; public OsuLogo() @@ -50,7 +56,7 @@ namespace osu.Game.GameModes.Menu { Children = new Drawable[] { - logo = new Sprite() + logo = new SpriteCircular() { Anchor = Anchor.Centre, Origin = Anchor.Centre