mirror of
https://github.com/osukey/osukey.git
synced 2025-05-07 06:37:18 +09:00
commit
0439a5d857
@ -1 +1 @@
|
|||||||
Subproject commit dcbd7a0b6f536f6aadf13a720db40a1d76bf52e2
|
Subproject commit fc93e11439b8b391d9e01e208368d96ba85bfa26
|
@ -12,16 +12,11 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
|||||||
{
|
{
|
||||||
public class FollowPoint : Container
|
public class FollowPoint : Container
|
||||||
{
|
{
|
||||||
public double StartTime;
|
|
||||||
public double EndTime;
|
|
||||||
public Vector2 EndPosition;
|
|
||||||
|
|
||||||
private const float width = 8;
|
private const float width = 8;
|
||||||
|
|
||||||
public FollowPoint()
|
public FollowPoint()
|
||||||
{
|
{
|
||||||
Origin = Anchor.Centre;
|
Origin = Anchor.Centre;
|
||||||
Alpha = 0;
|
|
||||||
|
|
||||||
Masking = true;
|
Masking = true;
|
||||||
AutoSizeAxes = Axes.Both;
|
AutoSizeAxes = Axes.Both;
|
||||||
@ -45,22 +40,5 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
|
||||||
base.LoadComplete();
|
|
||||||
|
|
||||||
Delay(StartTime);
|
|
||||||
FadeIn(DrawableOsuHitObject.TIME_FADEIN);
|
|
||||||
ScaleTo(1.5f);
|
|
||||||
ScaleTo(1, DrawableOsuHitObject.TIME_FADEIN, EasingTypes.Out);
|
|
||||||
MoveTo(EndPosition, DrawableOsuHitObject.TIME_FADEIN, EasingTypes.Out);
|
|
||||||
|
|
||||||
Delay(EndTime - StartTime);
|
|
||||||
FadeOut(DrawableOsuHitObject.TIME_FADEIN);
|
|
||||||
|
|
||||||
Delay(DrawableOsuHitObject.TIME_FADEIN);
|
|
||||||
Expire(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Rulesets.Objects.Types;
|
using osu.Game.Rulesets.Objects.Types;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
||||||
@ -80,14 +81,28 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
|||||||
double fadeOutTime = startTime + fraction * duration;
|
double fadeOutTime = startTime + fraction * duration;
|
||||||
double fadeInTime = fadeOutTime - PreEmpt;
|
double fadeInTime = fadeOutTime - PreEmpt;
|
||||||
|
|
||||||
Add(new FollowPoint
|
FollowPoint fp;
|
||||||
|
|
||||||
|
Add(fp = new FollowPoint
|
||||||
{
|
{
|
||||||
StartTime = fadeInTime,
|
|
||||||
EndTime = fadeOutTime,
|
|
||||||
Position = pointStartPosition,
|
Position = pointStartPosition,
|
||||||
EndPosition = pointEndPosition,
|
|
||||||
Rotation = rotation,
|
Rotation = rotation,
|
||||||
|
Alpha = 0,
|
||||||
|
Scale = new Vector2(1.5f),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
using (fp.BeginAbsoluteSequence(fadeInTime))
|
||||||
|
{
|
||||||
|
fp.FadeIn(DrawableOsuHitObject.TIME_FADEIN);
|
||||||
|
fp.ScaleTo(1, DrawableOsuHitObject.TIME_FADEIN, EasingTypes.Out);
|
||||||
|
|
||||||
|
fp.MoveTo(pointEndPosition, DrawableOsuHitObject.TIME_FADEIN, EasingTypes.Out);
|
||||||
|
|
||||||
|
fp.Delay(fadeOutTime - fadeInTime);
|
||||||
|
fp.FadeOut(DrawableOsuHitObject.TIME_FADEIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
fp.Expire(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
prevHitObject = currHitObject;
|
prevHitObject = currHitObject;
|
||||||
|
@ -104,10 +104,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
ApproachCircle.ScaleTo(1.1f, TIME_PREEMPT);
|
ApproachCircle.ScaleTo(1.1f, TIME_PREEMPT);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
protected override void UpdateCurrentState(ArmedState state)
|
||||||
{
|
{
|
||||||
base.UpdateState(state);
|
|
||||||
|
|
||||||
ApproachCircle.FadeOut();
|
ApproachCircle.FadeOut();
|
||||||
|
|
||||||
double endTime = (HitObject as IHasEndTime)?.EndTime ?? HitObject.StartTime;
|
double endTime = (HitObject as IHasEndTime)?.EndTime ?? HitObject.StartTime;
|
||||||
|
@ -21,17 +21,23 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
|
|
||||||
protected override OsuJudgement CreateJudgement() => new OsuJudgement { MaxScore = OsuScoreResult.Hit300 };
|
protected override OsuJudgement CreateJudgement() => new OsuJudgement { MaxScore = OsuScoreResult.Hit300 };
|
||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
protected sealed override void UpdateState(ArmedState state)
|
||||||
{
|
{
|
||||||
Flush();
|
Flush();
|
||||||
|
|
||||||
UpdateInitialState();
|
UpdateInitialState();
|
||||||
|
|
||||||
Delay(HitObject.StartTime - Time.Current - TIME_PREEMPT + Judgement.TimeOffset, true);
|
using (BeginAbsoluteSequence(HitObject.StartTime - TIME_PREEMPT, true))
|
||||||
|
{
|
||||||
|
UpdatePreemptState();
|
||||||
|
|
||||||
UpdatePreemptState();
|
using (BeginDelayedSequence(TIME_PREEMPT + Judgement.TimeOffset, true))
|
||||||
|
UpdateCurrentState(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Delay(TIME_PREEMPT, true);
|
protected virtual void UpdateCurrentState(ArmedState state)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void UpdatePreemptState()
|
protected virtual void UpdatePreemptState()
|
||||||
|
@ -158,10 +158,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
ball.Alpha = 0;
|
ball.Alpha = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
protected override void UpdateCurrentState(ArmedState state)
|
||||||
{
|
{
|
||||||
base.UpdateState(state);
|
|
||||||
|
|
||||||
ball.FadeIn();
|
ball.FadeIn();
|
||||||
|
|
||||||
Delay(slider.Duration, true);
|
Delay(slider.Duration, true);
|
||||||
@ -181,4 +179,4 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
{
|
{
|
||||||
void UpdateProgress(double progress, int repeat);
|
void UpdateProgress(double progress, int repeat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,10 +72,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
Delay(-animIn);
|
Delay(-animIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
protected override void UpdateCurrentState(ArmedState state)
|
||||||
{
|
{
|
||||||
base.UpdateState(state);
|
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case ArmedState.Idle:
|
case ArmedState.Idle:
|
||||||
@ -93,4 +91,4 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,10 +132,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
disc.FadeIn(200);
|
disc.FadeIn(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
protected override void UpdateCurrentState(ArmedState state)
|
||||||
{
|
{
|
||||||
base.UpdateState(state);
|
|
||||||
|
|
||||||
Delay(spinner.Duration, true);
|
Delay(spinner.Duration, true);
|
||||||
|
|
||||||
FadeOut(160);
|
FadeOut(160);
|
||||||
|
@ -148,9 +148,8 @@ 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.FadeTo(expandingRing.Alpha + MathHelper.Clamp(completion / 16, 0.1f, 0.6f), 50);
|
||||||
expandingRing.Delay(50);
|
using (expandingRing.BeginDelayedSequence(50))
|
||||||
expandingRing.FadeTo(completion / 8, 2000, EasingTypes.OutQuint);
|
expandingRing.FadeTo(completion / 8, 2000, EasingTypes.OutQuint);
|
||||||
expandingRing.DelayReset();
|
|
||||||
|
|
||||||
symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, EasingTypes.OutQuint);
|
symbol.RotateTo((float)(completion * HitObject.Duration / 8), 4000, EasingTypes.OutQuint);
|
||||||
|
|
||||||
|
@ -131,14 +131,14 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
foreach (var star in stars.Children)
|
foreach (var star in stars.Children)
|
||||||
{
|
{
|
||||||
star.ClearTransforms(true);
|
star.ClearTransforms(true);
|
||||||
if (count <= newValue)
|
|
||||||
star.Delay(Math.Max(i - count, 0) * animationDelay, true);
|
|
||||||
else
|
|
||||||
star.Delay(Math.Max(count - 1 - i, 0) * animationDelay, true);
|
|
||||||
|
|
||||||
star.FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration);
|
var delay = (count <= newValue ? Math.Max(i - count, 0) : Math.Max(count - 1 - i, 0)) * animationDelay;
|
||||||
star.Icon.ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing);
|
|
||||||
star.DelayReset();
|
using (BeginDelayedSequence(delay, true))
|
||||||
|
{
|
||||||
|
star.FadeTo(i < newValue ? 1.0f : minStarAlpha, fadingDuration);
|
||||||
|
star.Icon.ScaleTo(getStarScale(i, newValue), scalingDuration, scalingEasing);
|
||||||
|
}
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ namespace osu.Game.Screens.Play
|
|||||||
{
|
{
|
||||||
public class PlayerInputManager : PassThroughInputManager
|
public class PlayerInputManager : PassThroughInputManager
|
||||||
{
|
{
|
||||||
private readonly ManualClock clock = new ManualClock();
|
private ManualClock clock;
|
||||||
private IFrameBasedClock parentClock;
|
private IFrameBasedClock parentClock;
|
||||||
|
|
||||||
private ReplayInputHandler replayInputHandler;
|
private ReplayInputHandler replayInputHandler;
|
||||||
@ -47,8 +47,14 @@ namespace osu.Game.Screens.Play
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
|
//our clock will now be our parent's clock, but we want to replace this to allow manual control.
|
||||||
parentClock = Clock;
|
parentClock = Clock;
|
||||||
Clock = new FramedClock(clock);
|
|
||||||
|
Clock = new FramedClock(clock = new ManualClock
|
||||||
|
{
|
||||||
|
CurrentTime = parentClock.CurrentTime,
|
||||||
|
Rate = parentClock.Rate,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -70,24 +70,26 @@ namespace osu.Game.Screens.Ranking
|
|||||||
circleOuterBackground.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
circleOuterBackground.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
||||||
circleOuterBackground.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
circleOuterBackground.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
Content.Delay(transition_time * 0.25f, true);
|
using (BeginDelayedSequence(transition_time * 0.25f, true))
|
||||||
|
{
|
||||||
|
|
||||||
circleOuter.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
circleOuter.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
||||||
circleOuter.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
circleOuter.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
Content.Delay(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.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
||||||
|
|
||||||
circleInner.ScaleTo(1, transition_time, EasingTypes.OutQuint);
|
using (BeginDelayedSequence(transition_time * 0.4f, true))
|
||||||
circleInner.FadeTo(1, transition_time, EasingTypes.OutQuint);
|
{
|
||||||
|
modeChangeButtons.FadeIn(transition_time, EasingTypes.OutQuint);
|
||||||
Content.Delay(transition_time * 0.4f, true);
|
currentPage.FadeIn(transition_time, EasingTypes.OutQuint);
|
||||||
|
}
|
||||||
modeChangeButtons.FadeIn(transition_time, EasingTypes.OutQuint);
|
}
|
||||||
currentPage.FadeIn(transition_time, EasingTypes.OutQuint);
|
}
|
||||||
|
|
||||||
Content.DelayReset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnExiting(Screen next)
|
protected override bool OnExiting(Screen next)
|
||||||
|
@ -106,7 +106,7 @@ namespace osu.Game.Screens.Tournament
|
|||||||
speedTo(0f, 2000);
|
speedTo(0f, 2000);
|
||||||
tracker.FadeIn(200);
|
tracker.FadeIn(200);
|
||||||
|
|
||||||
delayedStateChangeDelegate = Delay(2300).Schedule(() => scrollState = ScrollState.Stopped);
|
delayedStateChangeDelegate = Scheduler.AddDelayed(() => scrollState = ScrollState.Stopped, 2300);
|
||||||
break;
|
break;
|
||||||
case ScrollState.Stopped:
|
case ScrollState.Stopped:
|
||||||
// Find closest to center
|
// Find closest to center
|
||||||
@ -144,7 +144,7 @@ namespace osu.Game.Screens.Tournament
|
|||||||
st.Selected = true;
|
st.Selected = true;
|
||||||
OnSelected?.Invoke(st.Team);
|
OnSelected?.Invoke(st.Team);
|
||||||
|
|
||||||
delayedStateChangeDelegate = Delay(10000).Schedule(() => scrollState = ScrollState.Idle);
|
delayedStateChangeDelegate = Scheduler.AddDelayed(() => scrollState = ScrollState.Idle, 10000);
|
||||||
break;
|
break;
|
||||||
case ScrollState.Idle:
|
case ScrollState.Idle:
|
||||||
resetSelected();
|
resetSelected();
|
||||||
@ -295,11 +295,7 @@ namespace osu.Game.Screens.Tournament
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void speedTo(float value, double duration = 0, EasingTypes easing = EasingTypes.None)
|
private void speedTo(float value, double duration = 0, EasingTypes easing = EasingTypes.None) => TransformTo(() => speed, value, duration, easing, new TransformScrollSpeed());
|
||||||
{
|
|
||||||
DelayReset();
|
|
||||||
TransformTo(() => speed, value, duration, easing, new TransformScrollSpeed());
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum ScrollState
|
private enum ScrollState
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user