mirror of
https://github.com/osukey/osukey.git
synced 2025-06-25 05:07:59 +09:00
Merge pull request #1019 from Tom94/better-transforms
Improve transforms and use new LINQ-like syntax
This commit is contained in:
commit
660afb40b0
@ -1 +1 @@
|
|||||||
Subproject commit 2d2e2fe698ab32d80d5e856f52c8c398ceb35540
|
Subproject commit 8fde46d214e4ababb46100d2e4488ca26a9d43a3
|
@ -177,9 +177,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
beatsPerMinute.Value = 60000 / timingPoint.BeatLength;
|
beatsPerMinute.Value = 60000 / timingPoint.BeatLength;
|
||||||
adjustedBeatLength.Value = timingPoint.BeatLength;
|
adjustedBeatLength.Value = timingPoint.BeatLength;
|
||||||
|
|
||||||
flashLayer.ClearTransforms();
|
flashLayer.FadeOutFromOne(timingPoint.BeatLength);
|
||||||
flashLayer.FadeTo(1);
|
|
||||||
flashLayer.FadeTo(0, timingPoint.BeatLength);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,20 +59,13 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
using (container.BeginLoopedSequence())
|
// Move box along a square trajectory
|
||||||
{
|
container.Loop(c => c
|
||||||
container.MoveTo(new Vector2(0, 100), duration);
|
.MoveTo(new Vector2(0, 100), duration).Then()
|
||||||
using (container.BeginDelayedSequence(duration))
|
.MoveTo(new Vector2(100, 100), duration).Then()
|
||||||
{
|
.MoveTo(new Vector2(100, 0), duration).Then()
|
||||||
container.MoveTo(new Vector2(100, 100), duration);
|
.MoveTo(Vector2.Zero, duration)
|
||||||
using (container.BeginDelayedSequence(duration))
|
);
|
||||||
{
|
|
||||||
container.MoveTo(new Vector2(100, 0), duration);
|
|
||||||
using (container.BeginDelayedSequence(duration))
|
|
||||||
container.MoveTo(Vector2.Zero, duration);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MyContextMenuContainer : Container, IHasContextMenu
|
private class MyContextMenuContainer : Container, IHasContextMenu
|
||||||
@ -95,10 +88,10 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
{
|
{
|
||||||
new OsuContextMenuItem(@"Simple option"),
|
new OsuContextMenuItem(@"Simple option"),
|
||||||
new OsuContextMenuItem(@"Simple very very long option"),
|
new OsuContextMenuItem(@"Simple very very long option"),
|
||||||
new OsuContextMenuItem(@"Change width", MenuItemType.Highlighted) { Action = () => ResizeWidthTo(Width * 2, 100, EasingTypes.OutQuint) },
|
new OsuContextMenuItem(@"Change width", MenuItemType.Highlighted) { Action = () => this.ResizeWidthTo(Width * 2, 100, EasingTypes.OutQuint) },
|
||||||
new OsuContextMenuItem(@"Change height", MenuItemType.Highlighted) { Action = () => ResizeHeightTo(Height * 2, 100, EasingTypes.OutQuint) },
|
new OsuContextMenuItem(@"Change height", MenuItemType.Highlighted) { Action = () => this.ResizeHeightTo(Height * 2, 100, EasingTypes.OutQuint) },
|
||||||
new OsuContextMenuItem(@"Change width back", MenuItemType.Destructive) { Action = () => ResizeWidthTo(Width / 2, 100, EasingTypes.OutQuint) },
|
new OsuContextMenuItem(@"Change width back", MenuItemType.Destructive) { Action = () => this.ResizeWidthTo(Width / 2, 100, EasingTypes.OutQuint) },
|
||||||
new OsuContextMenuItem(@"Change height back", MenuItemType.Destructive) { Action = () => ResizeHeightTo(Height / 2, 100, EasingTypes.OutQuint) },
|
new OsuContextMenuItem(@"Change height back", MenuItemType.Destructive) { Action = () => this.ResizeHeightTo(Height / 2, 100, EasingTypes.OutQuint) },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,10 +56,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (remaining > 0)
|
if (remaining > 0)
|
||||||
{
|
Scheduler.AddDelayed(() => sendBarrage(remaining - 1), 80);
|
||||||
Delay(80);
|
|
||||||
Schedule(() => sendBarrage(remaining - 1));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
|
@ -196,7 +196,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
FadeInFromZero(250, EasingTypes.OutQuint);
|
this.FadeInFromZero(250, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
|
@ -67,6 +67,8 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
private void changePlayfieldSize(int step)
|
private void changePlayfieldSize(int step)
|
||||||
{
|
{
|
||||||
|
double delay = 0;
|
||||||
|
|
||||||
// Add new hits
|
// Add new hits
|
||||||
switch (step)
|
switch (step)
|
||||||
{
|
{
|
||||||
@ -84,7 +86,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
addSwell(1000);
|
addSwell(1000);
|
||||||
playfieldContainer.Delay(scroll_time - 100);
|
delay = scroll_time - 100;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,10 +94,10 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
switch (step)
|
switch (step)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
playfieldContainer.ResizeTo(new Vector2(1, rng.Next(25, 400)), 500);
|
playfieldContainer.Delay(delay).ResizeTo(new Vector2(1, rng.Next(25, 400)), 500);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
playfieldContainer.ResizeTo(new Vector2(1, TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT), 500);
|
playfieldContainer.Delay(delay).ResizeTo(new Vector2(1, TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT), 500);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,7 @@ namespace osu.Desktop.Overlays
|
|||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
FadeIn(1000);
|
this.FadeIn(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
|
@ -16,8 +16,6 @@ using System.Linq;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Rulesets.Objects.Drawables;
|
using osu.Game.Rulesets.Objects.Drawables;
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Framework.MathUtils;
|
|
||||||
using osu.Game.Rulesets.Mania.Objects.Drawables;
|
using osu.Game.Rulesets.Mania.Objects.Drawables;
|
||||||
using osu.Game.Rulesets.Timing;
|
using osu.Game.Rulesets.Timing;
|
||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
@ -235,7 +233,7 @@ namespace osu.Game.Rulesets.Mania.UI
|
|||||||
|
|
||||||
private void transformVisibleTimeRangeTo(double newTimeRange, double duration = 0, EasingTypes easing = EasingTypes.None)
|
private void transformVisibleTimeRangeTo(double newTimeRange, double duration = 0, EasingTypes easing = EasingTypes.None)
|
||||||
{
|
{
|
||||||
TransformTo(newTimeRange, duration, easing, new TransformTimeSpan());
|
this.TransformTo(nameof(visibleTimeRange), newTimeRange, duration, easing);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
@ -244,23 +242,5 @@ namespace osu.Game.Rulesets.Mania.UI
|
|||||||
// While masking on effectively only the Y-axis, so we need to set the width of the bar line container manually
|
// While masking on effectively only the Y-axis, so we need to set the width of the bar line container manually
|
||||||
barLineContainer.Width = columns.Width;
|
barLineContainer.Width = columns.Width;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TransformTimeSpan : Transform<double, Drawable>
|
|
||||||
{
|
|
||||||
public double CurrentValue
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
double time = Time?.Current ?? 0;
|
|
||||||
if (time < StartTime) return StartValue;
|
|
||||||
if (time >= EndTime) return EndValue;
|
|
||||||
|
|
||||||
return Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Apply(Drawable d) => ((ManiaPlayfield)d).visibleTimeRange.Value = (float)CurrentValue;
|
|
||||||
public override void ReadIntoStartValue(Drawable d) => StartValue = ((ManiaPlayfield)d).visibleTimeRange.Value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,8 +98,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
|||||||
|
|
||||||
fp.MoveTo(pointEndPosition, DrawableOsuHitObject.TIME_FADEIN, EasingTypes.Out);
|
fp.MoveTo(pointEndPosition, DrawableOsuHitObject.TIME_FADEIN, EasingTypes.Out);
|
||||||
|
|
||||||
fp.Delay(fadeOutTime - fadeInTime);
|
fp.Delay(fadeOutTime - fadeInTime).FadeOut(DrawableOsuHitObject.TIME_FADEIN);
|
||||||
fp.FadeOut(DrawableOsuHitObject.TIME_FADEIN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fp.Expire(true);
|
fp.Expire(true);
|
||||||
|
@ -112,29 +112,26 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
{
|
{
|
||||||
double duration = ((HitObject as IHasEndTime)?.EndTime ?? HitObject.StartTime) - HitObject.StartTime;
|
double duration = ((HitObject as IHasEndTime)?.EndTime ?? HitObject.StartTime) - HitObject.StartTime;
|
||||||
|
|
||||||
using (glow.BeginDelayedSequence(duration))
|
glow.Delay(duration).FadeOut(400);
|
||||||
glow.FadeOut(400);
|
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case ArmedState.Idle:
|
case ArmedState.Idle:
|
||||||
using (BeginDelayedSequence(duration + TIME_PREEMPT))
|
this.Delay(duration + TIME_PREEMPT).FadeOut(TIME_FADEOUT);
|
||||||
FadeOut(TIME_FADEOUT);
|
|
||||||
Expire(true);
|
Expire(true);
|
||||||
break;
|
break;
|
||||||
case ArmedState.Miss:
|
case ArmedState.Miss:
|
||||||
ApproachCircle.FadeOut(50);
|
ApproachCircle.FadeOut(50);
|
||||||
FadeOut(TIME_FADEOUT / 5);
|
this.FadeOut(TIME_FADEOUT / 5);
|
||||||
Expire();
|
Expire();
|
||||||
break;
|
break;
|
||||||
case ArmedState.Hit:
|
case ArmedState.Hit:
|
||||||
ApproachCircle.FadeOut(50);
|
ApproachCircle.FadeOut(50);
|
||||||
|
|
||||||
const double flash_in = 40;
|
const double flash_in = 40;
|
||||||
|
flash.FadeTo(0.8f, flash_in)
|
||||||
flash.FadeTo(0.8f, flash_in);
|
.Then()
|
||||||
using (flash.BeginDelayedSequence(flash_in))
|
.FadeOut(100);
|
||||||
flash.FadeOut(100);
|
|
||||||
|
|
||||||
explode.FadeIn(flash_in);
|
explode.FadeIn(flash_in);
|
||||||
|
|
||||||
@ -145,8 +142,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
circle.FadeOut();
|
circle.FadeOut();
|
||||||
number.FadeOut();
|
number.FadeOut();
|
||||||
|
|
||||||
FadeOut(800);
|
this.FadeOut(800)
|
||||||
ScaleTo(Scale * 1.5f, 400, EasingTypes.OutQuad);
|
.ScaleTo(Scale * 1.5f, 400, EasingTypes.OutQuad);
|
||||||
}
|
}
|
||||||
|
|
||||||
Expire();
|
Expire();
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using osu.Game.Rulesets.Objects.Drawables;
|
using osu.Game.Rulesets.Objects.Drawables;
|
||||||
using osu.Game.Rulesets.Osu.Judgements;
|
using osu.Game.Rulesets.Osu.Judgements;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
||||||
{
|
{
|
||||||
@ -24,7 +25,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
|
|
||||||
protected sealed override void UpdateState(ArmedState state)
|
protected sealed override void UpdateState(ArmedState state)
|
||||||
{
|
{
|
||||||
Flush();
|
FinishTransforms();
|
||||||
|
|
||||||
using (BeginAbsoluteSequence(HitObject.StartTime - TIME_PREEMPT, true))
|
using (BeginAbsoluteSequence(HitObject.StartTime - TIME_PREEMPT, true))
|
||||||
{
|
{
|
||||||
@ -44,7 +45,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
|
|
||||||
protected virtual void UpdatePreemptState()
|
protected virtual void UpdatePreemptState()
|
||||||
{
|
{
|
||||||
FadeIn(TIME_FADEIN);
|
this.FadeIn(TIME_FADEIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void UpdateCurrentState(ArmedState state)
|
protected virtual void UpdateCurrentState(ArmedState state)
|
||||||
|
@ -158,14 +158,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
{
|
{
|
||||||
ball.FadeIn();
|
ball.FadeIn();
|
||||||
|
|
||||||
Delay(slider.Duration, true);
|
using (BeginDelayedSequence(slider.Duration, true))
|
||||||
|
{
|
||||||
|
body.FadeOut(160);
|
||||||
|
ball.FadeOut(160);
|
||||||
|
|
||||||
body.FadeOut(160);
|
this.FadeOut(800)
|
||||||
ball.FadeOut(160);
|
.Expire();
|
||||||
|
}
|
||||||
FadeOut(800);
|
|
||||||
|
|
||||||
Expire();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Drawable ProxiedLayer => initialCircle.ApproachCircle;
|
public Drawable ProxiedLayer => initialCircle.ApproachCircle;
|
||||||
|
@ -62,14 +62,12 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
{
|
{
|
||||||
var animIn = Math.Min(150, sliderTick.StartTime - FadeInTime);
|
var animIn = Math.Min(150, sliderTick.StartTime - FadeInTime);
|
||||||
|
|
||||||
ScaleTo(0.5f);
|
this.Animate(
|
||||||
ScaleTo(1.2f, animIn);
|
d => d.FadeIn(animIn),
|
||||||
FadeIn(animIn);
|
d => d.ScaleTo(0.5f).ScaleTo(1.2f, animIn)
|
||||||
|
).Then(
|
||||||
Delay(animIn);
|
d => d.ScaleTo(1, 150, EasingTypes.Out)
|
||||||
ScaleTo(1, 150, EasingTypes.Out);
|
);
|
||||||
|
|
||||||
Delay(-animIn);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateCurrentState(ArmedState state)
|
protected override void UpdateCurrentState(ArmedState state)
|
||||||
@ -77,16 +75,15 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case ArmedState.Idle:
|
case ArmedState.Idle:
|
||||||
Delay(FadeOutTime - sliderTick.StartTime);
|
this.Delay(FadeOutTime - sliderTick.StartTime).FadeOut();
|
||||||
FadeOut();
|
|
||||||
break;
|
break;
|
||||||
case ArmedState.Miss:
|
case ArmedState.Miss:
|
||||||
FadeOut(160);
|
this.FadeOut(160)
|
||||||
FadeColour(Color4.Red, 80);
|
.FadeColour(Color4.Red, 80);
|
||||||
break;
|
break;
|
||||||
case ArmedState.Hit:
|
case ArmedState.Hit:
|
||||||
FadeOut(120, EasingTypes.OutQuint);
|
this.FadeOut(120, EasingTypes.OutQuint)
|
||||||
ScaleTo(Scale * 1.5f, 120, EasingTypes.OutQuint);
|
.ScaleTo(Scale * 1.5f, 120, EasingTypes.OutQuint);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,30 +189,28 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
disc.RotateTo(-720);
|
disc.RotateTo(-720);
|
||||||
symbol.RotateTo(-720);
|
symbol.RotateTo(-720);
|
||||||
|
|
||||||
mainContainer.ScaleTo(0);
|
mainContainer
|
||||||
mainContainer.ScaleTo(spinner.Scale * circle.DrawHeight / DrawHeight * 1.4f, TIME_PREEMPT - 150, EasingTypes.OutQuint);
|
.ScaleTo(0)
|
||||||
|
.ScaleTo(spinner.Scale * circle.DrawHeight / DrawHeight * 1.4f, TIME_PREEMPT - 150, EasingTypes.OutQuint)
|
||||||
mainContainer.Delay(TIME_PREEMPT - 150);
|
.Then()
|
||||||
mainContainer.ScaleTo(1, 500, EasingTypes.OutQuint);
|
.ScaleTo(1, 500, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateCurrentState(ArmedState state)
|
protected override void UpdateCurrentState(ArmedState state)
|
||||||
{
|
{
|
||||||
Delay(spinner.Duration, true);
|
var sequence = this.Delay(spinner.Duration).FadeOut(160);
|
||||||
|
|
||||||
FadeOut(160);
|
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case ArmedState.Hit:
|
case ArmedState.Hit:
|
||||||
ScaleTo(Scale * 1.2f, 320, EasingTypes.Out);
|
sequence.ScaleTo(Scale * 1.2f, 320, EasingTypes.Out);
|
||||||
Expire();
|
|
||||||
break;
|
break;
|
||||||
case ArmedState.Miss:
|
case ArmedState.Miss:
|
||||||
ScaleTo(Scale * 0.8f, 320, EasingTypes.In);
|
sequence.ScaleTo(Scale * 0.8f, 320, EasingTypes.In);
|
||||||
Expire();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Expire();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,8 +37,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
|
|||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
using (icon.BeginLoopedSequence())
|
icon.Spin(1000, RotationDirection.Clockwise);
|
||||||
icon.RotateTo(360, 1000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateProgress(double progress, int repeat)
|
public void UpdateProgress(double progress, int repeat)
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Framework.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
@ -127,13 +126,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
|
|||||||
|
|
||||||
if (Complete && updateCompleteTick())
|
if (Complete && updateCompleteTick())
|
||||||
{
|
{
|
||||||
background.Flush(flushType: typeof(TransformAlpha));
|
background.FinishTransforms(false, nameof(Alpha));
|
||||||
background.FadeTo(tracking_alpha + 0.2f, 60, EasingTypes.OutExpo);
|
background
|
||||||
background.Delay(60);
|
.FadeTo(tracking_alpha + 0.2f, 60, EasingTypes.OutExpo)
|
||||||
background.FadeTo(tracking_alpha, 250, EasingTypes.OutQuint);
|
.Then()
|
||||||
|
.FadeTo(tracking_alpha, 250, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
RotateTo(currentRotation / 2, validAndTracking ? 500 : 1500, EasingTypes.OutExpo);
|
this.RotateTo(currentRotation / 2, validAndTracking ? 500 : 1500, EasingTypes.OutExpo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,11 +64,10 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
|
|||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
Delay(BarLine.StartTime - Time.Current);
|
this.Delay(BarLine.StartTime - Time.Current).FadeOut(base_fadeout_time * BarLine.ScrollTime / 1000);
|
||||||
FadeOut(base_fadeout_time * BarLine.ScrollTime / 1000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateScrollPosition(double time) => MoveToX((float)((BarLine.StartTime - time) / BarLine.ScrollTime));
|
private void updateScrollPosition(double time) => this.MoveToX((float)((BarLine.StartTime - time) / BarLine.ScrollTime));
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
|
@ -65,45 +65,42 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
|
|||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
protected override void UpdateState(ArmedState state)
|
||||||
{
|
{
|
||||||
Delay(HitObject.StartTime - Time.Current + Judgement.TimeOffset, true);
|
|
||||||
|
|
||||||
var circlePiece = MainPiece as CirclePiece;
|
var circlePiece = MainPiece as CirclePiece;
|
||||||
|
circlePiece?.FlashBox.FinishTransforms();
|
||||||
|
|
||||||
circlePiece?.FlashBox.Flush();
|
using (BeginDelayedSequence(HitObject.StartTime - Time.Current + Judgement.TimeOffset, true))
|
||||||
|
|
||||||
switch (State)
|
|
||||||
{
|
{
|
||||||
case ArmedState.Idle:
|
switch (State)
|
||||||
Delay(HitObject.HitWindowMiss);
|
{
|
||||||
break;
|
case ArmedState.Idle:
|
||||||
case ArmedState.Miss:
|
this.Delay(HitObject.HitWindowMiss).Expire();
|
||||||
FadeOut(100);
|
break;
|
||||||
break;
|
case ArmedState.Miss:
|
||||||
case ArmedState.Hit:
|
this.FadeOut(100)
|
||||||
FadeOut(600);
|
.Expire();
|
||||||
|
break;
|
||||||
|
case ArmedState.Hit:
|
||||||
|
var flash = circlePiece?.FlashBox;
|
||||||
|
if (flash != null)
|
||||||
|
{
|
||||||
|
flash.FadeTo(0.9f);
|
||||||
|
flash.FadeOut(300);
|
||||||
|
}
|
||||||
|
|
||||||
var flash = circlePiece?.FlashBox;
|
const float gravity_time = 300;
|
||||||
if (flash != null)
|
const float gravity_travel_height = 200;
|
||||||
{
|
|
||||||
flash.FadeTo(0.9f);
|
|
||||||
flash.FadeOut(300);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Content.ScaleTo(0.8f, gravity_time * 2, EasingTypes.OutQuad);
|
||||||
|
|
||||||
FadeOut(800);
|
this.FadeOut(800)
|
||||||
|
.MoveToY(-gravity_travel_height, gravity_time, EasingTypes.Out)
|
||||||
|
.Then()
|
||||||
|
.MoveToY(gravity_travel_height * 2, gravity_time * 2, EasingTypes.In);
|
||||||
|
|
||||||
const float gravity_time = 300;
|
Expire();
|
||||||
const float gravity_travel_height = 200;
|
break;
|
||||||
|
}
|
||||||
Content.ScaleTo(0.8f, gravity_time * 2, EasingTypes.OutQuad);
|
|
||||||
|
|
||||||
MoveToY(-gravity_travel_height, gravity_time, EasingTypes.Out);
|
|
||||||
Delay(gravity_time, true);
|
|
||||||
MoveToY(gravity_travel_height * 2, gravity_time * 2, EasingTypes.In);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Expire();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,9 +147,10 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
|
|||||||
|
|
||||||
var completion = (float)userHits / HitObject.RequiredHits;
|
var completion = (float)userHits / HitObject.RequiredHits;
|
||||||
|
|
||||||
expandingRing.FadeTo(expandingRing.Alpha + MathHelper.Clamp(completion / 16, 0.1f, 0.6f), 50);
|
expandingRing
|
||||||
using (expandingRing.BeginDelayedSequence(50))
|
.FadeTo(expandingRing.Alpha + MathHelper.Clamp(completion / 16, 0.1f, 0.6f), 50)
|
||||||
expandingRing.FadeTo(completion / 8, 2000, EasingTypes.OutQuint);
|
.Then()
|
||||||
|
.FadeTo(completion / 8, 2000, EasingTypes.OutQuint);
|
||||||
|
|
||||||
symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, EasingTypes.OutQuint);
|
symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, EasingTypes.OutQuint);
|
||||||
|
|
||||||
@ -180,26 +181,21 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
|
|||||||
protected override void UpdateState(ArmedState state)
|
protected override void UpdateState(ArmedState state)
|
||||||
{
|
{
|
||||||
const float preempt = 100;
|
const float preempt = 100;
|
||||||
|
|
||||||
Delay(HitObject.StartTime - Time.Current - preempt, true);
|
|
||||||
|
|
||||||
targetRing.ScaleTo(target_ring_scale, preempt * 4, EasingTypes.OutQuint);
|
|
||||||
|
|
||||||
Delay(preempt, true);
|
|
||||||
|
|
||||||
Delay(Judgement.TimeOffset + HitObject.Duration, true);
|
|
||||||
|
|
||||||
const float out_transition_time = 300;
|
const float out_transition_time = 300;
|
||||||
|
|
||||||
|
double untilStartTime = HitObject.StartTime - Time.Current;
|
||||||
|
double untilJudgement = untilStartTime + Judgement.TimeOffset + HitObject.Duration;
|
||||||
|
|
||||||
|
targetRing.Delay(untilStartTime - preempt).ScaleTo(target_ring_scale, preempt * 4, EasingTypes.OutQuint);
|
||||||
|
this.Delay(untilJudgement).FadeOut(out_transition_time, EasingTypes.Out);
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case ArmedState.Hit:
|
case ArmedState.Hit:
|
||||||
bodyContainer.ScaleTo(1.4f, out_transition_time);
|
bodyContainer.Delay(untilJudgement).ScaleTo(1.4f, out_transition_time);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
FadeOut(out_transition_time, EasingTypes.Out);
|
|
||||||
|
|
||||||
Expire();
|
Expire();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,9 +166,10 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces
|
|||||||
|
|
||||||
double duration = timingPoint.BeatLength * 2;
|
double duration = timingPoint.BeatLength * 2;
|
||||||
|
|
||||||
background.FadeEdgeEffectTo(1, pre_beat_transition_time, EasingTypes.OutQuint);
|
background
|
||||||
using (background.BeginDelayedSequence(pre_beat_transition_time))
|
.FadeEdgeEffectTo(1, pre_beat_transition_time, EasingTypes.OutQuint)
|
||||||
background.FadeEdgeEffectTo(edge_alpha_kiai, duration, EasingTypes.OutQuint);
|
.Then()
|
||||||
|
.FadeEdgeEffectTo(edge_alpha_kiai, duration, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ using osu.Game.Rulesets.Objects.Drawables;
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Rulesets.Judgements;
|
using osu.Game.Rulesets.Judgements;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Taiko.UI
|
namespace osu.Game.Rulesets.Taiko.UI
|
||||||
{
|
{
|
||||||
@ -47,7 +48,7 @@ namespace osu.Game.Rulesets.Taiko.UI
|
|||||||
switch (Judgement.Result)
|
switch (Judgement.Result)
|
||||||
{
|
{
|
||||||
case HitResult.Hit:
|
case HitResult.Hit:
|
||||||
MoveToY(-100, 500);
|
this.MoveToY(-100, 500);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,8 +62,8 @@ namespace osu.Game.Rulesets.Taiko.UI
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
ScaleTo(3f, 1000, EasingTypes.OutQuint);
|
this.ScaleTo(3f, 1000, EasingTypes.OutQuint);
|
||||||
FadeOut(500);
|
this.FadeOut(500);
|
||||||
|
|
||||||
Expire();
|
Expire();
|
||||||
}
|
}
|
||||||
@ -73,7 +73,7 @@ namespace osu.Game.Rulesets.Taiko.UI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void VisualiseSecondHit()
|
public void VisualiseSecondHit()
|
||||||
{
|
{
|
||||||
ResizeTo(new Vector2(TaikoPlayfield.HIT_TARGET_OFFSET + TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER), 50);
|
this.ResizeTo(new Vector2(TaikoPlayfield.HIT_TARGET_OFFSET + TaikoHitObject.DEFAULT_STRONG_CIRCLE_DIAMETER), 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,15 +149,17 @@ namespace osu.Game.Rulesets.Taiko.UI
|
|||||||
const float down_time = 40;
|
const float down_time = 40;
|
||||||
const float up_time = 1000;
|
const float up_time = 1000;
|
||||||
|
|
||||||
back.ScaleTo(target.Scale.X - scale_amount, down_time, EasingTypes.OutQuint);
|
back.ScaleTo(target.Scale.X - scale_amount, down_time, EasingTypes.OutQuint)
|
||||||
back.Delay(down_time);
|
.Then()
|
||||||
back.ScaleTo(1, up_time, EasingTypes.OutQuint);
|
.ScaleTo(1, up_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
target.ScaleTo(target.Scale.X - scale_amount, down_time, EasingTypes.OutQuint);
|
target.Animate(
|
||||||
target.FadeTo(Math.Min(target.Alpha + alpha_amount, 1), down_time, EasingTypes.OutQuint);
|
t => t.ScaleTo(target.Scale.X - scale_amount, down_time, EasingTypes.OutQuint),
|
||||||
target.Delay(down_time);
|
t => t.FadeTo(Math.Min(target.Alpha + alpha_amount, 1), down_time, EasingTypes.OutQuint)
|
||||||
target.ScaleTo(1, up_time, EasingTypes.OutQuint);
|
).Then(
|
||||||
target.FadeOut(up_time, EasingTypes.OutQuint);
|
t => t.ScaleTo(1, up_time, EasingTypes.OutQuint),
|
||||||
|
t => t.FadeOut(up_time, EasingTypes.OutQuint)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -59,8 +59,8 @@ namespace osu.Game.Rulesets.Taiko.UI
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
ScaleTo(new Vector2(1, 3f), 500, EasingTypes.OutQuint);
|
this.ScaleTo(new Vector2(1, 3f), 500, EasingTypes.OutQuint);
|
||||||
FadeOut(250);
|
this.FadeOut(250);
|
||||||
|
|
||||||
Expire();
|
Expire();
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ using osu.Framework.Desktop.Platform;
|
|||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.IPC;
|
using osu.Game.IPC;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Beatmaps.IO
|
namespace osu.Game.Tests.Beatmaps.IO
|
||||||
{
|
{
|
||||||
@ -26,15 +27,15 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
//unfortunately for the time being we need to reference osu.Framework.Desktop for a game host here.
|
//unfortunately for the time being we need to reference osu.Framework.Desktop for a game host here.
|
||||||
using (HeadlessGameHost host = new HeadlessGameHost())
|
using (HeadlessGameHost host = new HeadlessGameHost())
|
||||||
{
|
{
|
||||||
loadOsu(host);
|
var osu = loadOsu(host);
|
||||||
|
|
||||||
var temp = prepareTempCopy(osz_path);
|
var temp = prepareTempCopy(osz_path);
|
||||||
|
|
||||||
Assert.IsTrue(File.Exists(temp));
|
Assert.IsTrue(File.Exists(temp));
|
||||||
|
|
||||||
host.Dependencies.Get<BeatmapDatabase>().Import(temp);
|
osu.Dependencies.Get<BeatmapDatabase>().Import(temp);
|
||||||
|
|
||||||
ensureLoaded(host);
|
ensureLoaded(osu);
|
||||||
|
|
||||||
Assert.IsFalse(File.Exists(temp));
|
Assert.IsFalse(File.Exists(temp));
|
||||||
}
|
}
|
||||||
@ -49,7 +50,7 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
Assert.IsTrue(host.IsPrimaryInstance);
|
Assert.IsTrue(host.IsPrimaryInstance);
|
||||||
Assert.IsTrue(!client.IsPrimaryInstance);
|
Assert.IsTrue(!client.IsPrimaryInstance);
|
||||||
|
|
||||||
loadOsu(host);
|
var osu = loadOsu(host);
|
||||||
|
|
||||||
var temp = prepareTempCopy(osz_path);
|
var temp = prepareTempCopy(osz_path);
|
||||||
|
|
||||||
@ -59,7 +60,7 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
if (!importer.ImportAsync(temp).Wait(10000))
|
if (!importer.ImportAsync(temp).Wait(10000))
|
||||||
Assert.Fail(@"IPC took too long to send");
|
Assert.Fail(@"IPC took too long to send");
|
||||||
|
|
||||||
ensureLoaded(host);
|
ensureLoaded(osu);
|
||||||
|
|
||||||
Assert.IsFalse(File.Exists(temp));
|
Assert.IsFalse(File.Exists(temp));
|
||||||
}
|
}
|
||||||
@ -71,16 +72,16 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
//unfortunately for the time being we need to reference osu.Framework.Desktop for a game host here.
|
//unfortunately for the time being we need to reference osu.Framework.Desktop for a game host here.
|
||||||
using (HeadlessGameHost host = new HeadlessGameHost())
|
using (HeadlessGameHost host = new HeadlessGameHost())
|
||||||
{
|
{
|
||||||
loadOsu(host);
|
var osu = loadOsu(host);
|
||||||
|
|
||||||
var temp = prepareTempCopy(osz_path);
|
var temp = prepareTempCopy(osz_path);
|
||||||
|
|
||||||
Assert.IsTrue(File.Exists(temp), "Temporary file copy never substantiated");
|
Assert.IsTrue(File.Exists(temp), "Temporary file copy never substantiated");
|
||||||
|
|
||||||
using (File.OpenRead(temp))
|
using (File.OpenRead(temp))
|
||||||
host.Dependencies.Get<BeatmapDatabase>().Import(temp);
|
osu.Dependencies.Get<BeatmapDatabase>().Import(temp);
|
||||||
|
|
||||||
ensureLoaded(host);
|
ensureLoaded(osu);
|
||||||
|
|
||||||
File.Delete(temp);
|
File.Delete(temp);
|
||||||
|
|
||||||
@ -103,19 +104,19 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
Thread.Sleep(1);
|
Thread.Sleep(1);
|
||||||
|
|
||||||
//reset beatmap database (sqlite and storage backing)
|
//reset beatmap database (sqlite and storage backing)
|
||||||
host.Dependencies.Get<RulesetDatabase>().Reset();
|
osu.Dependencies.Get<RulesetDatabase>().Reset();
|
||||||
host.Dependencies.Get<BeatmapDatabase>().Reset();
|
osu.Dependencies.Get<BeatmapDatabase>().Reset();
|
||||||
|
|
||||||
return osu;
|
return osu;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ensureLoaded(GameHost host, int timeout = 60000)
|
private void ensureLoaded(OsuGameBase osu, int timeout = 60000)
|
||||||
{
|
{
|
||||||
IEnumerable<BeatmapSetInfo> resultSets = null;
|
IEnumerable<BeatmapSetInfo> resultSets = null;
|
||||||
|
|
||||||
Action waitAction = () =>
|
Action waitAction = () =>
|
||||||
{
|
{
|
||||||
while (!(resultSets = host.Dependencies.Get<BeatmapDatabase>()
|
while (!(resultSets = osu.Dependencies.Get<BeatmapDatabase>()
|
||||||
.Query<BeatmapSetInfo>().Where(s => s.OnlineBeatmapSetID == 241526)).Any())
|
.Query<BeatmapSetInfo>().Where(s => s.OnlineBeatmapSetID == 241526)).Any())
|
||||||
Thread.Sleep(50);
|
Thread.Sleep(50);
|
||||||
};
|
};
|
||||||
@ -132,7 +133,7 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
//if we don't re-check here, the set will be inserted but the beatmaps won't be present yet.
|
//if we don't re-check here, the set will be inserted but the beatmaps won't be present yet.
|
||||||
waitAction = () =>
|
waitAction = () =>
|
||||||
{
|
{
|
||||||
while ((resultBeatmaps = host.Dependencies.Get<BeatmapDatabase>()
|
while ((resultBeatmaps = osu.Dependencies.Get<BeatmapDatabase>()
|
||||||
.GetAllWithChildren<BeatmapInfo>(s => s.OnlineBeatmapSetID == 241526 && s.BaseDifficultyID > 0)).Count() != 12)
|
.GetAllWithChildren<BeatmapInfo>(s => s.OnlineBeatmapSetID == 241526 && s.BaseDifficultyID > 0)).Count() != 12)
|
||||||
Thread.Sleep(50);
|
Thread.Sleep(50);
|
||||||
};
|
};
|
||||||
@ -140,7 +141,7 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
Assert.IsTrue(waitAction.BeginInvoke(null, null).AsyncWaitHandle.WaitOne(timeout),
|
Assert.IsTrue(waitAction.BeginInvoke(null, null).AsyncWaitHandle.WaitOne(timeout),
|
||||||
@"Beatmaps did not import to the database in allocated time");
|
@"Beatmaps did not import to the database in allocated time");
|
||||||
|
|
||||||
var set = host.Dependencies.Get<BeatmapDatabase>().GetChildren(resultSets.First());
|
var set = osu.Dependencies.Get<BeatmapDatabase>().GetChildren(resultSets.First());
|
||||||
|
|
||||||
Assert.IsTrue(set.Beatmaps.Count == resultBeatmaps.Count(),
|
Assert.IsTrue(set.Beatmaps.Count == resultBeatmaps.Count(),
|
||||||
$@"Incorrect database beatmap count post-import ({resultBeatmaps.Count()} but should be {set.Beatmaps.Count}).");
|
$@"Incorrect database beatmap count post-import ({resultBeatmaps.Count()} but should be {set.Beatmaps.Count}).");
|
||||||
@ -150,16 +151,16 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
|
|
||||||
Assert.IsTrue(set.Beatmaps.Count > 0);
|
Assert.IsTrue(set.Beatmaps.Count > 0);
|
||||||
|
|
||||||
var beatmap = host.Dependencies.Get<BeatmapDatabase>().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 0))?.Beatmap;
|
var beatmap = osu.Dependencies.Get<BeatmapDatabase>().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 0))?.Beatmap;
|
||||||
Assert.IsTrue(beatmap?.HitObjects.Count > 0);
|
Assert.IsTrue(beatmap?.HitObjects.Count > 0);
|
||||||
|
|
||||||
beatmap = host.Dependencies.Get<BeatmapDatabase>().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 1))?.Beatmap;
|
beatmap = osu.Dependencies.Get<BeatmapDatabase>().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 1))?.Beatmap;
|
||||||
Assert.IsTrue(beatmap?.HitObjects.Count > 0);
|
Assert.IsTrue(beatmap?.HitObjects.Count > 0);
|
||||||
|
|
||||||
beatmap = host.Dependencies.Get<BeatmapDatabase>().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 2))?.Beatmap;
|
beatmap = osu.Dependencies.Get<BeatmapDatabase>().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 2))?.Beatmap;
|
||||||
Assert.IsTrue(beatmap?.HitObjects.Count > 0);
|
Assert.IsTrue(beatmap?.HitObjects.Count > 0);
|
||||||
|
|
||||||
beatmap = host.Dependencies.Get<BeatmapDatabase>().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 3))?.Beatmap;
|
beatmap = osu.Dependencies.Get<BeatmapDatabase>().GetWorkingBeatmap(set.Beatmaps.First(b => b.RulesetID == 3))?.Beatmap;
|
||||||
Assert.IsTrue(beatmap?.HitObjects.Count > 0);
|
Assert.IsTrue(beatmap?.HitObjects.Count > 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,9 +64,9 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (state == PanelSelectedState.Hidden)
|
if (state == PanelSelectedState.Hidden)
|
||||||
FadeOut(300, EasingTypes.OutQuint);
|
this.FadeOut(300, EasingTypes.OutQuint);
|
||||||
else
|
else
|
||||||
FadeIn(250);
|
this.FadeIn(250);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PanelSelectedState state = PanelSelectedState.NotSelected;
|
private PanelSelectedState state = PanelSelectedState.NotSelected;
|
||||||
|
@ -83,16 +83,10 @@ namespace osu.Game.Graphics.Cursor
|
|||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
instantMovement |= !IsPresent;
|
instantMovement |= !IsPresent;
|
||||||
|
this.FadeIn(500, EasingTypes.OutQuint);
|
||||||
ClearTransforms();
|
|
||||||
FadeIn(500, EasingTypes.OutQuint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut() => this.Delay(150).FadeOut(500, EasingTypes.OutQuint);
|
||||||
{
|
|
||||||
using (BeginDelayedSequence(150))
|
|
||||||
FadeOut(500, EasingTypes.OutQuint);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Move(Vector2 pos)
|
public override void Move(Vector2 pos)
|
||||||
{
|
{
|
||||||
@ -103,7 +97,7 @@ namespace osu.Game.Graphics.Cursor
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MoveTo(pos, 200, EasingTypes.OutQuint);
|
this.MoveTo(pos, 200, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transforms;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using osu.Game.Graphics.Transforms;
|
|
||||||
|
|
||||||
namespace osu.Game.Graphics
|
namespace osu.Game.Graphics
|
||||||
{
|
{
|
||||||
@ -27,10 +26,8 @@ namespace osu.Game.Graphics
|
|||||||
/// <param name="newColour">The new accent colour.</param>
|
/// <param name="newColour">The new accent colour.</param>
|
||||||
/// <param name="duration">The tween duration.</param>
|
/// <param name="duration">The tween duration.</param>
|
||||||
/// <param name="easing">The tween easing.</param>
|
/// <param name="easing">The tween easing.</param>
|
||||||
public static void FadeAccent<T>(this T accentedDrawable, Color4 newColour, double duration = 0, EasingTypes easing = EasingTypes.None)
|
public static TransformSequence<T> FadeAccent<T>(this T accentedDrawable, Color4 newColour, double duration = 0, EasingTypes easing = EasingTypes.None)
|
||||||
where T : Transformable<Drawable>, IHasAccentColour
|
where T : IHasAccentColour
|
||||||
{
|
=> accentedDrawable.TransformTo(nameof(accentedDrawable.AccentColour), newColour, duration, easing);
|
||||||
accentedDrawable.TransformTo(newColour, duration, easing, new TransformAccent());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,31 +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 OpenTK.Graphics;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Framework.MathUtils;
|
|
||||||
|
|
||||||
namespace osu.Game.Graphics.Transforms
|
|
||||||
{
|
|
||||||
public class TransformAccent : Transform<Color4, Drawable>
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Current value of the transformed colour in linear colour space.
|
|
||||||
/// </summary>
|
|
||||||
public virtual Color4 CurrentValue
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
double time = Time?.Current ?? 0;
|
|
||||||
if (time < StartTime) return StartValue;
|
|
||||||
if (time >= EndTime) return EndValue;
|
|
||||||
|
|
||||||
return Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Apply(Drawable d) => ((IHasAccentColour)d).AccentColour = CurrentValue;
|
|
||||||
public override void ReadIntoStartValue(Drawable d) => StartValue = ((IHasAccentColour)d).AccentColour;
|
|
||||||
}
|
|
||||||
}
|
|
@ -54,13 +54,13 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
if (State == Visibility.Visible)
|
if (State == Visibility.Visible)
|
||||||
{
|
{
|
||||||
FadeIn(transition_duration, EasingTypes.OutQuint);
|
this.FadeIn(transition_duration, EasingTypes.OutQuint);
|
||||||
ScaleTo(new Vector2(1f), transition_duration, EasingTypes.OutQuint);
|
this.ScaleTo(new Vector2(1f), transition_duration, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FadeOut(transition_duration, EasingTypes.OutQuint);
|
this.FadeOut(transition_duration, EasingTypes.OutQuint);
|
||||||
ScaleTo(new Vector2(0.8f, 1f), transition_duration, EasingTypes.OutQuint);
|
this.ScaleTo(new Vector2(0.8f, 1f), transition_duration, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -99,8 +99,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
colourContainer.ResizeTo(new Vector2(1.5f, 1f), click_duration, EasingTypes.In);
|
colourContainer.ResizeTo(new Vector2(1.5f, 1f), click_duration, EasingTypes.In);
|
||||||
flash();
|
flash();
|
||||||
|
|
||||||
Delay(click_duration);
|
this.Delay(click_duration).Schedule(delegate {
|
||||||
Schedule(delegate {
|
|
||||||
colourContainer.ResizeTo(new Vector2(0.8f, 1f));
|
colourContainer.ResizeTo(new Vector2(0.8f, 1f));
|
||||||
spriteText.Spacing = Vector2.Zero;
|
spriteText.Spacing = Vector2.Zero;
|
||||||
glowContainer.FadeOut();
|
glowContainer.FadeOut();
|
||||||
|
@ -34,14 +34,13 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
using (spinner.BeginLoopedSequence())
|
spinner.Spin(2000, RotationDirection.Clockwise);
|
||||||
spinner.RotateTo(360, 2000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private const float transition_duration = 500;
|
private const float transition_duration = 500;
|
||||||
|
|
||||||
protected override void PopIn() => FadeIn(transition_duration * 5, EasingTypes.OutQuint);
|
protected override void PopIn() => this.FadeIn(transition_duration * 5, EasingTypes.OutQuint);
|
||||||
|
|
||||||
protected override void PopOut() => FadeOut(transition_duration, EasingTypes.OutQuint);
|
protected override void PopOut() => this.FadeOut(transition_duration, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,13 +80,13 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
if (value)
|
if (value)
|
||||||
{
|
{
|
||||||
FadeColour(GlowingAccentColour, 500, EasingTypes.OutQuint);
|
this.FadeColour(GlowingAccentColour, 500, EasingTypes.OutQuint);
|
||||||
FadeEdgeEffectTo(1, 500, EasingTypes.OutQuint);
|
FadeEdgeEffectTo(1, 500, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FadeEdgeEffectTo(0, 500);
|
FadeEdgeEffectTo(0, 500);
|
||||||
FadeColour(AccentColour, 500);
|
this.FadeColour(AccentColour, 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,7 +95,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
{
|
{
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
ResizeTo(new Vector2(value ? EXPANDED_SIZE : COLLAPSED_SIZE, 12), 500, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(value ? EXPANDED_SIZE : COLLAPSED_SIZE, 12), 500, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,13 +39,13 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
Background.Colour = colours.ContextMenuGray;
|
Background.Colour = colours.ContextMenuGray;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void AnimateOpen() => FadeIn(fade_duration, EasingTypes.OutQuint);
|
protected override void AnimateOpen() => this.FadeIn(fade_duration, EasingTypes.OutQuint);
|
||||||
protected override void AnimateClose() => FadeOut(fade_duration, EasingTypes.OutQuint);
|
protected override void AnimateClose() => this.FadeOut(fade_duration, EasingTypes.OutQuint);
|
||||||
|
|
||||||
protected override void UpdateContentHeight()
|
protected override void UpdateContentHeight()
|
||||||
{
|
{
|
||||||
var actualHeight = (RelativeSizeAxes & Axes.Y) > 0 ? 1 : ContentHeight;
|
var actualHeight = (RelativeSizeAxes & Axes.Y) > 0 ? 1 : ContentHeight;
|
||||||
ResizeTo(new Vector2(1, State == MenuState.Opened ? actualHeight : 0), 300, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(1, State == MenuState.Opened ? actualHeight : 0), 300, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,14 +19,14 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
ItemsContainer.Padding = new MarginPadding(5);
|
ItemsContainer.Padding = new MarginPadding(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void AnimateOpen() => FadeIn(300, EasingTypes.OutQuint);
|
protected override void AnimateOpen() => this.FadeIn(300, EasingTypes.OutQuint);
|
||||||
|
|
||||||
protected override void AnimateClose() => FadeOut(300, EasingTypes.OutQuint);
|
protected override void AnimateClose() => this.FadeOut(300, EasingTypes.OutQuint);
|
||||||
|
|
||||||
protected override void UpdateContentHeight()
|
protected override void UpdateContentHeight()
|
||||||
{
|
{
|
||||||
var actualHeight = (RelativeSizeAxes & Axes.Y) > 0 ? 1 : ContentHeight;
|
var actualHeight = (RelativeSizeAxes & Axes.Y) > 0 ? 1 : ContentHeight;
|
||||||
ResizeTo(new Vector2(1, State == MenuState.Opened ? actualHeight : 0), 300, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(1, State == MenuState.Opened ? actualHeight : 0), 300, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Framework.MathUtils;
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
namespace osu.Game.Graphics.UserInterface
|
||||||
@ -13,8 +10,6 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class PercentageCounter : RollingCounter<double>
|
public class PercentageCounter : RollingCounter<double>
|
||||||
{
|
{
|
||||||
protected override Type TransformType => typeof(TransformAccuracy);
|
|
||||||
|
|
||||||
protected override double RollingDuration => 750;
|
protected override double RollingDuration => 750;
|
||||||
|
|
||||||
private float epsilon => 1e-10f;
|
private float epsilon => 1e-10f;
|
||||||
@ -44,23 +39,5 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
{
|
{
|
||||||
Current.Value = Current + amount;
|
Current.Value = Current + amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected class TransformAccuracy : Transform<double, Drawable>
|
|
||||||
{
|
|
||||||
public virtual double CurrentValue
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
double time = Time?.Current ?? 0;
|
|
||||||
if (time < StartTime) return StartValue;
|
|
||||||
if (time >= EndTime) return EndValue;
|
|
||||||
|
|
||||||
return Interpolation.ValueAt(time, (float)StartValue, (float)EndValue, StartTime, EndTime, Easing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Apply(Drawable d) => ((PercentageCounter)d).DisplayedCount = CurrentValue;
|
|
||||||
public override void ReadIntoStartValue(Drawable d) => StartValue = ((PercentageCounter)d).DisplayedCount;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,30 +5,21 @@ using osu.Framework.Configuration;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
namespace osu.Game.Graphics.UserInterface
|
||||||
{
|
{
|
||||||
public abstract class RollingCounter<T> : Container, IHasAccentColour
|
public abstract class RollingCounter<T> : Container, IHasAccentColour
|
||||||
|
where T : struct, IEquatable<T>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The current value.
|
/// The current value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Bindable<T> Current = new Bindable<T>();
|
public Bindable<T> Current = new Bindable<T>();
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Type of the Transform to use.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Must be a subclass of Transform(T)
|
|
||||||
/// </remarks>
|
|
||||||
protected virtual Type TransformType => typeof(Transform<T, Drawable>);
|
|
||||||
|
|
||||||
protected SpriteText DisplayedCountSpriteText;
|
protected SpriteText DisplayedCountSpriteText;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -58,7 +49,8 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
{
|
{
|
||||||
return displayedCount;
|
return displayedCount;
|
||||||
}
|
}
|
||||||
protected set
|
|
||||||
|
set
|
||||||
{
|
{
|
||||||
if (EqualityComparer<T>.Default.Equals(displayedCount, value))
|
if (EqualityComparer<T>.Default.Equals(displayedCount, value))
|
||||||
return;
|
return;
|
||||||
@ -133,7 +125,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void StopRolling()
|
public virtual void StopRolling()
|
||||||
{
|
{
|
||||||
Flush(false, TransformType);
|
FinishTransforms(false, nameof(DisplayedCount));
|
||||||
DisplayedCount = Current;
|
DisplayedCount = Current;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,44 +168,15 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
/// implement the rollover animation).
|
/// implement the rollover animation).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="currentValue">Count value before modification.</param>
|
/// <param name="currentValue">Count value before modification.</param>
|
||||||
/// <param name="newValue">Expected count value after modification-</param>
|
/// <param name="newValue">Expected count value after modification.</param>
|
||||||
/// <seealso cref="TransformType"/>
|
|
||||||
protected virtual void TransformCount(T currentValue, T newValue)
|
protected virtual void TransformCount(T currentValue, T newValue)
|
||||||
{
|
{
|
||||||
Debug.Assert(
|
|
||||||
typeof(Transform<T, Drawable>).IsAssignableFrom(TransformType),
|
|
||||||
@"transformType should be a subclass of Transform<T>."
|
|
||||||
);
|
|
||||||
|
|
||||||
TransformCount((Transform<T, Drawable>)Activator.CreateInstance(TransformType), currentValue, newValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Intended to be used by TransformCount(T currentValue, T newValue).
|
|
||||||
/// </summary>
|
|
||||||
protected void TransformCount(Transform<T, Drawable> transform, T currentValue, T newValue)
|
|
||||||
{
|
|
||||||
Type type = transform.GetType();
|
|
||||||
|
|
||||||
Flush(false, type);
|
|
||||||
|
|
||||||
if (RollingDuration < 1)
|
|
||||||
{
|
|
||||||
DisplayedCount = Current;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
double rollingTotalDuration =
|
double rollingTotalDuration =
|
||||||
IsRollingProportional
|
IsRollingProportional
|
||||||
? GetProportionalDuration(currentValue, newValue)
|
? GetProportionalDuration(currentValue, newValue)
|
||||||
: RollingDuration;
|
: RollingDuration;
|
||||||
|
|
||||||
transform.StartTime = TransformStartTime;
|
this.TransformTo(nameof(DisplayedCount), newValue, rollingTotalDuration, RollingEasing);
|
||||||
transform.EndTime = TransformStartTime + rollingTotalDuration;
|
|
||||||
transform.EndValue = newValue;
|
|
||||||
transform.Easing = RollingEasing;
|
|
||||||
|
|
||||||
Transforms.Add(transform);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,11 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Framework.MathUtils;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
namespace osu.Game.Graphics.UserInterface
|
||||||
{
|
{
|
||||||
public class ScoreCounter : RollingCounter<double>
|
public class ScoreCounter : RollingCounter<double>
|
||||||
{
|
{
|
||||||
protected override Type TransformType => typeof(TransformScore);
|
|
||||||
|
|
||||||
protected override double RollingDuration => 1000;
|
protected override double RollingDuration => 1000;
|
||||||
protected override EasingTypes RollingEasing => EasingTypes.Out;
|
protected override EasingTypes RollingEasing => EasingTypes.Out;
|
||||||
|
|
||||||
@ -55,23 +50,5 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
{
|
{
|
||||||
Current.Value = Current + amount;
|
Current.Value = Current + amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected class TransformScore : Transform<double, Drawable>
|
|
||||||
{
|
|
||||||
public virtual double CurrentValue
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
double time = Time?.Current ?? 0;
|
|
||||||
if (time < StartTime) return StartValue;
|
|
||||||
if (time >= EndTime) return EndValue;
|
|
||||||
|
|
||||||
return Interpolation.ValueAt(time, (float)StartValue, (float)EndValue, StartTime, EndTime, Easing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Apply(Drawable d) => ((ScoreCounter)d).DisplayedCount = CurrentValue;
|
|
||||||
public override void ReadIntoStartValue(Drawable d) => StartValue = ((ScoreCounter)d).DisplayedCount;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,6 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Framework.MathUtils;
|
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
namespace osu.Game.Graphics.UserInterface
|
||||||
{
|
{
|
||||||
@ -13,8 +10,6 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class SimpleComboCounter : RollingCounter<int>
|
public class SimpleComboCounter : RollingCounter<int>
|
||||||
{
|
{
|
||||||
protected override Type TransformType => typeof(TransformCounterCount);
|
|
||||||
|
|
||||||
protected override double RollingDuration => 750;
|
protected override double RollingDuration => 750;
|
||||||
|
|
||||||
public SimpleComboCounter()
|
public SimpleComboCounter()
|
||||||
@ -36,23 +31,5 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
{
|
{
|
||||||
Current.Value = Current + amount;
|
Current.Value = Current + amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TransformCounterCount : Transform<int, Drawable>
|
|
||||||
{
|
|
||||||
public int CurrentValue
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
double time = Time?.Current ?? 0;
|
|
||||||
if (time < StartTime) return StartValue;
|
|
||||||
if (time >= EndTime) return EndValue;
|
|
||||||
|
|
||||||
return (int)Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Apply(Drawable d) => ((SimpleComboCounter)d).DisplayedCount = CurrentValue;
|
|
||||||
public override void ReadIntoStartValue(Drawable d) => StartValue = ((SimpleComboCounter)d).DisplayedCount;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -122,7 +122,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
if (value <= i)
|
if (value <= i)
|
||||||
return minStarScale;
|
return minStarScale;
|
||||||
|
|
||||||
return i + 1 <= value ? 1.0f : (float)Interpolation.ValueAt(value, minStarScale, 1.0f, i, i + 1);
|
return i + 1 <= value ? 1.0f : Interpolation.ValueAt(value, minStarScale, 1.0f, i, i + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void transformCount(float newValue)
|
private void transformCount(float newValue)
|
||||||
@ -133,12 +133,8 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
star.ClearTransforms(true);
|
star.ClearTransforms(true);
|
||||||
|
|
||||||
var delay = (countStars <= newValue ? Math.Max(i - countStars, 0) : Math.Max(countStars - 1 - i, 0)) * animationDelay;
|
var delay = (countStars <= newValue ? Math.Max(i - countStars, 0) : Math.Max(countStars - 1 - i, 0)) * animationDelay;
|
||||||
|
star.Delay(delay).FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration);
|
||||||
using (BeginDelayedSequence(delay, true))
|
star.Icon.Delay(delay).ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing);
|
||||||
{
|
|
||||||
star.FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration);
|
|
||||||
star.Icon.ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing);
|
|
||||||
}
|
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
protected override bool OnHover(InputState state)
|
protected override bool OnHover(InputState state)
|
||||||
{
|
{
|
||||||
ResizeTo(SIZE_EXTENDED, transform_time, EasingTypes.OutElastic);
|
this.ResizeTo(SIZE_EXTENDED, transform_time, EasingTypes.OutElastic);
|
||||||
IconLayer.FadeColour(HoverColour, transform_time, EasingTypes.OutElastic);
|
IconLayer.FadeColour(HoverColour, transform_time, EasingTypes.OutElastic);
|
||||||
|
|
||||||
bouncingIcon.ScaleTo(1.1f, transform_time, EasingTypes.OutElastic);
|
bouncingIcon.ScaleTo(1.1f, transform_time, EasingTypes.OutElastic);
|
||||||
@ -183,7 +183,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
protected override void OnHoverLost(InputState state)
|
protected override void OnHoverLost(InputState state)
|
||||||
{
|
{
|
||||||
ResizeTo(SIZE_RETRACTED, transform_time, EasingTypes.OutElastic);
|
this.ResizeTo(SIZE_RETRACTED, transform_time, EasingTypes.OutElastic);
|
||||||
IconLayer.FadeColour(TextLayer.Colour, transform_time, EasingTypes.OutElastic);
|
IconLayer.FadeColour(TextLayer.Colour, transform_time, EasingTypes.OutElastic);
|
||||||
|
|
||||||
bouncingIcon.ScaleTo(1, transform_time, EasingTypes.OutElastic);
|
bouncingIcon.ScaleTo(1, transform_time, EasingTypes.OutElastic);
|
||||||
@ -245,9 +245,9 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
if (beatIndex < 0) return;
|
if (beatIndex < 0) return;
|
||||||
|
|
||||||
icon.ScaleTo(1 - 0.1f * amplitudeAdjust, beat_in_time, EasingTypes.Out);
|
icon.ScaleTo(1 - 0.1f * amplitudeAdjust, beat_in_time, EasingTypes.Out)
|
||||||
using (icon.BeginDelayedSequence(beat_in_time))
|
.Then()
|
||||||
icon.ScaleTo(1, beatLength * 2, EasingTypes.OutQuint);
|
.ScaleTo(1, beatLength * 2, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,21 +93,20 @@ namespace osu.Game.Graphics.UserInterface.Volume
|
|||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
ClearTransforms();
|
ClearTransforms();
|
||||||
FadeIn(100);
|
this.FadeIn(100);
|
||||||
|
|
||||||
schedulePopOut();
|
schedulePopOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
FadeOut(100);
|
this.FadeOut(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void schedulePopOut()
|
private void schedulePopOut()
|
||||||
{
|
{
|
||||||
popOutDelegate?.Cancel();
|
popOutDelegate?.Cancel();
|
||||||
Delay(1000);
|
this.Delay(1000).Schedule(Hide, out popOutDelegate);
|
||||||
popOutDelegate = Schedule(Hide);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -80,6 +80,11 @@ namespace osu.Game
|
|||||||
|
|
||||||
public void ToggleDirect() => direct.ToggleVisibility();
|
public void ToggleDirect() => direct.ToggleVisibility();
|
||||||
|
|
||||||
|
private DependencyContainer dependencies;
|
||||||
|
|
||||||
|
protected override IReadOnlyDependencyContainer CreateLocalDependencies(IReadOnlyDependencyContainer parent) =>
|
||||||
|
dependencies = new DependencyContainer(base.CreateLocalDependencies(parent));
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(FrameworkConfigManager frameworkConfig)
|
private void load(FrameworkConfigManager frameworkConfig)
|
||||||
{
|
{
|
||||||
@ -97,7 +102,7 @@ namespace osu.Game
|
|||||||
Task.Run(() => BeatmapDatabase.Import(paths.ToArray()));
|
Task.Run(() => BeatmapDatabase.Import(paths.ToArray()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Dependencies.Cache(this);
|
dependencies.Cache(this);
|
||||||
|
|
||||||
configRuleset = LocalConfig.GetBindable<int>(OsuSetting.Ruleset);
|
configRuleset = LocalConfig.GetBindable<int>(OsuSetting.Ruleset);
|
||||||
Ruleset.Value = RulesetDatabase.GetRuleset(configRuleset.Value);
|
Ruleset.Value = RulesetDatabase.GetRuleset(configRuleset.Value);
|
||||||
@ -121,8 +126,7 @@ namespace osu.Game
|
|||||||
if (!menu.IsCurrentScreen)
|
if (!menu.IsCurrentScreen)
|
||||||
{
|
{
|
||||||
menu.MakeCurrent();
|
menu.MakeCurrent();
|
||||||
Delay(500);
|
this.Delay(500).Schedule(() => LoadScore(s), out scoreLoad);
|
||||||
scoreLoad = Schedule(() => LoadScore(s));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,13 +211,13 @@ namespace osu.Game
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Dependencies.Cache(settings);
|
dependencies.Cache(settings);
|
||||||
Dependencies.Cache(social);
|
dependencies.Cache(social);
|
||||||
Dependencies.Cache(chat);
|
dependencies.Cache(chat);
|
||||||
Dependencies.Cache(userProfile);
|
dependencies.Cache(userProfile);
|
||||||
Dependencies.Cache(musicController);
|
dependencies.Cache(musicController);
|
||||||
Dependencies.Cache(notificationManager);
|
dependencies.Cache(notificationManager);
|
||||||
Dependencies.Cache(dialogOverlay);
|
dependencies.Cache(dialogOverlay);
|
||||||
|
|
||||||
// ensure both overlays aren't presented at the same time
|
// ensure both overlays aren't presented at the same time
|
||||||
chat.StateChanged += (container, state) => social.State = state == Visibility.Visible ? Visibility.Hidden : social.State;
|
chat.StateChanged += (container, state) => social.State = state == Visibility.Visible ? Visibility.Hidden : social.State;
|
||||||
|
@ -81,21 +81,26 @@ namespace osu.Game
|
|||||||
Name = @"osu!lazer";
|
Name = @"osu!lazer";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DependencyContainer dependencies;
|
||||||
|
|
||||||
|
protected override IReadOnlyDependencyContainer CreateLocalDependencies(IReadOnlyDependencyContainer parent) =>
|
||||||
|
dependencies = new DependencyContainer(base.CreateLocalDependencies(parent));
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
Dependencies.Cache(this);
|
dependencies.Cache(this);
|
||||||
Dependencies.Cache(LocalConfig);
|
dependencies.Cache(LocalConfig);
|
||||||
|
|
||||||
SQLiteConnection connection = Host.Storage.GetDatabase(@"client");
|
SQLiteConnection connection = Host.Storage.GetDatabase(@"client");
|
||||||
|
|
||||||
Dependencies.Cache(RulesetDatabase = new RulesetDatabase(Host.Storage, connection));
|
dependencies.Cache(RulesetDatabase = new RulesetDatabase(Host.Storage, connection));
|
||||||
Dependencies.Cache(BeatmapDatabase = new BeatmapDatabase(Host.Storage, connection, RulesetDatabase, Host));
|
dependencies.Cache(BeatmapDatabase = new BeatmapDatabase(Host.Storage, connection, RulesetDatabase, Host));
|
||||||
Dependencies.Cache(ScoreDatabase = new ScoreDatabase(Host.Storage, connection, Host, BeatmapDatabase));
|
dependencies.Cache(ScoreDatabase = new ScoreDatabase(Host.Storage, connection, Host, BeatmapDatabase));
|
||||||
Dependencies.Cache(new OsuColour());
|
dependencies.Cache(new OsuColour());
|
||||||
|
|
||||||
//this completely overrides the framework default. will need to change once we make a proper FontStore.
|
//this completely overrides the framework default. will need to change once we make a proper FontStore.
|
||||||
Dependencies.Cache(Fonts = new FontStore { ScaleAdjust = 100 }, true);
|
dependencies.Cache(Fonts = new FontStore { ScaleAdjust = 100 }, true);
|
||||||
|
|
||||||
Fonts.AddStore(new GlyphStore(Resources, @"Fonts/FontAwesome"));
|
Fonts.AddStore(new GlyphStore(Resources, @"Fonts/FontAwesome"));
|
||||||
Fonts.AddStore(new GlyphStore(Resources, @"Fonts/osuFont"));
|
Fonts.AddStore(new GlyphStore(Resources, @"Fonts/osuFont"));
|
||||||
@ -127,7 +132,7 @@ namespace osu.Game
|
|||||||
|
|
||||||
OszArchiveReader.Register();
|
OszArchiveReader.Register();
|
||||||
|
|
||||||
Dependencies.Cache(API = new APIAccess
|
dependencies.Cache(API = new APIAccess
|
||||||
{
|
{
|
||||||
Username = LocalConfig.Get<string>(OsuSetting.Username),
|
Username = LocalConfig.Get<string>(OsuSetting.Username),
|
||||||
Token = LocalConfig.Get<string>(OsuSetting.Token)
|
Token = LocalConfig.Get<string>(OsuSetting.Token)
|
||||||
|
@ -39,7 +39,7 @@ namespace osu.Game.Overlays.Chat
|
|||||||
{
|
{
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
FadeTo(value ? 1f : 0f, 100);
|
this.FadeTo(value ? 1f : 0f, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,14 +175,14 @@ namespace osu.Game.Overlays.Chat
|
|||||||
joinedCheckmark.FadeTo(1f, transition_duration);
|
joinedCheckmark.FadeTo(1f, transition_duration);
|
||||||
topic.FadeTo(0.8f, transition_duration);
|
topic.FadeTo(0.8f, transition_duration);
|
||||||
topic.FadeColour(Color4.White, transition_duration);
|
topic.FadeColour(Color4.White, transition_duration);
|
||||||
FadeColour(joinedColour, transition_duration);
|
this.FadeColour(joinedColour, transition_duration);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
joinedCheckmark.FadeTo(0f, transition_duration);
|
joinedCheckmark.FadeTo(0f, transition_duration);
|
||||||
topic.FadeTo(1f, transition_duration);
|
topic.FadeTo(1f, transition_duration);
|
||||||
topic.FadeColour(topicColour, transition_duration);
|
topic.FadeColour(topicColour, transition_duration);
|
||||||
FadeColour(Color4.White, transition_duration);
|
this.FadeColour(Color4.White, transition_duration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ namespace osu.Game.Overlays.Chat
|
|||||||
{
|
{
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
FadeTo(value ? 1f : 0f, 100);
|
this.FadeTo(value ? 1f : 0f, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,10 +158,10 @@ namespace osu.Game.Overlays.Chat
|
|||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
if (Alpha == 0) MoveToY(DrawHeight);
|
if (Alpha == 0) this.MoveToY(DrawHeight);
|
||||||
|
|
||||||
FadeIn(transition_duration, EasingTypes.OutQuint);
|
this.FadeIn(transition_duration, EasingTypes.OutQuint);
|
||||||
MoveToY(0, transition_duration, EasingTypes.OutQuint);
|
this.MoveToY(0, transition_duration, EasingTypes.OutQuint);
|
||||||
|
|
||||||
search.HoldFocus = true;
|
search.HoldFocus = true;
|
||||||
base.PopIn();
|
base.PopIn();
|
||||||
@ -169,8 +169,8 @@ namespace osu.Game.Overlays.Chat
|
|||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
FadeOut(transition_duration, EasingTypes.InSine);
|
this.FadeOut(transition_duration, EasingTypes.InSine);
|
||||||
MoveToY(DrawHeight, transition_duration, EasingTypes.InSine);
|
this.MoveToY(DrawHeight, transition_duration, EasingTypes.InSine);
|
||||||
|
|
||||||
search.HoldFocus = false;
|
search.HoldFocus = false;
|
||||||
base.PopOut();
|
base.PopOut();
|
||||||
|
@ -86,7 +86,7 @@ namespace osu.Game.Overlays.Chat
|
|||||||
|
|
||||||
private void fadeActive()
|
private void fadeActive()
|
||||||
{
|
{
|
||||||
ResizeTo(new Vector2(Width, 1.1f), transition_length, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(Width, 1.1f), transition_length, EasingTypes.OutQuint);
|
||||||
|
|
||||||
box.FadeColour(backgroundActive, transition_length, EasingTypes.OutQuint);
|
box.FadeColour(backgroundActive, transition_length, EasingTypes.OutQuint);
|
||||||
highlightBox.FadeIn(transition_length, EasingTypes.OutQuint);
|
highlightBox.FadeIn(transition_length, EasingTypes.OutQuint);
|
||||||
@ -97,7 +97,7 @@ namespace osu.Game.Overlays.Chat
|
|||||||
|
|
||||||
private void fadeInactive()
|
private void fadeInactive()
|
||||||
{
|
{
|
||||||
ResizeTo(new Vector2(Width, 1), transition_length, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(Width, 1), transition_length, EasingTypes.OutQuint);
|
||||||
|
|
||||||
box.FadeColour(backgroundInactive, transition_length, EasingTypes.OutQuint);
|
box.FadeColour(backgroundInactive, transition_length, EasingTypes.OutQuint);
|
||||||
highlightBox.FadeOut(transition_length, EasingTypes.OutQuint);
|
highlightBox.FadeOut(transition_length, EasingTypes.OutQuint);
|
||||||
|
@ -235,8 +235,8 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
MoveToY(0, transition_length, EasingTypes.OutQuint);
|
this.MoveToY(0, transition_length, EasingTypes.OutQuint);
|
||||||
FadeIn(transition_length, EasingTypes.OutQuint);
|
this.FadeIn(transition_length, EasingTypes.OutQuint);
|
||||||
|
|
||||||
inputTextBox.HoldFocus = true;
|
inputTextBox.HoldFocus = true;
|
||||||
base.PopIn();
|
base.PopIn();
|
||||||
@ -244,8 +244,8 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
MoveToY(Height, transition_length, EasingTypes.InSine);
|
this.MoveToY(Height, transition_length, EasingTypes.InSine);
|
||||||
FadeOut(transition_length, EasingTypes.InSine);
|
this.FadeOut(transition_length, EasingTypes.InSine);
|
||||||
|
|
||||||
inputTextBox.HoldFocus = false;
|
inputTextBox.HoldFocus = false;
|
||||||
base.PopOut();
|
base.PopOut();
|
||||||
|
@ -35,8 +35,7 @@ namespace osu.Game.Overlays
|
|||||||
if (v != Visibility.Hidden) return;
|
if (v != Visibility.Hidden) return;
|
||||||
|
|
||||||
//handle the dialog being dismissed.
|
//handle the dialog being dismissed.
|
||||||
dialog.Delay(PopupDialog.EXIT_DURATION);
|
dialog.Delay(PopupDialog.EXIT_DURATION).Expire();
|
||||||
dialog.Expire();
|
|
||||||
|
|
||||||
if (dialog == currentDialog)
|
if (dialog == currentDialog)
|
||||||
State = Visibility.Hidden;
|
State = Visibility.Hidden;
|
||||||
@ -45,13 +44,13 @@ namespace osu.Game.Overlays
|
|||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
base.PopIn();
|
base.PopIn();
|
||||||
FadeIn(PopupDialog.ENTER_DURATION, EasingTypes.OutQuint);
|
this.FadeIn(PopupDialog.ENTER_DURATION, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
base.PopOut();
|
base.PopOut();
|
||||||
FadeOut(PopupDialog.EXIT_DURATION, EasingTypes.InSine);
|
this.FadeOut(PopupDialog.EXIT_DURATION, EasingTypes.InSine);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DialogOverlay()
|
public DialogOverlay()
|
||||||
|
@ -41,7 +41,7 @@ namespace osu.Game.Overlays.Direct
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
FadeInFromZero(200, EasingTypes.Out);
|
this.FadeInFromZero(200, EasingTypes.Out);
|
||||||
bottomPanel.LayoutDuration = 200;
|
bottomPanel.LayoutDuration = 200;
|
||||||
bottomPanel.LayoutEasing = EasingTypes.Out;
|
bottomPanel.LayoutEasing = EasingTypes.Out;
|
||||||
bottomPanel.Origin = Anchor.BottomLeft;
|
bottomPanel.Origin = Anchor.BottomLeft;
|
||||||
|
@ -43,7 +43,7 @@ namespace osu.Game.Overlays.Direct
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
FadeInFromZero(200, EasingTypes.Out);
|
this.FadeInFromZero(200, EasingTypes.Out);
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
|
@ -67,7 +67,7 @@ namespace osu.Game.Overlays
|
|||||||
base.PopIn();
|
base.PopIn();
|
||||||
|
|
||||||
settingsSection.Bounding = true;
|
settingsSection.Bounding = true;
|
||||||
FadeIn(transition_time, EasingTypes.OutQuint);
|
this.FadeIn(transition_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
InputManager.ChangeFocus(settingsSection);
|
InputManager.ChangeFocus(settingsSection);
|
||||||
}
|
}
|
||||||
@ -77,7 +77,7 @@ namespace osu.Game.Overlays
|
|||||||
base.PopOut();
|
base.PopOut();
|
||||||
|
|
||||||
settingsSection.Bounding = false;
|
settingsSection.Bounding = false;
|
||||||
FadeOut(transition_time);
|
this.FadeOut(transition_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -194,38 +194,43 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
base.PopIn();
|
base.PopIn();
|
||||||
|
|
||||||
FadeIn(200);
|
this.FadeIn(200);
|
||||||
background.FlashColour(Color4.White.Opacity(0.25f), 400);
|
background.FlashColour(Color4.White.Opacity(0.25f), 400);
|
||||||
|
|
||||||
getSample.Play();
|
getSample.Play();
|
||||||
|
|
||||||
using (innerSpin.BeginLoopedSequence())
|
innerSpin.Spin(20000, RotationDirection.Clockwise);
|
||||||
innerSpin.RotateTo(360, 20000);
|
outerSpin.Spin(40000, RotationDirection.Clockwise);
|
||||||
|
|
||||||
using (outerSpin.BeginLoopedSequence())
|
|
||||||
outerSpin.RotateTo(360, 40000);
|
|
||||||
|
|
||||||
using (BeginDelayedSequence(200, true))
|
using (BeginDelayedSequence(200, true))
|
||||||
{
|
{
|
||||||
disc.FadeIn(initial_duration);
|
disc.FadeIn(initial_duration)
|
||||||
|
.ScaleTo(1f, initial_duration * 2, EasingTypes.OutElastic);
|
||||||
|
|
||||||
particleContainer.FadeIn(initial_duration);
|
particleContainer.FadeIn(initial_duration);
|
||||||
outerSpin.FadeTo(0.1f, initial_duration * 2);
|
outerSpin.FadeTo(0.1f, initial_duration * 2);
|
||||||
disc.ScaleTo(1f, initial_duration * 2, EasingTypes.OutElastic);
|
|
||||||
|
|
||||||
using (BeginDelayedSequence(initial_duration + 200, true))
|
using (BeginDelayedSequence(initial_duration + 200, true))
|
||||||
{
|
{
|
||||||
backgroundStrip.FadeIn(step_duration);
|
backgroundStrip.FadeIn(step_duration);
|
||||||
leftStrip.ResizeWidthTo(1f, step_duration, EasingTypes.OutQuint);
|
leftStrip.ResizeWidthTo(1f, step_duration, EasingTypes.OutQuint);
|
||||||
rightStrip.ResizeWidthTo(1f, step_duration, EasingTypes.OutQuint);
|
rightStrip.ResizeWidthTo(1f, step_duration, EasingTypes.OutQuint);
|
||||||
Schedule(() => { if (drawableMedal.State != DisplayState.Full) drawableMedal.State = DisplayState.Icon; });
|
|
||||||
|
|
||||||
using (BeginDelayedSequence(step_duration, true))
|
this.Animate().Schedule(() =>
|
||||||
{
|
{
|
||||||
Schedule(() => { if (drawableMedal.State != DisplayState.Full) drawableMedal.State = DisplayState.MedalUnlocked; });
|
if (drawableMedal.State != DisplayState.Full)
|
||||||
|
drawableMedal.State = DisplayState.Icon;
|
||||||
using (BeginDelayedSequence(step_duration, true))
|
})
|
||||||
Schedule(() => { if (drawableMedal.State != DisplayState.Full) drawableMedal.State = DisplayState.Full; });
|
.Delay(step_duration).Schedule(() =>
|
||||||
}
|
{
|
||||||
|
if (drawableMedal.State != DisplayState.Full)
|
||||||
|
drawableMedal.State = DisplayState.MedalUnlocked;
|
||||||
|
})
|
||||||
|
.Delay(step_duration).Schedule(() =>
|
||||||
|
{
|
||||||
|
if (drawableMedal.State != DisplayState.Full)
|
||||||
|
drawableMedal.State = DisplayState.Full;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -233,7 +238,7 @@ namespace osu.Game.Overlays
|
|||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
base.PopOut();
|
base.PopOut();
|
||||||
FadeOut(200);
|
this.FadeOut(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dismiss()
|
private void dismiss()
|
||||||
@ -242,7 +247,7 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
// if we haven't yet, play out the animation fully
|
// if we haven't yet, play out the animation fully
|
||||||
drawableMedal.State = DisplayState.Full;
|
drawableMedal.State = DisplayState.Full;
|
||||||
Flush(true);
|
FinishTransforms(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,8 +300,8 @@ namespace osu.Game.Overlays
|
|||||||
Radius = 5,
|
Radius = 5,
|
||||||
};
|
};
|
||||||
|
|
||||||
MoveTo(positionForOffset(DISC_SIZE / 2 + 200), 500);
|
this.MoveTo(positionForOffset(DISC_SIZE / 2 + 200), 500);
|
||||||
FadeOut(500);
|
this.FadeOut(500);
|
||||||
Expire();
|
Expire();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,23 +147,26 @@ namespace osu.Game.Overlays.MedalSplash
|
|||||||
medalContainer.ScaleTo(0);
|
medalContainer.ScaleTo(0);
|
||||||
break;
|
break;
|
||||||
case DisplayState.Icon:
|
case DisplayState.Icon:
|
||||||
medalContainer.ScaleTo(1, duration, EasingTypes.OutElastic);
|
medalContainer
|
||||||
medalContainer.FadeIn(duration);
|
.FadeIn(duration)
|
||||||
|
.ScaleTo(1, duration, EasingTypes.OutElastic);
|
||||||
break;
|
break;
|
||||||
case DisplayState.MedalUnlocked:
|
case DisplayState.MedalUnlocked:
|
||||||
medalContainer.ScaleTo(1);
|
medalContainer
|
||||||
medalContainer.Show();
|
.FadeTo(1)
|
||||||
|
.ScaleTo(1);
|
||||||
|
|
||||||
ScaleTo(scale_when_unlocked, duration, EasingTypes.OutExpo);
|
this.ScaleTo(scale_when_unlocked, duration, EasingTypes.OutExpo);
|
||||||
MoveToY(MedalOverlay.DISC_SIZE / 2 - 30, duration, EasingTypes.OutExpo);
|
this.MoveToY(MedalOverlay.DISC_SIZE / 2 - 30, duration, EasingTypes.OutExpo);
|
||||||
unlocked.FadeInFromZero(duration);
|
unlocked.FadeInFromZero(duration);
|
||||||
break;
|
break;
|
||||||
case DisplayState.Full:
|
case DisplayState.Full:
|
||||||
medalContainer.ScaleTo(1);
|
medalContainer
|
||||||
medalContainer.Show();
|
.FadeTo(1)
|
||||||
|
.ScaleTo(1);
|
||||||
|
|
||||||
ScaleTo(scale_when_full, duration, EasingTypes.OutExpo);
|
this.ScaleTo(scale_when_full, duration, EasingTypes.OutExpo);
|
||||||
MoveToY(MedalOverlay.DISC_SIZE / 2 - 60, duration, EasingTypes.OutExpo);
|
this.MoveToY(MedalOverlay.DISC_SIZE / 2 - 60, duration, EasingTypes.OutExpo);
|
||||||
name.FadeInFromZero(duration + 100);
|
name.FadeInFromZero(duration + 100);
|
||||||
description.FadeInFromZero(duration * 2);
|
description.FadeInFromZero(duration * 2);
|
||||||
break;
|
break;
|
||||||
|
@ -81,11 +81,13 @@ namespace osu.Game.Overlays.Mods
|
|||||||
backgroundIcon.Icon = modAfter.Icon;
|
backgroundIcon.Icon = modAfter.Icon;
|
||||||
using (BeginDelayedSequence(mod_switch_duration, true))
|
using (BeginDelayedSequence(mod_switch_duration, true))
|
||||||
{
|
{
|
||||||
foregroundIcon.RotateTo(-rotate_angle * direction);
|
foregroundIcon
|
||||||
foregroundIcon.RotateTo(0f, mod_switch_duration, mod_switch_easing);
|
.RotateTo(-rotate_angle * direction)
|
||||||
|
.RotateTo(0f, mod_switch_duration, mod_switch_easing);
|
||||||
|
|
||||||
backgroundIcon.RotateTo(rotate_angle * direction);
|
backgroundIcon
|
||||||
backgroundIcon.RotateTo(0f, mod_switch_duration, mod_switch_easing);
|
.RotateTo(rotate_angle * direction)
|
||||||
|
.RotateTo(0f, mod_switch_duration, mod_switch_easing);
|
||||||
|
|
||||||
Schedule(() => displayMod(modAfter));
|
Schedule(() => displayMod(modAfter));
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ namespace osu.Game.Overlays.Music
|
|||||||
if (value == selected) return;
|
if (value == selected) return;
|
||||||
selected = value;
|
selected = value;
|
||||||
|
|
||||||
Flush(true);
|
FinishTransforms(true);
|
||||||
foreach (SpriteText s in titleSprites)
|
foreach (SpriteText s in titleSprites)
|
||||||
s.FadeColour(Selected ? hoverColour : Color4.White, fade_duration);
|
s.FadeColour(Selected ? hoverColour : Color4.White, fade_duration);
|
||||||
}
|
}
|
||||||
@ -145,7 +145,7 @@ namespace osu.Game.Overlays.Music
|
|||||||
|
|
||||||
matching = value;
|
matching = value;
|
||||||
|
|
||||||
FadeTo(matching ? 1 : 0, 200);
|
this.FadeTo(matching ? 1 : 0, 200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,16 +101,16 @@ namespace osu.Game.Overlays.Music
|
|||||||
filter.Search.HoldFocus = true;
|
filter.Search.HoldFocus = true;
|
||||||
Schedule(() => inputManager.ChangeFocus(filter.Search));
|
Schedule(() => inputManager.ChangeFocus(filter.Search));
|
||||||
|
|
||||||
ResizeTo(new Vector2(1, playlist_height), transition_duration, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(1, playlist_height), transition_duration, EasingTypes.OutQuint);
|
||||||
FadeIn(transition_duration, EasingTypes.OutQuint);
|
this.FadeIn(transition_duration, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
filter.Search.HoldFocus = false;
|
filter.Search.HoldFocus = false;
|
||||||
|
|
||||||
ResizeTo(new Vector2(1, 0), transition_duration, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(1, 0), transition_duration, EasingTypes.OutQuint);
|
||||||
FadeOut(transition_duration);
|
this.FadeOut(transition_duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void itemSelected(BeatmapSetInfo set)
|
private void itemSelected(BeatmapSetInfo set)
|
||||||
|
@ -368,7 +368,7 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
base.PopIn();
|
base.PopIn();
|
||||||
|
|
||||||
FadeIn(transition_length, EasingTypes.OutQuint);
|
this.FadeIn(transition_length, EasingTypes.OutQuint);
|
||||||
dragContainer.ScaleTo(1, transition_length, EasingTypes.OutElastic);
|
dragContainer.ScaleTo(1, transition_length, EasingTypes.OutElastic);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -376,7 +376,7 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
base.PopOut();
|
base.PopOut();
|
||||||
|
|
||||||
FadeOut(transition_length, EasingTypes.OutQuint);
|
this.FadeOut(transition_length, EasingTypes.OutQuint);
|
||||||
dragContainer.ScaleTo(0.9f, transition_length, EasingTypes.OutQuint);
|
dragContainer.ScaleTo(0.9f, transition_length, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,8 +90,8 @@ namespace osu.Game.Overlays
|
|||||||
base.PopIn();
|
base.PopIn();
|
||||||
|
|
||||||
scrollContainer.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
scrollContainer.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
||||||
MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
this.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
||||||
FadeTo(1, TRANSITION_LENGTH / 2);
|
this.FadeTo(1, TRANSITION_LENGTH / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void markAllRead()
|
private void markAllRead()
|
||||||
@ -105,8 +105,8 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
markAllRead();
|
markAllRead();
|
||||||
|
|
||||||
MoveToX(width, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
this.MoveToX(width, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
||||||
FadeTo(0, TRANSITION_LENGTH / 2);
|
this.FadeTo(0, TRANSITION_LENGTH / 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -135,7 +135,7 @@ namespace osu.Game.Overlays.Notifications
|
|||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
FadeInFromZero(200);
|
this.FadeInFromZero(200);
|
||||||
NotificationContent.MoveToX(DrawSize.X);
|
NotificationContent.MoveToX(DrawSize.X);
|
||||||
NotificationContent.MoveToX(0, 500, EasingTypes.OutQuint);
|
NotificationContent.MoveToX(0, 500, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
@ -148,7 +148,7 @@ namespace osu.Game.Overlays.Notifications
|
|||||||
wasClosed = true;
|
wasClosed = true;
|
||||||
|
|
||||||
Closed?.Invoke();
|
Closed?.Invoke();
|
||||||
FadeOut(100);
|
this.FadeOut(100);
|
||||||
Expire();
|
Expire();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,13 +181,13 @@ namespace osu.Game.Overlays.Notifications
|
|||||||
|
|
||||||
protected override bool OnHover(InputState state)
|
protected override bool OnHover(InputState state)
|
||||||
{
|
{
|
||||||
FadeColour(hoverColour, 200);
|
this.FadeColour(hoverColour, 200);
|
||||||
return base.OnHover(state);
|
return base.OnHover(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnHoverLost(InputState state)
|
protected override void OnHoverLost(InputState state)
|
||||||
{
|
{
|
||||||
FadeColour(OsuColour.Gray(0.2f), 200);
|
this.FadeColour(OsuColour.Gray(0.2f), 200);
|
||||||
base.OnHoverLost(state);
|
base.OnHoverLost(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -212,12 +212,9 @@ namespace osu.Game.Overlays.Notifications
|
|||||||
if (pulsate)
|
if (pulsate)
|
||||||
{
|
{
|
||||||
const float length = 1000;
|
const float length = 1000;
|
||||||
using (pulsateLayer.BeginLoopedSequence(length / 2))
|
pulsateLayer.Loop(length / 2,
|
||||||
{
|
p => p.FadeTo(0.4f, length, EasingTypes.In).Then().FadeTo(1, length, EasingTypes.Out)
|
||||||
pulsateLayer.FadeTo(0.4f, length, EasingTypes.In);
|
);
|
||||||
using (pulsateLayer.BeginDelayedSequence(length))
|
|
||||||
pulsateLayer.FadeTo(1, length, EasingTypes.Out);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,10 +78,7 @@ namespace osu.Game.Overlays.Notifications
|
|||||||
{
|
{
|
||||||
case ProgressNotificationState.Completed:
|
case ProgressNotificationState.Completed:
|
||||||
NotificationContent.MoveToY(-DrawSize.Y / 2, 200, EasingTypes.OutQuint);
|
NotificationContent.MoveToY(-DrawSize.Y / 2, 200, EasingTypes.OutQuint);
|
||||||
FadeTo(0.01f, 200); //don't completely fade out or our scheduled task won't run.
|
this.FadeOut(200).Finally(d => Completed());
|
||||||
|
|
||||||
Delay(100);
|
|
||||||
Schedule(Completed);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -196,7 +193,7 @@ namespace osu.Game.Overlays.Notifications
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
active = value;
|
active = value;
|
||||||
FadeColour(active ? colourActive : colourInactive, 100);
|
this.FadeColour(active ? colourActive : colourInactive, 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,14 +154,13 @@ namespace osu.Game.Overlays
|
|||||||
textLine2.Text = settingValue;
|
textLine2.Text = settingValue;
|
||||||
textLine3.Text = shortcut.ToUpper();
|
textLine3.Text = shortcut.ToUpper();
|
||||||
|
|
||||||
box.FadeIn(500, EasingTypes.OutQuint);
|
box.Animate(
|
||||||
box.ResizeHeightTo(height, 500, EasingTypes.OutQuint);
|
b => b.FadeIn(500, EasingTypes.OutQuint),
|
||||||
|
b => b.ResizeHeightTo(height, 500, EasingTypes.OutQuint)
|
||||||
using (box.BeginDelayedSequence(500))
|
).Then(
|
||||||
{
|
b => b.FadeOutFromOne(1500, EasingTypes.InQuint),
|
||||||
box.FadeOutFromOne(1500, EasingTypes.InQuint);
|
b => b.ResizeHeightTo(height_contracted, 1500, EasingTypes.InQuint)
|
||||||
box.ResizeHeightTo(height_contracted, 1500, EasingTypes.InQuint);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
int optionCount = 0;
|
int optionCount = 0;
|
||||||
int selectedOption = -1;
|
int selectedOption = -1;
|
||||||
@ -261,7 +260,7 @@ namespace osu.Game.Overlays
|
|||||||
};
|
};
|
||||||
|
|
||||||
updateGlow();
|
updateGlow();
|
||||||
Flush(true);
|
FinishTransforms(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -517,13 +517,13 @@ namespace osu.Game.Overlays.Profile
|
|||||||
|
|
||||||
protected override bool OnHover(InputState state)
|
protected override bool OnHover(InputState state)
|
||||||
{
|
{
|
||||||
FadeColour(hoverColour, 500, EasingTypes.OutQuint);
|
this.FadeColour(hoverColour, 500, EasingTypes.OutQuint);
|
||||||
return base.OnHover(state);
|
return base.OnHover(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnHoverLost(InputState state)
|
protected override void OnHoverLost(InputState state)
|
||||||
{
|
{
|
||||||
FadeColour(Color4.White, 500, EasingTypes.OutQuint);
|
this.FadeColour(Color4.White, 500, EasingTypes.OutQuint);
|
||||||
base.OnHoverLost(state);
|
base.OnHoverLost(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ namespace osu.Game.Overlays.Settings
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
// probably needs a better transition.
|
// probably needs a better transition.
|
||||||
FadeTo(value ? 1 : 0);
|
this.FadeTo(value ? 1 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ namespace osu.Game.Overlays.Settings
|
|||||||
{
|
{
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
FadeTo(value ? 1 : 0);
|
this.FadeTo(value ? 1 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace osu.Game.Overlays.Settings
|
|||||||
{
|
{
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
FadeTo(value ? 1 : 0);
|
this.FadeTo(value ? 1 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,10 +94,10 @@ namespace osu.Game.Overlays.Settings
|
|||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
ResizeTo(new Vector2(DEFAULT_WIDTH, Height), 500, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(DEFAULT_WIDTH, Height), 500, EasingTypes.OutQuint);
|
||||||
break;
|
break;
|
||||||
case ExpandedState.Expanded:
|
case ExpandedState.Expanded:
|
||||||
ResizeTo(new Vector2(EXPANDED_WIDTH, Height), 500, EasingTypes.OutQuint);
|
this.ResizeTo(new Vector2(EXPANDED_WIDTH, Height), 500, EasingTypes.OutQuint);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
sectionsContainer.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
sectionsContainer.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
||||||
sidebar.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
sidebar.MoveToX(0, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
||||||
FadeTo(1, TRANSITION_LENGTH / 2);
|
this.FadeTo(1, TRANSITION_LENGTH / 2);
|
||||||
|
|
||||||
searchTextBox.HoldFocus = true;
|
searchTextBox.HoldFocus = true;
|
||||||
}
|
}
|
||||||
@ -138,7 +138,7 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
sectionsContainer.MoveToX(-width, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
sectionsContainer.MoveToX(-width, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
||||||
sidebar.MoveToX(-SIDEBAR_WIDTH, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
sidebar.MoveToX(-SIDEBAR_WIDTH, TRANSITION_LENGTH, EasingTypes.OutQuint);
|
||||||
FadeTo(0, TRANSITION_LENGTH / 2);
|
this.FadeTo(0, TRANSITION_LENGTH / 2);
|
||||||
|
|
||||||
searchTextBox.HoldFocus = false;
|
searchTextBox.HoldFocus = false;
|
||||||
if (searchTextBox.HasFocus)
|
if (searchTextBox.HasFocus)
|
||||||
|
@ -121,16 +121,16 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
MoveToY(0, transition_time, EasingTypes.OutQuint);
|
this.MoveToY(0, transition_time, EasingTypes.OutQuint);
|
||||||
FadeIn(transition_time / 2, EasingTypes.OutQuint);
|
this.FadeIn(transition_time / 2, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
userArea?.LoginOverlay.Hide();
|
userArea?.LoginOverlay.Hide();
|
||||||
|
|
||||||
MoveToY(-DrawSize.Y, transition_time, EasingTypes.OutQuint);
|
this.MoveToY(-DrawSize.Y, transition_time, EasingTypes.OutQuint);
|
||||||
FadeOut(transition_time);
|
this.FadeOut(transition_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
|
|
||||||
public override bool HandleInput => !ruleset.Disabled;
|
public override bool HandleInput => !ruleset.Disabled;
|
||||||
|
|
||||||
private void disabledChanged(bool isDisabled) => FadeColour(isDisabled ? Color4.Gray : Color4.White, 300);
|
private void disabledChanged(bool isDisabled) => this.FadeColour(isDisabled ? Color4.Gray : Color4.White, 300);
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
|
@ -137,23 +137,23 @@ namespace osu.Game.Overlays
|
|||||||
foreach (var w in wavesContainer.Children)
|
foreach (var w in wavesContainer.Children)
|
||||||
w.State = Visibility.Visible;
|
w.State = Visibility.Visible;
|
||||||
|
|
||||||
FadeIn(100, EasingTypes.OutQuint);
|
this.FadeIn(100, EasingTypes.OutQuint);
|
||||||
contentContainer.MoveToY(0, APPEAR_DURATION, EasingTypes.OutQuint);
|
contentContainer.MoveToY(0, APPEAR_DURATION, EasingTypes.OutQuint);
|
||||||
|
|
||||||
FadeIn(100, EasingTypes.OutQuint);
|
this.FadeIn(100, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
base.PopOut();
|
base.PopOut();
|
||||||
|
|
||||||
FadeOut(DISAPPEAR_DURATION, EasingTypes.InQuint);
|
this.FadeOut(DISAPPEAR_DURATION, EasingTypes.InQuint);
|
||||||
contentContainer.MoveToY(DrawHeight * 2f, DISAPPEAR_DURATION, EasingTypes.In);
|
contentContainer.MoveToY(DrawHeight * 2f, DISAPPEAR_DURATION, EasingTypes.In);
|
||||||
|
|
||||||
foreach (var w in wavesContainer.Children)
|
foreach (var w in wavesContainer.Children)
|
||||||
w.State = Visibility.Hidden;
|
w.State = Visibility.Hidden;
|
||||||
|
|
||||||
FadeOut(DISAPPEAR_DURATION, EasingTypes.InQuint);
|
this.FadeOut(DISAPPEAR_DURATION, EasingTypes.InQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateAfterChildren()
|
protected override void UpdateAfterChildren()
|
||||||
@ -210,10 +210,10 @@ namespace osu.Game.Overlays
|
|||||||
switch (value)
|
switch (value)
|
||||||
{
|
{
|
||||||
case Visibility.Hidden:
|
case Visibility.Hidden:
|
||||||
MoveToY(Parent.Parent.DrawSize.Y, DISAPPEAR_DURATION, easing_hide);
|
this.MoveToY(Parent.Parent.DrawSize.Y, DISAPPEAR_DURATION, easing_hide);
|
||||||
break;
|
break;
|
||||||
case Visibility.Visible:
|
case Visibility.Visible:
|
||||||
MoveToY(FinalPosition, APPEAR_DURATION, easing_show);
|
this.MoveToY(FinalPosition, APPEAR_DURATION, easing_show);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,26 +64,24 @@ namespace osu.Game.Rulesets.Judgements
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
FadeInFromZero(100, EasingTypes.OutQuint);
|
this.FadeInFromZero(100, EasingTypes.OutQuint);
|
||||||
|
|
||||||
switch (Judgement.Result)
|
switch (Judgement.Result)
|
||||||
{
|
{
|
||||||
case HitResult.Miss:
|
case HitResult.Miss:
|
||||||
ScaleTo(1.6f);
|
this.ScaleTo(1.6f);
|
||||||
ScaleTo(1, 100, EasingTypes.In);
|
this.ScaleTo(1, 100, EasingTypes.In);
|
||||||
|
|
||||||
MoveToOffset(new Vector2(0, 100), 800, EasingTypes.InQuint);
|
this.MoveToOffset(new Vector2(0, 100), 800, EasingTypes.InQuint);
|
||||||
RotateTo(40, 800, EasingTypes.InQuint);
|
this.RotateTo(40, 800, EasingTypes.InQuint);
|
||||||
|
|
||||||
Delay(600);
|
this.Delay(600).FadeOut(200);
|
||||||
FadeOut(200);
|
|
||||||
break;
|
break;
|
||||||
case HitResult.Hit:
|
case HitResult.Hit:
|
||||||
ScaleTo(0.9f);
|
this.ScaleTo(0.9f);
|
||||||
ScaleTo(1, 500, EasingTypes.OutElastic);
|
this.ScaleTo(1, 500, EasingTypes.OutElastic);
|
||||||
|
|
||||||
Delay(100);
|
this.Delay(100).FadeOut(400);
|
||||||
FadeOut(400);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ namespace osu.Game.Screens.Backgrounds
|
|||||||
if (background != null)
|
if (background != null)
|
||||||
{
|
{
|
||||||
newDepth = background.Depth + 1;
|
newDepth = background.Depth + 1;
|
||||||
background.Flush();
|
background.FinishTransforms();
|
||||||
background.FadeOut(250);
|
background.FadeOut(250);
|
||||||
background.Expire();
|
background.Expire();
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ using OpenTK.Graphics;
|
|||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Game.Screens.Backgrounds;
|
using osu.Game.Screens.Backgrounds;
|
||||||
using osu.Game.Screens.Select;
|
using osu.Game.Screens.Select;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Edit
|
namespace osu.Game.Screens.Edit
|
||||||
{
|
{
|
||||||
|
@ -130,14 +130,13 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
icon.RotateTo(rightward ? 10 : -10, duration * 2, EasingTypes.InOutSine);
|
icon.RotateTo(rightward ? 10 : -10, duration * 2, EasingTypes.InOutSine);
|
||||||
|
|
||||||
icon.MoveToY(-10, duration, EasingTypes.Out);
|
icon.Animate(
|
||||||
icon.ScaleTo(Vector2.One, duration, EasingTypes.Out);
|
i => i.MoveToY(-10, duration, EasingTypes.Out),
|
||||||
|
i => i.ScaleTo(1, duration, EasingTypes.Out)
|
||||||
using (icon.BeginDelayedSequence(duration))
|
).Then(
|
||||||
{
|
i => i.MoveToY(0, duration, EasingTypes.In),
|
||||||
icon.MoveToY(0, duration, EasingTypes.In);
|
i => i.ScaleTo(new Vector2(1, 0.9f), duration, EasingTypes.In)
|
||||||
icon.ScaleTo(new Vector2(1, 0.9f), duration, EasingTypes.In);
|
);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnHover(InputState state)
|
protected override bool OnHover(InputState state)
|
||||||
@ -248,23 +247,23 @@ namespace osu.Game.Screens.Menu
|
|||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
box.ScaleTo(new Vector2(0, 1), 500, EasingTypes.OutExpo);
|
box.ScaleTo(new Vector2(0, 1), 500, EasingTypes.OutExpo);
|
||||||
FadeOut(500);
|
this.FadeOut(500);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
box.ScaleTo(new Vector2(0, 1), 400, EasingTypes.InSine);
|
box.ScaleTo(new Vector2(0, 1), 400, EasingTypes.InSine);
|
||||||
FadeOut(800);
|
this.FadeOut(800);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ButtonState.Expanded:
|
case ButtonState.Expanded:
|
||||||
const int expand_duration = 500;
|
const int expand_duration = 500;
|
||||||
box.ScaleTo(new Vector2(1, 1), expand_duration, EasingTypes.OutExpo);
|
box.ScaleTo(new Vector2(1, 1), expand_duration, EasingTypes.OutExpo);
|
||||||
FadeIn(expand_duration / 6f);
|
this.FadeIn(expand_duration / 6f);
|
||||||
break;
|
break;
|
||||||
case ButtonState.Exploded:
|
case ButtonState.Exploded:
|
||||||
const int explode_duration = 200;
|
const int explode_duration = 200;
|
||||||
box.ScaleTo(new Vector2(2, 1), explode_duration, EasingTypes.OutExpo);
|
box.ScaleTo(new Vector2(2, 1), explode_duration, EasingTypes.OutExpo);
|
||||||
FadeOut(explode_duration / 4f * 3);
|
this.FadeOut(explode_duration / 4f * 3);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -216,7 +216,7 @@ namespace osu.Game.Screens.Menu
|
|||||||
bool fromInitial = lastState == MenuState.Initial;
|
bool fromInitial = lastState == MenuState.Initial;
|
||||||
|
|
||||||
if (state == MenuState.TopLevel)
|
if (state == MenuState.TopLevel)
|
||||||
buttonArea.Flush(true);
|
buttonArea.FinishTransforms(true);
|
||||||
|
|
||||||
using (buttonArea.BeginDelayedSequence(fromInitial ? 150 : 0, true))
|
using (buttonArea.BeginDelayedSequence(fromInitial ? 150 : 0, true))
|
||||||
{
|
{
|
||||||
@ -224,16 +224,13 @@ namespace osu.Game.Screens.Menu
|
|||||||
{
|
{
|
||||||
case MenuState.Exit:
|
case MenuState.Exit:
|
||||||
case MenuState.Initial:
|
case MenuState.Initial:
|
||||||
toolbar?.Hide();
|
|
||||||
|
|
||||||
buttonAreaBackground.ScaleTo(Vector2.One, 500, EasingTypes.Out);
|
buttonAreaBackground.ScaleTo(Vector2.One, 500, EasingTypes.Out);
|
||||||
buttonArea.FadeOut(300);
|
buttonArea.FadeOut(300);
|
||||||
|
|
||||||
using (osuLogo.BeginDelayedSequence(150))
|
osuLogo.Delay(150)
|
||||||
{
|
.Schedule(() => toolbar?.Hide())
|
||||||
osuLogo.MoveTo(Vector2.Zero, 800, EasingTypes.OutExpo);
|
.ScaleTo(1, 800, EasingTypes.OutExpo)
|
||||||
osuLogo.ScaleTo(1, 800, EasingTypes.OutExpo);
|
.MoveTo(Vector2.Zero, 800, EasingTypes.OutExpo);
|
||||||
}
|
|
||||||
|
|
||||||
foreach (Button b in buttonsTopLevel)
|
foreach (Button b in buttonsTopLevel)
|
||||||
b.State = ButtonState.Contracted;
|
b.State = ButtonState.Contracted;
|
||||||
@ -252,17 +249,18 @@ namespace osu.Game.Screens.Menu
|
|||||||
case MenuState.TopLevel:
|
case MenuState.TopLevel:
|
||||||
buttonAreaBackground.ScaleTo(Vector2.One, 200, EasingTypes.Out);
|
buttonAreaBackground.ScaleTo(Vector2.One, 200, EasingTypes.Out);
|
||||||
|
|
||||||
osuLogo.ClearTransforms();
|
var sequence = osuLogo
|
||||||
osuLogo.MoveTo(buttonFlow.DrawPosition, 200, EasingTypes.In);
|
.ScaleTo(0.5f, 200, EasingTypes.In)
|
||||||
osuLogo.ScaleTo(0.5f, 200, EasingTypes.In);
|
.MoveTo(buttonFlow.DrawPosition, 200, EasingTypes.In);
|
||||||
|
|
||||||
buttonArea.FadeIn(300);
|
|
||||||
|
|
||||||
if (fromInitial && osuLogo.Scale.X > 0.5f)
|
if (fromInitial && osuLogo.Scale.X > 0.5f)
|
||||||
using (osuLogo.BeginDelayedSequence(200, true))
|
sequence.OnComplete(o =>
|
||||||
osuLogo.Impact();
|
{
|
||||||
|
o.Impact();
|
||||||
|
toolbar?.Show();
|
||||||
|
});
|
||||||
|
|
||||||
Scheduler.AddDelayed(() => toolbar?.Show(), 150);
|
buttonArea.FadeIn(300);
|
||||||
|
|
||||||
foreach (Button b in buttonsTopLevel)
|
foreach (Button b in buttonsTopLevel)
|
||||||
b.State = ButtonState.Expanded;
|
b.State = ButtonState.Expanded;
|
||||||
|
@ -98,18 +98,13 @@ namespace osu.Game.Screens.Menu
|
|||||||
{
|
{
|
||||||
base.OnEntering(last);
|
base.OnEntering(last);
|
||||||
|
|
||||||
Content.FadeInFromZero(500);
|
icon.Delay(1500).FadeColour(iconColour, 200);
|
||||||
|
|
||||||
icon.Delay(1500);
|
Content
|
||||||
icon.FadeColour(iconColour, 200);
|
.FadeInFromZero(500)
|
||||||
|
.Then(5500)
|
||||||
Delay(6000, true);
|
.FadeOut(250)
|
||||||
|
.Finally(d => Push(intro));
|
||||||
Content.FadeOut(250);
|
|
||||||
|
|
||||||
Delay(250);
|
|
||||||
|
|
||||||
Schedule(() => Push(intro));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,9 +90,9 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
private void flash(Drawable d, double beatLength, bool kiai, TrackAmplitudes amplitudes)
|
private void flash(Drawable d, double beatLength, bool kiai, TrackAmplitudes amplitudes)
|
||||||
{
|
{
|
||||||
d.FadeTo(Math.Max(0, ((d.Equals(leftBox) ? amplitudes.LeftChannel : amplitudes.RightChannel) - amplitude_dead_zone) / (kiai ? kiai_multiplier : alpha_multiplier)), box_fade_in_time);
|
d.FadeTo(Math.Max(0, ((d.Equals(leftBox) ? amplitudes.LeftChannel : amplitudes.RightChannel) - amplitude_dead_zone) / (kiai ? kiai_multiplier : alpha_multiplier)), box_fade_in_time)
|
||||||
using (d.BeginDelayedSequence(box_fade_in_time))
|
.Then()
|
||||||
d.FadeOut(beatLength, EasingTypes.In);
|
.FadeOut(beatLength, EasingTypes.In);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -237,34 +237,32 @@ namespace osu.Game.Screens.Menu
|
|||||||
if (beatIndex < 0) return;
|
if (beatIndex < 0) return;
|
||||||
|
|
||||||
if (IsHovered)
|
if (IsHovered)
|
||||||
{
|
this.Delay(early_activation).Schedule(() => sampleBeat.Play());
|
||||||
using (BeginDelayedSequence(early_activation))
|
|
||||||
Schedule(() => sampleBeat.Play());
|
|
||||||
}
|
|
||||||
|
|
||||||
logoBeatContainer.ScaleTo(1 - 0.02f * amplitudeAdjust, early_activation, EasingTypes.Out);
|
logoBeatContainer
|
||||||
using (logoBeatContainer.BeginDelayedSequence(early_activation))
|
.ScaleTo(1 - 0.02f * amplitudeAdjust, early_activation, EasingTypes.Out)
|
||||||
logoBeatContainer.ScaleTo(1, beatLength * 2, EasingTypes.OutQuint);
|
.Then()
|
||||||
|
.ScaleTo(1, beatLength * 2, EasingTypes.OutQuint);
|
||||||
|
|
||||||
ripple.ClearTransforms();
|
ripple.ClearTransforms();
|
||||||
|
ripple
|
||||||
ripple.ScaleTo(logoAmplitudeContainer.Scale);
|
.ScaleTo(logoAmplitudeContainer.Scale)
|
||||||
ripple.Alpha = 0.15f * amplitudeAdjust;
|
.ScaleTo(logoAmplitudeContainer.Scale * (1 + 0.04f * amplitudeAdjust), beatLength, EasingTypes.OutQuint)
|
||||||
|
.FadeTo(0.15f * amplitudeAdjust).FadeOut(beatLength, EasingTypes.OutQuint);
|
||||||
ripple.ScaleTo(logoAmplitudeContainer.Scale * (1 + 0.04f * amplitudeAdjust), beatLength, EasingTypes.OutQuint);
|
|
||||||
ripple.FadeOut(beatLength, EasingTypes.OutQuint);
|
|
||||||
|
|
||||||
if (effectPoint.KiaiMode && flashLayer.Alpha < 0.4f)
|
if (effectPoint.KiaiMode && flashLayer.Alpha < 0.4f)
|
||||||
{
|
{
|
||||||
flashLayer.ClearTransforms();
|
flashLayer.ClearTransforms();
|
||||||
visualizer.ClearTransforms();
|
flashLayer
|
||||||
|
.FadeTo(0.2f * amplitudeAdjust, early_activation, EasingTypes.Out)
|
||||||
|
.Then()
|
||||||
|
.FadeOut(beatLength);
|
||||||
|
|
||||||
flashLayer.FadeTo(0.2f * amplitudeAdjust, early_activation, EasingTypes.Out);
|
visualizer.ClearTransforms();
|
||||||
visualizer.FadeTo(0.9f * amplitudeAdjust, early_activation, EasingTypes.Out);
|
visualizer
|
||||||
using (flashLayer.BeginDelayedSequence(early_activation))
|
.FadeTo(0.9f * amplitudeAdjust, early_activation, EasingTypes.Out)
|
||||||
flashLayer.FadeOut(beatLength);
|
.Then()
|
||||||
using (visualizer.BeginDelayedSequence(early_activation))
|
.FadeTo(0.5f, beatLength);
|
||||||
visualizer.FadeTo(0.5f, beatLength);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ using osu.Game.Screens.Backgrounds;
|
|||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
using osu.Game.Screens.Select;
|
using osu.Game.Screens.Select;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Multiplayer
|
namespace osu.Game.Screens.Multiplayer
|
||||||
{
|
{
|
||||||
|
@ -5,8 +5,6 @@ using osu.Framework.Configuration;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Framework.MathUtils;
|
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Play.HUD
|
namespace osu.Game.Screens.Play.HUD
|
||||||
@ -130,7 +128,7 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
|
|
||||||
protected virtual void OnCountRolling(int currentValue, int newValue)
|
protected virtual void OnCountRolling(int currentValue, int newValue)
|
||||||
{
|
{
|
||||||
transformRoll(new TransformComboRoll(), currentValue, newValue);
|
transformRoll(currentValue, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnCountIncrement(int currentValue, int newValue)
|
protected virtual void OnCountIncrement(int currentValue, int newValue)
|
||||||
@ -170,7 +168,7 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
|
|
||||||
if (!rolling)
|
if (!rolling)
|
||||||
{
|
{
|
||||||
Flush(false, typeof(TransformComboRoll));
|
FinishTransforms(false, nameof(DisplayedCount));
|
||||||
IsRolling = false;
|
IsRolling = false;
|
||||||
DisplayedCount = prev;
|
DisplayedCount = prev;
|
||||||
|
|
||||||
@ -186,40 +184,9 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void transformRoll(TransformComboRoll transform, int currentValue, int newValue)
|
private void transformRoll(int currentValue, int newValue)
|
||||||
{
|
{
|
||||||
Flush(false, typeof(TransformComboRoll));
|
this.TransformTo(nameof(DisplayedCount), newValue, getProportionalDuration(currentValue, newValue), RollingEasing);
|
||||||
|
|
||||||
if (RollingDuration < 1)
|
|
||||||
{
|
|
||||||
DisplayedCount = Current;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
transform.StartTime = Time.Current;
|
|
||||||
transform.EndTime = Time.Current + getProportionalDuration(currentValue, newValue);
|
|
||||||
transform.EndValue = newValue;
|
|
||||||
transform.Easing = RollingEasing;
|
|
||||||
|
|
||||||
Transforms.Add(transform);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected class TransformComboRoll : Transform<int, Drawable>
|
|
||||||
{
|
|
||||||
public virtual int CurrentValue
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
double time = Time?.Current ?? 0;
|
|
||||||
if (time < StartTime) return StartValue;
|
|
||||||
if (time >= EndTime) return EndValue;
|
|
||||||
|
|
||||||
return (int)Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Apply(Drawable d) => ((ComboCounter)d).DisplayedCount = CurrentValue;
|
|
||||||
public override void ReadIntoStartValue(Drawable d) => StartValue = ((ComboCounter)d).DisplayedCount;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void OnDisplayedCountRolling(int currentValue, int newValue);
|
protected abstract void OnDisplayedCountRolling(int currentValue, int newValue);
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System;
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Framework.MathUtils;
|
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Play.HUD
|
namespace osu.Game.Screens.Play.HUD
|
||||||
@ -12,44 +9,24 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to display combo with a roll-up animation in results screen.
|
/// Used to display combo with a roll-up animation in results screen.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ComboResultCounter : RollingCounter<ulong>
|
public class ComboResultCounter : RollingCounter<long>
|
||||||
{
|
{
|
||||||
protected override Type TransformType => typeof(TransformComboResult);
|
|
||||||
|
|
||||||
protected override double RollingDuration => 500;
|
protected override double RollingDuration => 500;
|
||||||
protected override EasingTypes RollingEasing => EasingTypes.Out;
|
protected override EasingTypes RollingEasing => EasingTypes.Out;
|
||||||
|
|
||||||
protected override double GetProportionalDuration(ulong currentValue, ulong newValue)
|
protected override double GetProportionalDuration(long currentValue, long newValue)
|
||||||
{
|
{
|
||||||
return currentValue > newValue ? currentValue - newValue : newValue - currentValue;
|
return currentValue > newValue ? currentValue - newValue : newValue - currentValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string FormatCount(ulong count)
|
protected override string FormatCount(long count)
|
||||||
{
|
{
|
||||||
return $@"{count}x";
|
return $@"{count}x";
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Increment(ulong amount)
|
public override void Increment(long amount)
|
||||||
{
|
{
|
||||||
Current.Value = Current + amount;
|
Current.Value = Current + amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected class TransformComboResult : Transform<ulong, Drawable>
|
|
||||||
{
|
|
||||||
public virtual ulong CurrentValue
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
double time = Time?.Current ?? 0;
|
|
||||||
if (time < StartTime) return StartValue;
|
|
||||||
if (time >= EndTime) return EndValue;
|
|
||||||
|
|
||||||
return (ulong)Interpolation.ValueAt(time, StartValue, EndValue, StartTime, EndTime, Easing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Apply(Drawable d) => ((ComboResultCounter)d).DisplayedCount = CurrentValue;
|
|
||||||
public override void ReadIntoStartValue(Drawable d) => StartValue = ((ComboResultCounter)d).DisplayedCount;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
else
|
else
|
||||||
unrankedText.Hide();
|
unrankedText.Hide();
|
||||||
|
|
||||||
iconsContainer.Flush();
|
iconsContainer.FinishTransforms();
|
||||||
iconsContainer.FadeInFromZero(fade_duration, EasingTypes.OutQuint);
|
iconsContainer.FadeInFromZero(fade_duration, EasingTypes.OutQuint);
|
||||||
expand();
|
expand();
|
||||||
using (iconsContainer.BeginDelayedSequence(1200))
|
using (iconsContainer.BeginDelayedSequence(1200))
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Play.HUD
|
namespace osu.Game.Screens.Play.HUD
|
||||||
{
|
{
|
||||||
|
@ -97,9 +97,9 @@ namespace osu.Game.Screens.Play.HUD
|
|||||||
if (judgement.Result == HitResult.Miss)
|
if (judgement.Result == HitResult.Miss)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fill.FadeEdgeEffectTo(Math.Min(1, fill.EdgeEffect.Colour.Linear.A + (1f - base_glow_opacity) / glow_max_hits), 50, EasingTypes.OutQuint);
|
fill.FadeEdgeEffectTo(Math.Min(1, fill.EdgeEffect.Colour.Linear.A + (1f - base_glow_opacity) / glow_max_hits), 50, EasingTypes.OutQuint)
|
||||||
fill.Delay(glow_fade_delay);
|
.Delay(glow_fade_delay)
|
||||||
fill.FadeEdgeEffectTo(base_glow_opacity, glow_fade_time, EasingTypes.OutQuint);
|
.FadeEdgeEffectTo(base_glow_opacity, glow_fade_time, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void SetHealth(float value) => fill.ResizeTo(new Vector2(value, 1), 200, EasingTypes.OutQuint);
|
protected override void SetHealth(float value) => fill.ResizeTo(new Vector2(value, 1), 200, EasingTypes.OutQuint);
|
||||||
|
@ -98,10 +98,7 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
// in the case a replay isn't loaded, we want some elements to only appear briefly.
|
// in the case a replay isn't loaded, we want some elements to only appear briefly.
|
||||||
if (!replayLoaded)
|
if (!replayLoaded)
|
||||||
{
|
ModDisplay.Delay(2000).FadeOut(200);
|
||||||
using (ModDisplay.BeginDelayedSequence(2000))
|
|
||||||
ModDisplay.FadeOut(200);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args)
|
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args)
|
||||||
|
@ -44,7 +44,7 @@ namespace osu.Game.Screens.Play
|
|||||||
private void load(OsuConfigManager config)
|
private void load(OsuConfigManager config)
|
||||||
{
|
{
|
||||||
showKeyCounter = config.GetBindable<bool>(OsuSetting.KeyOverlay);
|
showKeyCounter = config.GetBindable<bool>(OsuSetting.KeyOverlay);
|
||||||
showKeyCounter.ValueChanged += keyCounterVisibility => FadeTo(keyCounterVisibility ? 1 : 0, duration);
|
showKeyCounter.ValueChanged += keyCounterVisibility => this.FadeTo(keyCounterVisibility ? 1 : 0, duration);
|
||||||
showKeyCounter.TriggerChange();
|
showKeyCounter.TriggerChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,8 +76,8 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
public override bool HandleInput => State == Visibility.Visible;
|
public override bool HandleInput => State == Visibility.Visible;
|
||||||
|
|
||||||
protected override void PopIn() => FadeIn(transition_duration, EasingTypes.In);
|
protected override void PopIn() => this.FadeIn(transition_duration, EasingTypes.In);
|
||||||
protected override void PopOut() => FadeOut(transition_duration, EasingTypes.In);
|
protected override void PopOut() => this.FadeOut(transition_duration, EasingTypes.In);
|
||||||
|
|
||||||
// Don't let mouse down events through the overlay or people can click circles while paused.
|
// Don't let mouse down events through the overlay or people can click circles while paused.
|
||||||
protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => true;
|
protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => true;
|
||||||
|
@ -56,11 +56,7 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
AddInternal(pauseOverlay = new PauseOverlay
|
AddInternal(pauseOverlay = new PauseOverlay
|
||||||
{
|
{
|
||||||
OnResume = delegate
|
OnResume = () => this.Delay(400).Schedule(Resume),
|
||||||
{
|
|
||||||
Delay(400);
|
|
||||||
Schedule(Resume);
|
|
||||||
},
|
|
||||||
OnRetry = () => OnRetry(),
|
OnRetry = () => OnRetry(),
|
||||||
OnQuit = () => OnQuit(),
|
OnQuit = () => OnQuit(),
|
||||||
});
|
});
|
||||||
|
@ -269,19 +269,17 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
dimLevel.ValueChanged += newDim => Background?.FadeTo(1 - (float)newDim, 800);
|
dimLevel.ValueChanged += newDim => Background?.FadeTo(1 - (float)newDim, 800);
|
||||||
|
|
||||||
Content.ScaleTo(0.7f);
|
Content
|
||||||
|
.ScaleTo(0.7f)
|
||||||
|
.ScaleTo(1, 750, EasingTypes.OutQuint)
|
||||||
|
.Delay(250)
|
||||||
|
.FadeIn(250);
|
||||||
|
|
||||||
using (Content.BeginDelayedSequence(250))
|
this.Delay(750).Schedule(() =>
|
||||||
Content.FadeIn(250);
|
{
|
||||||
|
if (!pauseContainer.IsPaused)
|
||||||
Content.ScaleTo(1, 750, EasingTypes.OutQuint);
|
decoupledClock.Start();
|
||||||
|
});
|
||||||
using (BeginDelayedSequence(750))
|
|
||||||
Schedule(() =>
|
|
||||||
{
|
|
||||||
if (!pauseContainer.IsPaused)
|
|
||||||
decoupledClock.Start();
|
|
||||||
});
|
|
||||||
|
|
||||||
pauseContainer.Alpha = 0;
|
pauseContainer.Alpha = 0;
|
||||||
pauseContainer.FadeIn(750, EasingTypes.OutQuint);
|
pauseContainer.FadeIn(750, EasingTypes.OutQuint);
|
||||||
|
@ -77,9 +77,7 @@ namespace osu.Game.Screens.Play
|
|||||||
RestartRequested = player.RestartRequested,
|
RestartRequested = player.RestartRequested,
|
||||||
});
|
});
|
||||||
|
|
||||||
Delay(400);
|
this.Delay(400).Schedule(pushWhenLoaded);
|
||||||
|
|
||||||
Schedule(pushWhenLoaded);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void contentIn()
|
private void contentIn()
|
||||||
@ -104,16 +102,9 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
contentIn();
|
contentIn();
|
||||||
|
|
||||||
Delay(500, true);
|
logo.Delay(500).MoveToOffset(new Vector2(0, -180), 500, EasingTypes.InOutExpo);
|
||||||
|
info.Delay(750).FadeIn(500);
|
||||||
logo.MoveToOffset(new Vector2(0, -180), 500, EasingTypes.InOutExpo);
|
this.Delay(2150).Schedule(pushWhenLoaded);
|
||||||
Delay(250, true);
|
|
||||||
|
|
||||||
info.FadeIn(500);
|
|
||||||
|
|
||||||
Delay(1400, true);
|
|
||||||
|
|
||||||
Schedule(pushWhenLoaded);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pushWhenLoaded()
|
private void pushWhenLoaded()
|
||||||
@ -123,9 +114,7 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
contentOut();
|
contentOut();
|
||||||
|
|
||||||
Delay(250);
|
this.Delay(250).Schedule(() =>
|
||||||
|
|
||||||
Schedule(() =>
|
|
||||||
{
|
{
|
||||||
if (!IsCurrentScreen) return;
|
if (!IsCurrentScreen) return;
|
||||||
|
|
||||||
@ -143,7 +132,7 @@ namespace osu.Game.Screens.Play
|
|||||||
protected override bool OnExiting(Screen next)
|
protected override bool OnExiting(Screen next)
|
||||||
{
|
{
|
||||||
Content.ScaleTo(0.7f, 150, EasingTypes.InQuint);
|
Content.ScaleTo(0.7f, 150, EasingTypes.InQuint);
|
||||||
FadeOut(150);
|
this.FadeOut(150);
|
||||||
|
|
||||||
return base.OnExiting(next);
|
return base.OnExiting(next);
|
||||||
}
|
}
|
||||||
|
@ -100,9 +100,9 @@ namespace osu.Game.Screens.Play
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FadeInFromZero(fade_time);
|
this.FadeInFromZero(fade_time);
|
||||||
using (BeginAbsoluteSequence(beginFadeTime))
|
using (BeginAbsoluteSequence(beginFadeTime))
|
||||||
FadeOut(fade_time);
|
this.FadeOut(fade_time);
|
||||||
|
|
||||||
button.Action = () => AudioClock?.Seek(startTime - skip_required_cutoff - fade_time);
|
button.Action = () => AudioClock?.Seek(startTime - skip_required_cutoff - fade_time);
|
||||||
|
|
||||||
@ -154,14 +154,14 @@ namespace osu.Game.Screens.Play
|
|||||||
{
|
{
|
||||||
case Visibility.Visible:
|
case Visibility.Visible:
|
||||||
if (lastState == Visibility.Hidden)
|
if (lastState == Visibility.Hidden)
|
||||||
FadeIn(500, EasingTypes.OutExpo);
|
this.FadeIn(500, EasingTypes.OutExpo);
|
||||||
|
|
||||||
if (!IsHovered)
|
if (!IsHovered)
|
||||||
using (BeginDelayedSequence(1000))
|
using (BeginDelayedSequence(1000))
|
||||||
scheduledHide = Schedule(() => State = Visibility.Hidden);
|
scheduledHide = Schedule(() => State = Visibility.Hidden);
|
||||||
break;
|
break;
|
||||||
case Visibility.Hidden:
|
case Visibility.Hidden:
|
||||||
FadeOut(1000, EasingTypes.OutExpo);
|
this.FadeOut(1000, EasingTypes.OutExpo);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,18 +122,18 @@ namespace osu.Game.Screens.Play
|
|||||||
private void updateBarVisibility()
|
private void updateBarVisibility()
|
||||||
{
|
{
|
||||||
bar.FadeTo(allowSeeking ? 1 : 0, transition_duration, EasingTypes.In);
|
bar.FadeTo(allowSeeking ? 1 : 0, transition_duration, EasingTypes.In);
|
||||||
MoveTo(new Vector2(0, allowSeeking ? 0 : bottom_bar_height), transition_duration, EasingTypes.In);
|
this.MoveTo(new Vector2(0, allowSeeking ? 0 : bottom_bar_height), transition_duration, EasingTypes.In);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
updateBarVisibility();
|
updateBarVisibility();
|
||||||
FadeIn(500, EasingTypes.OutQuint);
|
this.FadeIn(500, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
FadeOut(100);
|
this.FadeOut(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
|
@ -67,20 +67,23 @@ namespace osu.Game.Screens.Ranking
|
|||||||
modeChangeButtons.FadeOut();
|
modeChangeButtons.FadeOut();
|
||||||
currentPage.FadeOut();
|
currentPage.FadeOut();
|
||||||
|
|
||||||
circleOuterBackground.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
circleOuterBackground
|
||||||
circleOuterBackground.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
.FadeIn(transition_time, EasingTypes.OutQuint)
|
||||||
|
.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
using (BeginDelayedSequence(transition_time * 0.25f, true))
|
using (BeginDelayedSequence(transition_time * 0.25f, true))
|
||||||
{
|
{
|
||||||
circleOuter.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
circleOuter
|
||||||
circleOuter.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
.FadeIn(transition_time, EasingTypes.OutQuint)
|
||||||
|
.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
using (BeginDelayedSequence(transition_time * 0.3f, true))
|
using (BeginDelayedSequence(transition_time * 0.3f, true))
|
||||||
{
|
{
|
||||||
backgroundParallax.FadeIn(transition_time, EasingTypes.OutQuint);
|
backgroundParallax.FadeIn(transition_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
circleInner.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
circleInner
|
||||||
circleInner.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
.FadeIn(transition_time, EasingTypes.OutQuint)
|
||||||
|
.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
using (BeginDelayedSequence(transition_time * 0.4f, true))
|
using (BeginDelayedSequence(transition_time * 0.4f, true))
|
||||||
{
|
{
|
||||||
|
@ -33,8 +33,7 @@ namespace osu.Game.Screens.Ranking
|
|||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
fill.Delay(400);
|
fill.Delay(400).FadeInFromZero(600);
|
||||||
fill.FadeInFromZero(600);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
|
@ -178,9 +178,9 @@ namespace osu.Game.Screens.Ranking
|
|||||||
int delay = 0;
|
int delay = 0;
|
||||||
foreach (var s in statisticsContainer.Children)
|
foreach (var s in statisticsContainer.Children)
|
||||||
{
|
{
|
||||||
s.FadeOut();
|
s.FadeOut()
|
||||||
s.Delay(delay += 200);
|
.Then(delay += 200)
|
||||||
s.FadeIn(300 + delay, EasingTypes.Out);
|
.FadeIn(300 + delay, EasingTypes.Out);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -44,13 +44,14 @@ namespace osu.Game.Screens
|
|||||||
boxContainer.ScaleTo(0.2f);
|
boxContainer.ScaleTo(0.2f);
|
||||||
boxContainer.RotateTo(-20);
|
boxContainer.RotateTo(-20);
|
||||||
|
|
||||||
Content.Delay(300, true);
|
using (Content.BeginDelayedSequence(300, true))
|
||||||
|
{
|
||||||
|
boxContainer.ScaleTo(1, transition_time, EasingTypes.OutElastic);
|
||||||
|
boxContainer.RotateTo(0, transition_time / 2, EasingTypes.OutQuint);
|
||||||
|
|
||||||
boxContainer.ScaleTo(1, transition_time, EasingTypes.OutElastic);
|
textContainer.MoveTo(Vector2.Zero, transition_time, EasingTypes.OutExpo);
|
||||||
boxContainer.RotateTo(0, transition_time / 2, EasingTypes.OutQuint);
|
Content.FadeIn(transition_time, EasingTypes.OutExpo);
|
||||||
|
}
|
||||||
textContainer.MoveTo(Vector2.Zero, transition_time, EasingTypes.OutExpo);
|
|
||||||
Content.FadeIn(transition_time, EasingTypes.OutExpo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnExiting(Screen next)
|
protected override bool OnExiting(Screen next)
|
||||||
|
@ -57,14 +57,14 @@ namespace osu.Game.Screens.Select
|
|||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
MoveToX(0, 800, EasingTypes.OutQuint);
|
this.MoveToX(0, 800, EasingTypes.OutQuint);
|
||||||
RotateTo(0, 800, EasingTypes.OutQuint);
|
this.RotateTo(0, 800, EasingTypes.OutQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
MoveToX(-100, 800, EasingTypes.InQuint);
|
this.MoveToX(-100, 800, EasingTypes.InQuint);
|
||||||
RotateTo(10, 800, EasingTypes.InQuint);
|
this.RotateTo(10, 800, EasingTypes.InQuint);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateBeatmap(WorkingBeatmap beatmap)
|
public void UpdateBeatmap(WorkingBeatmap beatmap)
|
||||||
@ -78,7 +78,7 @@ namespace osu.Game.Screens.Select
|
|||||||
Shear = -Shear,
|
Shear = -Shear,
|
||||||
OnLoadComplete = d =>
|
OnLoadComplete = d =>
|
||||||
{
|
{
|
||||||
FadeIn(250);
|
this.FadeIn(250);
|
||||||
|
|
||||||
lastContainer?.FadeOut(250);
|
lastContainer?.FadeOut(250);
|
||||||
lastContainer?.Expire();
|
lastContainer?.Expire();
|
||||||
|
@ -63,8 +63,8 @@ namespace osu.Game.Screens.Select.Leaderboards
|
|||||||
};
|
};
|
||||||
scrollFlow.Add(ls);
|
scrollFlow.Add(ls);
|
||||||
|
|
||||||
ls.Delay(i++ * 50, true);
|
using (BeginDelayedSequence(i++ * 50, true))
|
||||||
ls.Show();
|
ls.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
scrollContainer.ScrollTo(0f, false);
|
scrollContainer.ScrollTo(0f, false);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user