mirror of
https://github.com/osukey/osukey.git
synced 2025-08-05 15:44:04 +09:00
Merge remote-tracking branch 'refs/remotes/ppy/master' into cancel-select-random
This commit is contained in:
@ -25,13 +25,13 @@ namespace osu.Game.Screens.Edit
|
||||
protected override void OnEntering(Screen last)
|
||||
{
|
||||
base.OnEntering(last);
|
||||
Background.Schedule(() => Background.FadeColour(Color4.DarkGray, 500));
|
||||
Background.FadeColour(Color4.DarkGray, 500);
|
||||
Beatmap?.Track?.Stop();
|
||||
}
|
||||
|
||||
protected override bool OnExiting(Screen next)
|
||||
{
|
||||
Background.Schedule(() => Background.FadeColour(Color4.White, 500));
|
||||
Background.FadeColour(Color4.White, 500);
|
||||
Beatmap?.Track?.Start();
|
||||
return base.OnExiting(next);
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ namespace osu.Game.Screens.Menu
|
||||
Scale = new Vector2(0, 1),
|
||||
Size = boxSize,
|
||||
Shear = new Vector2(ButtonSystem.WEDGE_WIDTH / boxSize.Y, 0),
|
||||
Children = new []
|
||||
Children = new[]
|
||||
{
|
||||
new Box
|
||||
{
|
||||
@ -283,9 +283,9 @@ namespace osu.Game.Screens.Menu
|
||||
public ButtonState State
|
||||
{
|
||||
get { return state; }
|
||||
|
||||
set
|
||||
{
|
||||
|
||||
if (state == value)
|
||||
return;
|
||||
|
||||
|
@ -192,10 +192,8 @@ namespace osu.Game.Screens.Menu
|
||||
|
||||
public MenuState State
|
||||
{
|
||||
get
|
||||
{
|
||||
return state;
|
||||
}
|
||||
get { return state; }
|
||||
|
||||
set
|
||||
{
|
||||
if (state == value) return;
|
||||
|
@ -51,10 +51,7 @@ namespace osu.Game.Screens.Menu
|
||||
|
||||
public bool Triangles
|
||||
{
|
||||
set
|
||||
{
|
||||
colourAndTriangles.Alpha = value ? 1 : 0;
|
||||
}
|
||||
set { colourAndTriangles.Alpha = value ? 1 : 0; }
|
||||
}
|
||||
|
||||
protected override bool InternalContains(Vector2 screenSpacePos) => logoContainer.Contains(screenSpacePos);
|
||||
@ -62,10 +59,7 @@ namespace osu.Game.Screens.Menu
|
||||
public bool Ripple
|
||||
{
|
||||
get { return rippleContainer.Alpha > 0; }
|
||||
set
|
||||
{
|
||||
rippleContainer.Alpha = value ? 1 : 0;
|
||||
}
|
||||
set { rippleContainer.Alpha = value ? 1 : 0; }
|
||||
}
|
||||
|
||||
public bool Interactive = true;
|
||||
|
@ -68,7 +68,7 @@ namespace osu.Game.Screens.Multiplayer
|
||||
},
|
||||
avatar = new UpdateableAvatar
|
||||
{
|
||||
Size = new Vector2(Height - content_padding* 2),
|
||||
Size = new Vector2(Height - content_padding * 2),
|
||||
Masking = true,
|
||||
CornerRadius = 5f,
|
||||
Margin = new MarginPadding { Left = content_padding * 2, Top = content_padding },
|
||||
|
@ -24,12 +24,12 @@ namespace osu.Game.Screens.Multiplayer
|
||||
{
|
||||
base.OnEntering(last);
|
||||
|
||||
Background.Schedule(() => Background.FadeColour(Color4.DarkGray, 500));
|
||||
Background.FadeColour(Color4.DarkGray, 500);
|
||||
}
|
||||
|
||||
protected override bool OnExiting(Screen next)
|
||||
{
|
||||
Background.Schedule(() => Background.FadeColour(Color4.White, 500));
|
||||
Background.FadeColour(Color4.White, 500);
|
||||
return base.OnExiting(next);
|
||||
}
|
||||
}
|
||||
|
@ -54,7 +54,6 @@ namespace osu.Game.Screens.Play.HUD
|
||||
{
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Scale = new Vector2(0.6f),
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -7,21 +7,24 @@ using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Framework.Input;
|
||||
using osu.Game.Configuration;
|
||||
using osu.Game.Graphics;
|
||||
using osu.Game.Graphics.UserInterface;
|
||||
using osu.Game.Overlays;
|
||||
using osu.Game.Overlays.Notifications;
|
||||
using osu.Game.Rulesets.Scoring;
|
||||
using osu.Game.Rulesets.UI;
|
||||
using osu.Game.Screens.Play.HUD;
|
||||
using OpenTK;
|
||||
using OpenTK.Input;
|
||||
|
||||
namespace osu.Game.Screens.Play
|
||||
{
|
||||
public abstract class HUDOverlay : Container
|
||||
public class HUDOverlay : Container
|
||||
{
|
||||
private const int duration = 100;
|
||||
|
||||
private readonly Container content;
|
||||
|
||||
public readonly KeyCounterCollection KeyCounter;
|
||||
public readonly RollingCounter<int> ComboCounter;
|
||||
public readonly ScoreCounter ScoreCounter;
|
||||
@ -35,16 +38,7 @@ namespace osu.Game.Screens.Play
|
||||
|
||||
private static bool hasShownNotificationOnce;
|
||||
|
||||
protected abstract KeyCounterCollection CreateKeyCounter();
|
||||
protected abstract RollingCounter<int> CreateComboCounter();
|
||||
protected abstract RollingCounter<double> CreateAccuracyCounter();
|
||||
protected abstract ScoreCounter CreateScoreCounter();
|
||||
protected abstract HealthDisplay CreateHealthDisplay();
|
||||
protected abstract SongProgress CreateProgress();
|
||||
protected abstract ModDisplay CreateModsContainer();
|
||||
//protected abstract ReplaySettingsOverlay CreateReplaySettingsOverlay();
|
||||
|
||||
protected HUDOverlay()
|
||||
public HUDOverlay()
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both;
|
||||
|
||||
@ -67,7 +61,7 @@ namespace osu.Game.Screens.Play
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader(true)]
|
||||
private void load(OsuConfigManager config, NotificationManager notificationManager)
|
||||
private void load(OsuConfigManager config, NotificationManager notificationManager, OsuColour colours)
|
||||
{
|
||||
showHud = config.GetBindable<bool>(OsuSetting.ShowInterface);
|
||||
showHud.ValueChanged += hudVisibility => content.FadeTo(hudVisibility ? 1 : 0, duration);
|
||||
@ -82,14 +76,18 @@ namespace osu.Game.Screens.Play
|
||||
Text = @"The score overlay is currently disabled. You can toggle this by pressing Shift+Tab."
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void BindProcessor(ScoreProcessor processor)
|
||||
{
|
||||
ScoreCounter?.Current.BindTo(processor.TotalScore);
|
||||
AccuracyCounter?.Current.BindTo(processor.Accuracy);
|
||||
ComboCounter?.Current.BindTo(processor.Combo);
|
||||
HealthDisplay?.Current.BindTo(processor.Health);
|
||||
// todo: the stuff below should probably not be in this base implementation, but in each individual class.
|
||||
ComboCounter.AccentColour = colours.BlueLighter;
|
||||
AccuracyCounter.AccentColour = colours.BlueLighter;
|
||||
ScoreCounter.AccentColour = colours.BlueLighter;
|
||||
|
||||
var shd = HealthDisplay as StandardHealthDisplay;
|
||||
if (shd != null)
|
||||
{
|
||||
shd.AccentColour = colours.BlueLighter;
|
||||
shd.GlowColour = colours.BlueDarker;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void BindHitRenderer(HitRenderer hitRenderer)
|
||||
@ -122,5 +120,82 @@ namespace osu.Game.Screens.Play
|
||||
|
||||
return base.OnKeyDown(state, args);
|
||||
}
|
||||
|
||||
protected virtual RollingCounter<double> CreateAccuracyCounter() => new PercentageCounter
|
||||
{
|
||||
Anchor = Anchor.TopCentre,
|
||||
Origin = Anchor.TopRight,
|
||||
Position = new Vector2(0, 35),
|
||||
TextSize = 20,
|
||||
Margin = new MarginPadding { Right = 140 },
|
||||
};
|
||||
|
||||
protected virtual RollingCounter<int> CreateComboCounter() => new SimpleComboCounter
|
||||
{
|
||||
Anchor = Anchor.TopCentre,
|
||||
Origin = Anchor.TopLeft,
|
||||
Position = new Vector2(0, 35),
|
||||
Margin = new MarginPadding { Left = 140 },
|
||||
TextSize = 20,
|
||||
};
|
||||
|
||||
protected virtual HealthDisplay CreateHealthDisplay() => new StandardHealthDisplay
|
||||
{
|
||||
Size = new Vector2(1, 5),
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Margin = new MarginPadding { Top = 20 }
|
||||
};
|
||||
|
||||
protected virtual KeyCounterCollection CreateKeyCounter() => new KeyCounterCollection
|
||||
{
|
||||
IsCounting = true,
|
||||
FadeTime = 50,
|
||||
Anchor = Anchor.BottomRight,
|
||||
Origin = Anchor.BottomRight,
|
||||
Margin = new MarginPadding(10),
|
||||
Y = -TwoLayerButton.SIZE_RETRACTED.Y,
|
||||
};
|
||||
|
||||
protected virtual ScoreCounter CreateScoreCounter() => new ScoreCounter(6)
|
||||
{
|
||||
Anchor = Anchor.TopCentre,
|
||||
Origin = Anchor.TopCentre,
|
||||
TextSize = 40,
|
||||
Position = new Vector2(0, 30),
|
||||
};
|
||||
|
||||
protected virtual SongProgress CreateProgress() => new SongProgress
|
||||
{
|
||||
Anchor = Anchor.BottomLeft,
|
||||
Origin = Anchor.BottomLeft,
|
||||
RelativeSizeAxes = Axes.X,
|
||||
};
|
||||
|
||||
protected virtual ModDisplay CreateModsContainer() => new ModDisplay
|
||||
{
|
||||
Anchor = Anchor.TopRight,
|
||||
Origin = Anchor.TopRight,
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Margin = new MarginPadding { Top = 20, Right = 10 },
|
||||
};
|
||||
|
||||
//protected virtual ReplaySettingsOverlay CreateReplaySettingsOverlay() => new ReplaySettingsOverlay
|
||||
//{
|
||||
// Anchor = Anchor.TopRight,
|
||||
// Origin = Anchor.TopRight,
|
||||
// Margin = new MarginPadding { Top = 100, Right = 10 },
|
||||
//};
|
||||
|
||||
public virtual void BindProcessor(ScoreProcessor processor)
|
||||
{
|
||||
ScoreCounter?.Current.BindTo(processor.TotalScore);
|
||||
AccuracyCounter?.Current.BindTo(processor.Accuracy);
|
||||
ComboCounter?.Current.BindTo(processor.Combo);
|
||||
HealthDisplay?.Current.BindTo(processor.Health);
|
||||
|
||||
var shd = HealthDisplay as StandardHealthDisplay;
|
||||
if (shd != null)
|
||||
processor.NewJudgement += shd.Flash;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -170,7 +170,7 @@ namespace osu.Game.Screens.Play
|
||||
HitRenderer,
|
||||
}
|
||||
},
|
||||
hudOverlay = new StandardHUDOverlay
|
||||
hudOverlay = new HUDOverlay
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre
|
||||
@ -278,7 +278,6 @@ namespace osu.Game.Screens.Play
|
||||
{
|
||||
if (!pauseContainer.IsPaused)
|
||||
decoupledClock.Start();
|
||||
|
||||
});
|
||||
|
||||
pauseContainer.Alpha = 0;
|
||||
|
@ -79,7 +79,7 @@ namespace osu.Game.Screens.Play.ReplaySettings
|
||||
{
|
||||
Origin = Anchor.Centre,
|
||||
Anchor = Anchor.CentreRight,
|
||||
Position = new Vector2(-15,0),
|
||||
Position = new Vector2(-15, 0),
|
||||
Icon = FontAwesome.fa_bars,
|
||||
Scale = new Vector2(0.75f),
|
||||
Action = toggleContentVisibility,
|
||||
|
@ -232,7 +232,7 @@ namespace osu.Game.Screens.Play
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Origin = Anchor.Centre,
|
||||
Direction = FillDirection.Horizontal,
|
||||
Children = new []
|
||||
Children = new[]
|
||||
{
|
||||
new TextAwesome { Icon = FontAwesome.fa_chevron_right },
|
||||
new TextAwesome { Icon = FontAwesome.fa_chevron_right },
|
||||
|
@ -146,7 +146,7 @@ namespace osu.Game.Screens.Play
|
||||
|
||||
double progress = ((audioClock?.CurrentTime ?? Time.Current) - firstHitTime) / (lastHitTime - firstHitTime);
|
||||
|
||||
if(progress < 1)
|
||||
if (progress < 1)
|
||||
{
|
||||
bar.UpdatePosition((float)progress);
|
||||
graph.Progress = (int)(graph.ColumnCount * progress);
|
||||
|
@ -34,7 +34,7 @@ namespace osu.Game.Screens.Play
|
||||
{
|
||||
IHasEndTime end = h as IHasEndTime;
|
||||
|
||||
int startRange = (int)((h.StartTime - firstHit)/ interval);
|
||||
int startRange = (int)((h.StartTime - firstHit) / interval);
|
||||
int endRange = (int)(((end?.EndTime > 0 ? end.EndTime : h.StartTime) - firstHit) / interval);
|
||||
for (int i = startRange; i <= endRange; i++)
|
||||
values[i]++;
|
||||
|
@ -69,7 +69,7 @@ namespace osu.Game.Screens.Play
|
||||
|
||||
public override bool Invalidate(Invalidation invalidation = Invalidation.All, Drawable source = null, bool shallPropagate = true)
|
||||
{
|
||||
if ((invalidation & Invalidation.SizeInParentSpace) > 0)
|
||||
if ((invalidation & Invalidation.DrawSize) > 0)
|
||||
layout.Invalidate();
|
||||
return base.Invalidate(invalidation, source, shallPropagate);
|
||||
}
|
||||
|
@ -1,105 +0,0 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Game.Graphics;
|
||||
using osu.Game.Graphics.UserInterface;
|
||||
using osu.Game.Rulesets.Scoring;
|
||||
using osu.Game.Screens.Play.HUD;
|
||||
using OpenTK;
|
||||
|
||||
namespace osu.Game.Screens.Play
|
||||
{
|
||||
public class StandardHUDOverlay : HUDOverlay
|
||||
{
|
||||
protected override RollingCounter<double> CreateAccuracyCounter() => new PercentageCounter
|
||||
{
|
||||
Anchor = Anchor.TopCentre,
|
||||
Origin = Anchor.TopRight,
|
||||
Position = new Vector2(0, 35),
|
||||
TextSize = 20,
|
||||
Margin = new MarginPadding { Right = 140 },
|
||||
};
|
||||
|
||||
protected override RollingCounter<int> CreateComboCounter() => new SimpleComboCounter
|
||||
{
|
||||
Anchor = Anchor.TopCentre,
|
||||
Origin = Anchor.TopLeft,
|
||||
Position = new Vector2(0, 35),
|
||||
Margin = new MarginPadding { Left = 140 },
|
||||
TextSize = 20,
|
||||
};
|
||||
|
||||
protected override HealthDisplay CreateHealthDisplay() => new StandardHealthDisplay
|
||||
{
|
||||
Size = new Vector2(1, 5),
|
||||
RelativeSizeAxes = Axes.X,
|
||||
Margin = new MarginPadding { Top = 20 }
|
||||
};
|
||||
|
||||
protected override KeyCounterCollection CreateKeyCounter() => new KeyCounterCollection
|
||||
{
|
||||
IsCounting = true,
|
||||
FadeTime = 50,
|
||||
Anchor = Anchor.BottomRight,
|
||||
Origin = Anchor.BottomRight,
|
||||
Margin = new MarginPadding(10),
|
||||
Y = -TwoLayerButton.SIZE_RETRACTED.Y,
|
||||
};
|
||||
|
||||
protected override ScoreCounter CreateScoreCounter() => new ScoreCounter(6)
|
||||
{
|
||||
Anchor = Anchor.TopCentre,
|
||||
Origin = Anchor.TopCentre,
|
||||
TextSize = 40,
|
||||
Position = new Vector2(0, 30),
|
||||
};
|
||||
|
||||
protected override SongProgress CreateProgress() => new SongProgress
|
||||
{
|
||||
Anchor = Anchor.BottomLeft,
|
||||
Origin = Anchor.BottomLeft,
|
||||
RelativeSizeAxes = Axes.X,
|
||||
};
|
||||
|
||||
protected override ModDisplay CreateModsContainer() => new ModDisplay
|
||||
{
|
||||
Anchor = Anchor.TopRight,
|
||||
Origin = Anchor.TopRight,
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Margin = new MarginPadding { Top = 20, Right = 10 },
|
||||
};
|
||||
|
||||
//protected override ReplaySettingsOverlay CreateReplaySettingsOverlay() => new ReplaySettingsOverlay
|
||||
//{
|
||||
// Anchor = Anchor.TopRight,
|
||||
// Origin = Anchor.TopRight,
|
||||
// Margin = new MarginPadding { Top = 100, Right = 10 },
|
||||
//};
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(OsuColour colours)
|
||||
{
|
||||
ComboCounter.AccentColour = colours.BlueLighter;
|
||||
AccuracyCounter.AccentColour = colours.BlueLighter;
|
||||
ScoreCounter.AccentColour = colours.BlueLighter;
|
||||
|
||||
var shd = HealthDisplay as StandardHealthDisplay;
|
||||
if (shd != null)
|
||||
{
|
||||
shd.AccentColour = colours.BlueLighter;
|
||||
shd.GlowColour = colours.BlueDarker;
|
||||
}
|
||||
}
|
||||
|
||||
public override void BindProcessor(ScoreProcessor processor)
|
||||
{
|
||||
base.BindProcessor(processor);
|
||||
|
||||
var shd = HealthDisplay as StandardHealthDisplay;
|
||||
if (shd != null)
|
||||
processor.NewJudgement += shd.Flash;
|
||||
}
|
||||
}
|
||||
}
|
@ -71,7 +71,6 @@ namespace osu.Game.Screens.Ranking
|
||||
|
||||
using (BeginDelayedSequence(transition_time * 0.25f, true))
|
||||
{
|
||||
|
||||
circleOuter.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
||||
circleOuter.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
||||
|
||||
|
@ -64,7 +64,8 @@ namespace osu.Game.Screens.Ranking
|
||||
Origin = Anchor.Centre,
|
||||
Children = new Drawable[]
|
||||
{
|
||||
new Box{
|
||||
new Box
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Alpha = 0,
|
||||
AlwaysPresent = true
|
||||
@ -87,6 +88,5 @@ namespace osu.Game.Screens.Ranking
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -273,7 +273,7 @@ namespace osu.Game.Screens.Select
|
||||
|
||||
private BeatmapGroup createGroup(BeatmapSetInfo beatmapSet)
|
||||
{
|
||||
foreach(var b in beatmapSet.Beatmaps)
|
||||
foreach (var b in beatmapSet.Beatmaps)
|
||||
{
|
||||
if (b.Metadata == null)
|
||||
b.Metadata = beatmapSet.Metadata;
|
||||
|
@ -47,6 +47,7 @@ namespace osu.Game.Screens.Select
|
||||
public BeatmapInfo Beatmap
|
||||
{
|
||||
get { return beatmap; }
|
||||
|
||||
set
|
||||
{
|
||||
if (beatmap == value) return;
|
||||
@ -165,7 +166,7 @@ namespace osu.Game.Screens.Select
|
||||
Direction = FillDirection.Vertical,
|
||||
LayoutDuration = 200,
|
||||
LayoutEasing = EasingTypes.OutQuint,
|
||||
Children = new []
|
||||
Children = new[]
|
||||
{
|
||||
description = new MetadataSegment("Description"),
|
||||
source = new MetadataSegment("Source"),
|
||||
@ -199,9 +200,9 @@ namespace osu.Game.Screens.Select
|
||||
RelativeSizeAxes = Axes.X,
|
||||
AutoSizeAxes = Axes.Y,
|
||||
Direction = FillDirection.Vertical,
|
||||
Spacing = new Vector2(0,5),
|
||||
Spacing = new Vector2(0, 5),
|
||||
Padding = new MarginPadding(10),
|
||||
Children = new []
|
||||
Children = new[]
|
||||
{
|
||||
circleSize = new DifficultyRow("Circle Size", 7),
|
||||
drainRate = new DifficultyRow("HP Drain"),
|
||||
@ -479,7 +480,7 @@ namespace osu.Game.Screens.Select
|
||||
RelativeSizeAxes = Axes.X,
|
||||
AutoSizeAxes = Axes.Y,
|
||||
Direction = FillDirection.Full,
|
||||
Spacing = new Vector2(5,0),
|
||||
Spacing = new Vector2(5, 0),
|
||||
Margin = new MarginPadding { Top = header.TextSize }
|
||||
}
|
||||
};
|
||||
|
@ -335,7 +335,6 @@ namespace osu.Game.Screens.Tournament
|
||||
{
|
||||
Logger.Error(ex, "Failed to read last drawings results.");
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -83,6 +83,7 @@ namespace osu.Game.Screens.Tournament
|
||||
private ScrollState scrollState
|
||||
{
|
||||
get { return _scrollState; }
|
||||
|
||||
set
|
||||
{
|
||||
if (_scrollState == value)
|
||||
@ -329,6 +330,7 @@ namespace osu.Game.Screens.Tournament
|
||||
public bool Selected
|
||||
{
|
||||
get { return selected; }
|
||||
|
||||
set
|
||||
{
|
||||
selected = value;
|
||||
|
Reference in New Issue
Block a user