From 1fb846e61d3ccdaeb54024ed567e001de36131df Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 7 Mar 2017 15:43:44 +0900 Subject: [PATCH 1/8] Make playfield scaling optional. --- osu.Game.Modes.Osu/UI/OsuPlayfield.cs | 4 ++-- osu.Game/Modes/UI/Playfield.cs | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/osu.Game.Modes.Osu/UI/OsuPlayfield.cs b/osu.Game.Modes.Osu/UI/OsuPlayfield.cs index 41abb4736f..cda90d30c7 100644 --- a/osu.Game.Modes.Osu/UI/OsuPlayfield.cs +++ b/osu.Game.Modes.Osu/UI/OsuPlayfield.cs @@ -32,7 +32,7 @@ namespace osu.Game.Modes.Osu.UI } } - public OsuPlayfield() + public OsuPlayfield() : base(512) { Anchor = Anchor.Centre; Origin = Anchor.Centre; @@ -83,7 +83,7 @@ namespace osu.Game.Modes.Osu.UI public override void PostProcess() { connectionLayer.HitObjects = HitObjects.Children - .Select(d => (OsuHitObject)d.HitObject) + .Select(d => d.HitObject) .OrderBy(h => h.StartTime); } diff --git a/osu.Game/Modes/UI/Playfield.cs b/osu.Game/Modes/UI/Playfield.cs index 502e072603..7f892661c0 100644 --- a/osu.Game/Modes/UI/Playfield.cs +++ b/osu.Game/Modes/UI/Playfield.cs @@ -2,12 +2,12 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Allocation; -using OpenTK; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Modes.Objects; using osu.Game.Modes.Objects.Drawables; using osu.Game.Screens.Play; +using OpenTK; namespace osu.Game.Modes.UI { @@ -18,22 +18,21 @@ namespace osu.Game.Modes.UI public virtual void Add(DrawableHitObject h) => HitObjects.Add(h); - public class HitObjectContainer : Container - where U : Drawable - { - public override bool Contains(Vector2 screenSpacePos) => true; - } - private Container scaledContent; public override bool Contains(Vector2 screenSpacePos) => true; protected override Container Content { get; } - public Playfield() + /// + /// A container for keeping track of DrawableHitObjects. + /// + /// Whether we want our internal coordinate system to be scaled to a specified width. + protected Playfield(float? customWidth = null) { AddInternal(scaledContent = new ScaledContainer { + CustomWidth = customWidth, RelativeSizeAxes = Axes.Both, Children = new[] { @@ -71,14 +70,16 @@ namespace osu.Game.Modes.UI { } - public class ScaledContainer : Container + private class ScaledContainer : Container { - protected override Vector2 DrawScale => new Vector2(DrawSize.X / 512); + public float? CustomWidth; + + protected override Vector2 DrawScale => CustomWidth.HasValue ? new Vector2(DrawSize.X / CustomWidth.Value) : base.DrawScale; public override bool Contains(Vector2 screenSpacePos) => true; } - public class HitObjectContainer : Container + public class HitObjectContainer : Container where U : Drawable { public override bool Contains(Vector2 screenSpacePos) => true; } From 02cab41d34ea4df6f1d1458c008bc904b693a244 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 7 Mar 2017 19:30:39 +0900 Subject: [PATCH 2/8] Move InputManager to a higher and more implicit level. Also makes KeyCounterCollection work with replays. --- osu.Game.Modes.Catch/CatchRuleset.cs | 4 +-- osu.Game.Modes.Mania/ManiaRuleset.cs | 4 +-- osu.Game.Modes.Osu/OsuRuleset.cs | 4 +-- osu.Game.Modes.Osu/UI/OsuPlayfield.cs | 3 +- osu.Game.Modes.Taiko/TaikoRuleset.cs | 4 +-- osu.Game/Modes/Ruleset.cs | 3 +- osu.Game/Modes/UI/HitRenderer.cs | 32 +++++++++++++---- osu.Game/Modes/UI/Playfield.cs | 23 ++----------- osu.Game/Modes/UI/ScoreOverlay.cs | 8 ++++- osu.Game/Screens/Play/KeyCounterCollection.cs | 34 +++++++++++++++++++ osu.Game/Screens/Play/Player.cs | 15 +++++--- osu.Game/Screens/Play/PlayerInputManager.cs | 3 -- 12 files changed, 84 insertions(+), 53 deletions(-) diff --git a/osu.Game.Modes.Catch/CatchRuleset.cs b/osu.Game.Modes.Catch/CatchRuleset.cs index 16c9114c66..43f9b97112 100644 --- a/osu.Game.Modes.Catch/CatchRuleset.cs +++ b/osu.Game.Modes.Catch/CatchRuleset.cs @@ -8,7 +8,6 @@ using osu.Game.Modes.Objects; using osu.Game.Modes.Osu.UI; using osu.Game.Modes.UI; using osu.Game.Beatmaps; -using osu.Game.Screens.Play; namespace osu.Game.Modes.Catch { @@ -16,10 +15,9 @@ namespace osu.Game.Modes.Catch { public override ScoreOverlay CreateScoreOverlay() => new OsuScoreOverlay(); - public override HitRenderer CreateHitRendererWith(Beatmap beatmap, PlayerInputManager input = null) => new CatchHitRenderer + public override HitRenderer CreateHitRendererWith(Beatmap beatmap) => new CatchHitRenderer { Beatmap = beatmap, - InputManager = input, }; public override IEnumerable GetModsFor(ModType type) diff --git a/osu.Game.Modes.Mania/ManiaRuleset.cs b/osu.Game.Modes.Mania/ManiaRuleset.cs index d4b5ecad22..eb900aafc7 100644 --- a/osu.Game.Modes.Mania/ManiaRuleset.cs +++ b/osu.Game.Modes.Mania/ManiaRuleset.cs @@ -8,7 +8,6 @@ using osu.Game.Modes.Objects; using osu.Game.Modes.Osu.UI; using osu.Game.Modes.UI; using osu.Game.Beatmaps; -using osu.Game.Screens.Play; namespace osu.Game.Modes.Mania { @@ -16,10 +15,9 @@ namespace osu.Game.Modes.Mania { public override ScoreOverlay CreateScoreOverlay() => new OsuScoreOverlay(); - public override HitRenderer CreateHitRendererWith(Beatmap beatmap, PlayerInputManager input = null) => new ManiaHitRenderer + public override HitRenderer CreateHitRendererWith(Beatmap beatmap) => new ManiaHitRenderer { Beatmap = beatmap, - InputManager = input, }; public override IEnumerable GetModsFor(ModType type) diff --git a/osu.Game.Modes.Osu/OsuRuleset.cs b/osu.Game.Modes.Osu/OsuRuleset.cs index b58dc70b16..9de4f1ea97 100644 --- a/osu.Game.Modes.Osu/OsuRuleset.cs +++ b/osu.Game.Modes.Osu/OsuRuleset.cs @@ -9,7 +9,6 @@ using osu.Game.Modes.Objects; using osu.Game.Modes.Osu.Objects; using osu.Game.Modes.Osu.UI; using osu.Game.Modes.UI; -using osu.Game.Screens.Play; namespace osu.Game.Modes.Osu { @@ -17,10 +16,9 @@ namespace osu.Game.Modes.Osu { public override ScoreOverlay CreateScoreOverlay() => new OsuScoreOverlay(); - public override HitRenderer CreateHitRendererWith(Beatmap beatmap, PlayerInputManager input = null) => new OsuHitRenderer + public override HitRenderer CreateHitRendererWith(Beatmap beatmap) => new OsuHitRenderer { Beatmap = beatmap, - InputManager = input }; public override IEnumerable GetBeatmapStatistics(WorkingBeatmap beatmap) => new[] diff --git a/osu.Game.Modes.Osu/UI/OsuPlayfield.cs b/osu.Game.Modes.Osu/UI/OsuPlayfield.cs index cda90d30c7..849d7e74d6 100644 --- a/osu.Game.Modes.Osu/UI/OsuPlayfield.cs +++ b/osu.Game.Modes.Osu/UI/OsuPlayfield.cs @@ -62,8 +62,7 @@ namespace osu.Game.Modes.Osu.UI protected override void LoadComplete() { base.LoadComplete(); - if (InputManager?.ReplayInputHandler != null) - Add(new OsuCursorContainer { Colour = Color4.LightYellow }); + AddInternal(new OsuCursorContainer { Colour = Color4.LightYellow }); } public override void Add(DrawableHitObject h) diff --git a/osu.Game.Modes.Taiko/TaikoRuleset.cs b/osu.Game.Modes.Taiko/TaikoRuleset.cs index 73e65a2734..f023f25a87 100644 --- a/osu.Game.Modes.Taiko/TaikoRuleset.cs +++ b/osu.Game.Modes.Taiko/TaikoRuleset.cs @@ -8,7 +8,6 @@ using osu.Game.Modes.Osu.UI; using osu.Game.Modes.Taiko.UI; using osu.Game.Modes.UI; using osu.Game.Beatmaps; -using osu.Game.Screens.Play; namespace osu.Game.Modes.Taiko { @@ -16,10 +15,9 @@ namespace osu.Game.Modes.Taiko { public override ScoreOverlay CreateScoreOverlay() => new OsuScoreOverlay(); - public override HitRenderer CreateHitRendererWith(Beatmap beatmap, PlayerInputManager input = null) => new TaikoHitRenderer + public override HitRenderer CreateHitRendererWith(Beatmap beatmap) => new TaikoHitRenderer { Beatmap = beatmap, - InputManager = input, }; public override IEnumerable GetModsFor(ModType type) diff --git a/osu.Game/Modes/Ruleset.cs b/osu.Game/Modes/Ruleset.cs index e145e60b97..fefba6caf8 100644 --- a/osu.Game/Modes/Ruleset.cs +++ b/osu.Game/Modes/Ruleset.cs @@ -8,7 +8,6 @@ using System; using System.Collections.Concurrent; using osu.Game.Beatmaps; using osu.Game.Graphics; -using osu.Game.Screens.Play; namespace osu.Game.Modes { @@ -31,7 +30,7 @@ namespace osu.Game.Modes public abstract ScoreProcessor CreateScoreProcessor(int hitObjectCount = 0); - public abstract HitRenderer CreateHitRendererWith(Beatmap beatmap, PlayerInputManager input = null); + public abstract HitRenderer CreateHitRendererWith(Beatmap beatmap); public abstract HitObjectParser CreateHitObjectParser(); diff --git a/osu.Game/Modes/UI/HitRenderer.cs b/osu.Game/Modes/UI/HitRenderer.cs index cf5c2460d2..fb28dd6c47 100644 --- a/osu.Game/Modes/UI/HitRenderer.cs +++ b/osu.Game/Modes/UI/HitRenderer.cs @@ -11,6 +11,7 @@ using osu.Game.Modes.Objects; using osu.Game.Modes.Objects.Drawables; using osu.Game.Beatmaps; using osu.Game.Screens.Play; +using OpenTK; namespace osu.Game.Modes.UI { @@ -20,6 +21,13 @@ namespace osu.Game.Modes.UI public event Action OnAllJudged; + internal readonly PlayerInputManager InputManager = new PlayerInputManager(); + + /// + /// A function to convert coordinates from gamefield to screen space. + /// + public abstract Func MapPlayfieldToScreenSpace { get; } + public abstract bool AllObjectsJudged { get; } protected void TriggerOnJudgement(JudgementInfo j) @@ -35,10 +43,10 @@ namespace osu.Game.Modes.UI { private List objects; - public PlayerInputManager InputManager; - protected Playfield Playfield; + public override Func MapPlayfieldToScreenSpace => Playfield.ScaledContent.ToScreenSpace; + public override bool AllObjectsJudged => Playfield.HitObjects.Children.First()?.Judgement.Result != null; //reverse depth sort means First() instead of Last(). public IEnumerable DrawableObjects => Playfield.HitObjects.Children; @@ -62,16 +70,26 @@ namespace osu.Game.Modes.UI protected HitRenderer() { RelativeSizeAxes = Axes.Both; + + InputManager.Add(content = new Container + { + RelativeSizeAxes = Axes.Both, + Children = new[] + { + Playfield = CreatePlayfield(), + } + }); + + AddInternal(InputManager); } + protected override Container Content => content; + + private Container content; + [BackgroundDependencyLoader] private void load() { - Playfield = CreatePlayfield(); - Playfield.InputManager = InputManager; - - Add(Playfield); - loadObjects(); } diff --git a/osu.Game/Modes/UI/Playfield.cs b/osu.Game/Modes/UI/Playfield.cs index 7f892661c0..670ee2eea0 100644 --- a/osu.Game/Modes/UI/Playfield.cs +++ b/osu.Game/Modes/UI/Playfield.cs @@ -1,12 +1,10 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Modes.Objects; using osu.Game.Modes.Objects.Drawables; -using osu.Game.Screens.Play; using OpenTK; namespace osu.Game.Modes.UI @@ -18,7 +16,7 @@ namespace osu.Game.Modes.UI public virtual void Add(DrawableHitObject h) => HitObjects.Add(h); - private Container scaledContent; + internal Container ScaledContent; public override bool Contains(Vector2 screenSpacePos) => true; @@ -30,7 +28,7 @@ namespace osu.Game.Modes.UI /// Whether we want our internal coordinate system to be scaled to a specified width. protected Playfield(float? customWidth = null) { - AddInternal(scaledContent = new ScaledContainer + AddInternal(ScaledContent = new ScaledContainer { CustomWidth = customWidth, RelativeSizeAxes = Axes.Both, @@ -49,23 +47,6 @@ namespace osu.Game.Modes.UI }); } - /// - /// An optional inputManager to provide interactivity etc. - /// - public PlayerInputManager InputManager; - - [BackgroundDependencyLoader] - private void load() - { - if (InputManager != null) - { - //if we've been provided an InputManager, we want it to sit inside the scaledcontainer - scaledContent.Remove(Content); - scaledContent.Add(InputManager); - InputManager.Add(Content); - } - } - public virtual void PostProcess() { } diff --git a/osu.Game/Modes/UI/ScoreOverlay.cs b/osu.Game/Modes/UI/ScoreOverlay.cs index 66c361fcda..09f34d4c2e 100644 --- a/osu.Game/Modes/UI/ScoreOverlay.cs +++ b/osu.Game/Modes/UI/ScoreOverlay.cs @@ -81,11 +81,17 @@ namespace osu.Game.Modes.UI public void BindProcessor(ScoreProcessor processor) { - //bind processor bindables to combocounter, score display etc. + //bind processor bindables to combocounter, score display etc. + //TODO: these should be bindable binds, not events! processor.TotalScore.ValueChanged += delegate { ScoreCounter?.Set((ulong)processor.TotalScore.Value); }; processor.Accuracy.ValueChanged += delegate { AccuracyCounter?.Set((float)processor.Accuracy.Value); }; processor.Combo.ValueChanged += delegate { ComboCounter?.Set((ulong)processor.Combo.Value); }; HealthDisplay?.Current.BindTo(processor.Health); } + + public void BindHitRenderer(HitRenderer hitRenderer) + { + hitRenderer.InputManager.Add(KeyCounter.GetReceptor()); + } } } diff --git a/osu.Game/Screens/Play/KeyCounterCollection.cs b/osu.Game/Screens/Play/KeyCounterCollection.cs index b144db8626..aa2bf47227 100644 --- a/osu.Game/Screens/Play/KeyCounterCollection.cs +++ b/osu.Game/Screens/Play/KeyCounterCollection.cs @@ -1,10 +1,12 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System.Linq; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using OpenTK; using OpenTK.Graphics; +using osu.Framework.Input; namespace osu.Game.Screens.Play { @@ -93,5 +95,37 @@ namespace osu.Game.Screens.Play } } } + + public override bool HandleInput => receptor?.IsAlive != true; + + private Receptor receptor; + + public Receptor GetReceptor() + { + return receptor ?? (receptor = new Receptor(this)); + } + + public class Receptor : Drawable + { + private KeyCounterCollection target; + + public Receptor(KeyCounterCollection target) + { + RelativeSizeAxes = Axes.Both; + this.target = target; + } + + public override bool Contains(Vector2 screenSpacePos) => true; + + public override bool HandleInput => true; + + protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) => target.Children.Any(c => c.TriggerKeyDown(state, args)); + + protected override bool OnKeyUp(InputState state, KeyUpEventArgs args) => target.Children.Any(c => c.TriggerKeyUp(state, args)); + + protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => target.Children.Any(c => c.TriggerMouseDown(state, args)); + + protected override bool OnMouseUp(InputState state, MouseUpEventArgs args) => target.Children.Any(c => c.TriggerMouseUp(state, args)); + } } } diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index f1206034b7..0026cc12fa 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -124,10 +124,15 @@ namespace osu.Game.Screens.Play OnQuit = Exit }; - hitRenderer = ruleset.CreateHitRendererWith(beatmap, new PlayerInputManager + hitRenderer = ruleset.CreateHitRendererWith(beatmap); + + if (ReplayInputHandler != null) { - ReplayInputHandler = ReplayInputHandler - }); + ReplayInputHandler.ToScreenSpace = hitRenderer.MapPlayfieldToScreenSpace; + hitRenderer.InputManager.ReplayInputHandler = ReplayInputHandler; + } + + scoreOverlay.BindHitRenderer(hitRenderer); //bind HitRenderer to ScoreProcessor and ourselves (for a pass situation) hitRenderer.OnJudgement += scoreProcessor.AddJudgement; @@ -228,8 +233,8 @@ namespace osu.Game.Screens.Play if (!Push(newPlayer)) { - // Error(?) - } + // Error(?) + } }); } diff --git a/osu.Game/Screens/Play/PlayerInputManager.cs b/osu.Game/Screens/Play/PlayerInputManager.cs index 6d669e5169..a16c1ba9c6 100644 --- a/osu.Game/Screens/Play/PlayerInputManager.cs +++ b/osu.Game/Screens/Play/PlayerInputManager.cs @@ -35,10 +35,7 @@ namespace osu.Game.Screens.Play UseParentState = replayInputHandler == null; if (replayInputHandler != null) - { - replayInputHandler.ToScreenSpace = ToScreenSpace; AddHandler(replayInputHandler); - } } } From 123c8f3489e34939f514a7b519d30fb7e75c3cad Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 8 Mar 2017 11:54:52 +0900 Subject: [PATCH 3/8] Add comment. --- osu.Game/Modes/UI/Playfield.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/osu.Game/Modes/UI/Playfield.cs b/osu.Game/Modes/UI/Playfield.cs index 670ee2eea0..aa773323a5 100644 --- a/osu.Game/Modes/UI/Playfield.cs +++ b/osu.Game/Modes/UI/Playfield.cs @@ -53,8 +53,12 @@ namespace osu.Game.Modes.UI private class ScaledContainer : Container { + /// + /// A value (in game pixels that we should scale our content to match). + /// public float? CustomWidth; + //dividing by the customwidth will effectively scale our content to the required container size. protected override Vector2 DrawScale => CustomWidth.HasValue ? new Vector2(DrawSize.X / CustomWidth.Value) : base.DrawScale; public override bool Contains(Vector2 screenSpacePos) => true; From b810a43bbad62eb763eec70a1b43e886f43a0267 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 8 Mar 2017 15:47:40 +0900 Subject: [PATCH 4/8] Framework update. --- osu-framework | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu-framework b/osu-framework index 476c8792ee..fc9441b420 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 476c8792ee6b42cf4e5f0362b4eb09c0230807d8 +Subproject commit fc9441b420878dd817ffc8ae41ac76abc328330c From 5a42035f8817e4cffc705dd21c324a7b428e1785 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Wed, 8 Mar 2017 15:50:52 +0900 Subject: [PATCH 5/8] Update license headers. --- osu.Desktop.Deploy/App.config | 4 ++++ osu.Desktop.Deploy/GitHubObject.cs | 5 ++++- osu.Desktop.Deploy/GitHubRelease.cs | 5 ++++- osu.Desktop.Deploy/Program.cs | 2 +- osu.Desktop.Deploy/Properties/AssemblyInfo.cs | 5 ++++- osu.Desktop.Deploy/osu.Desktop.Deploy.csproj | 3 +++ osu.Desktop.Deploy/packages.config | 4 ++++ osu.Desktop.Tests/app.config | 1 + osu.Desktop.Tests/packages.config | 1 + osu.Desktop.VisualTests/Tests/TestCaseDrawings.cs | 2 +- osu.Desktop.VisualTests/app.config | 1 + osu.Desktop.VisualTests/packages.config | 1 + osu.Desktop/app.config | 1 + osu.Desktop/packages.config | 1 + osu.Game.Modes.Catch/packages.config | 1 + osu.Game.Modes.Mania/app.config | 1 + osu.Game.Modes.Mania/packages.config | 1 + osu.Game.Modes.Osu/app.config | 1 + osu.Game.Modes.Osu/packages.config | 1 + osu.Game.Modes.Taiko/packages.config | 1 + osu.Game.Tests/app.config | 1 + osu.Game.Tests/packages.config | 1 + osu.Game/IO/Legacy/SerializationReader.cs | 2 +- osu.Game/Modes/UI/ModIcon.cs | 2 +- osu.Game/Overlays/Mods/ModButton.cs | 2 +- osu.Game/Screens/Tournament/GroupContainer.cs | 5 ++++- osu.Game/app.config | 1 + osu.Game/packages.config | 1 + 28 files changed, 48 insertions(+), 9 deletions(-) diff --git a/osu.Desktop.Deploy/App.config b/osu.Desktop.Deploy/App.config index 33ae53313b..bd464a0453 100644 --- a/osu.Desktop.Deploy/App.config +++ b/osu.Desktop.Deploy/App.config @@ -1,4 +1,8 @@  + diff --git a/osu.Desktop.Deploy/GitHubObject.cs b/osu.Desktop.Deploy/GitHubObject.cs index f87de5cbdd..258f941340 100644 --- a/osu.Desktop.Deploy/GitHubObject.cs +++ b/osu.Desktop.Deploy/GitHubObject.cs @@ -1,4 +1,7 @@ -using Newtonsoft.Json; +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using Newtonsoft.Json; namespace osu.Desktop.Deploy { diff --git a/osu.Desktop.Deploy/GitHubRelease.cs b/osu.Desktop.Deploy/GitHubRelease.cs index 7e7b04fe58..a621ff2216 100644 --- a/osu.Desktop.Deploy/GitHubRelease.cs +++ b/osu.Desktop.Deploy/GitHubRelease.cs @@ -1,4 +1,7 @@ -using Newtonsoft.Json; +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using Newtonsoft.Json; namespace osu.Desktop.Deploy { diff --git a/osu.Desktop.Deploy/Program.cs b/osu.Desktop.Deploy/Program.cs index 6c96459a92..7141b6d52f 100644 --- a/osu.Desktop.Deploy/Program.cs +++ b/osu.Desktop.Deploy/Program.cs @@ -1,5 +1,5 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . -// Licensed under the MIT Licence - https://raw.GitHubusercontent.com/ppy/osu-framework/master/LICENCE +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; using System.Collections.Generic; diff --git a/osu.Desktop.Deploy/Properties/AssemblyInfo.cs b/osu.Desktop.Deploy/Properties/AssemblyInfo.cs index e0c1ad1a43..8df81400c1 100644 --- a/osu.Desktop.Deploy/Properties/AssemblyInfo.cs +++ b/osu.Desktop.Deploy/Properties/AssemblyInfo.cs @@ -1,4 +1,7 @@ -using System.Reflection; +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System.Reflection; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following diff --git a/osu.Desktop.Deploy/osu.Desktop.Deploy.csproj b/osu.Desktop.Deploy/osu.Desktop.Deploy.csproj index 898a991292..6bed6bb049 100644 --- a/osu.Desktop.Deploy/osu.Desktop.Deploy.csproj +++ b/osu.Desktop.Deploy/osu.Desktop.Deploy.csproj @@ -101,6 +101,9 @@ + + osu.licenseheader + diff --git a/osu.Desktop.Deploy/packages.config b/osu.Desktop.Deploy/packages.config index 4bbb763e27..59e9e42f45 100644 --- a/osu.Desktop.Deploy/packages.config +++ b/osu.Desktop.Deploy/packages.config @@ -1,4 +1,8 @@  + diff --git a/osu.Desktop.Tests/app.config b/osu.Desktop.Tests/app.config index b9af3fdc80..855da39b10 100644 --- a/osu.Desktop.Tests/app.config +++ b/osu.Desktop.Tests/app.config @@ -1,4 +1,5 @@  +