Skip to content

Commit d644a9f

Browse files
committed
Add Skip to Score Screen feature
1 parent c260861 commit d644a9f

5 files changed

Lines changed: 201 additions & 10 deletions

File tree

Assets/Prefabs/Gameplay/HUD/Pause/QuickPlayPause.prefab

Lines changed: 73 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,9 @@ PrefabInstance:
315315
- targetCorrespondingSourceObject: {fileID: 8918172421510936374, guid: d0426e4d1cafc1c489d1df380508ec96, type: 3}
316316
insertIndex: -1
317317
addedObject: {fileID: 5062416941184210017}
318+
- targetCorrespondingSourceObject: {fileID: 8918172421510936374, guid: d0426e4d1cafc1c489d1df380508ec96, type: 3}
319+
insertIndex: -1
320+
addedObject: {fileID: 7300000000000000002}
318321
- targetCorrespondingSourceObject: {fileID: 8918172421510936374, guid: d0426e4d1cafc1c489d1df380508ec96, type: 3}
319322
insertIndex: -1
320323
addedObject: {fileID: 567501787953327268}
@@ -597,7 +600,7 @@ PrefabInstance:
597600
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
598601
type: 3}
599602
propertyPath: m_RootOrder
600-
value: 5
603+
value: 6
601604
objectReference: {fileID: 0}
602605
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
603606
type: 3}
@@ -771,7 +774,7 @@ PrefabInstance:
771774
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
772775
type: 3}
773776
propertyPath: m_RootOrder
774-
value: 4
777+
value: 5
775778
objectReference: {fileID: 0}
776779
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
777780
type: 3}
@@ -945,7 +948,7 @@ PrefabInstance:
945948
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
946949
type: 3}
947950
propertyPath: m_RootOrder
948-
value: 3
951+
value: 4
949952
objectReference: {fileID: 0}
950953
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
951954
type: 3}
@@ -1119,7 +1122,7 @@ PrefabInstance:
11191122
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
11201123
type: 3}
11211124
propertyPath: m_RootOrder
1122-
value: 2
1125+
value: 3
11231126
objectReference: {fileID: 0}
11241127
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
11251128
type: 3}
@@ -1226,3 +1229,69 @@ RectTransform:
12261229
m_CorrespondingSourceObject: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
12271230
m_PrefabInstance: {fileID: 6405456098411523040}
12281231
m_PrefabAsset: {fileID: 0}
1232+
--- !u!1001 &7300000000000000001
1233+
PrefabInstance:
1234+
m_ObjectHideFlags: 0
1235+
serializedVersion: 2
1236+
m_Modification:
1237+
serializedVersion: 3
1238+
m_TransformParent: {fileID: 6546681381847009475}
1239+
m_Modifications:
1240+
- target: {fileID: 2001797702105249370, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1241+
propertyPath: _localizationKey
1242+
value: Menu.Pause.Generic.SkipToScoreScreen
1243+
objectReference: {fileID: 0}
1244+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1245+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.size
1246+
value: 1
1247+
objectReference: {fileID: 0}
1248+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1249+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
1250+
value: 1
1251+
objectReference: {fileID: 0}
1252+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1253+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
1254+
value:
1255+
objectReference: {fileID: 8577779909696170055}
1256+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1257+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
1258+
value: 2
1259+
objectReference: {fileID: 0}
1260+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1261+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
1262+
value: SkipToScoreScreen
1263+
objectReference: {fileID: 0}
1264+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1265+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
1266+
value: YARG.Gameplay.HUD.GenericPause, Assembly-CSharp
1267+
objectReference: {fileID: 0}
1268+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1269+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
1270+
value: UnityEngine.Object, UnityEngine
1271+
objectReference: {fileID: 0}
1272+
- target: {fileID: 6846856528720448031, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1273+
propertyPath: m_text
1274+
value: Skip to Score Screen
1275+
objectReference: {fileID: 0}
1276+
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1277+
propertyPath: m_RootOrder
1278+
value: 2
1279+
objectReference: {fileID: 0}
1280+
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1281+
propertyPath: m_SizeDelta.x
1282+
value: 0
1283+
objectReference: {fileID: 0}
1284+
- target: {fileID: 6846856529861592903, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1285+
propertyPath: m_Name
1286+
value: Skip to Score Screen
1287+
objectReference: {fileID: 0}
1288+
m_RemovedComponents: []
1289+
m_RemovedGameObjects: []
1290+
m_AddedGameObjects: []
1291+
m_AddedComponents: []
1292+
m_SourcePrefab: {fileID: 100100000, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1293+
--- !u!224 &7300000000000000002 stripped
1294+
RectTransform:
1295+
m_CorrespondingSourceObject: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1296+
m_PrefabInstance: {fileID: 7300000000000000001}
1297+
m_PrefabAsset: {fileID: 0}

Assets/Prefabs/Gameplay/HUD/Pause/SetlistPause.prefab

Lines changed: 72 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ PrefabInstance:
6464
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
6565
type: 3}
6666
propertyPath: m_RootOrder
67-
value: 3
67+
value: 4
6868
objectReference: {fileID: 0}
6969
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
7070
propertyPath: m_AnchorMax.x
@@ -242,7 +242,7 @@ PrefabInstance:
242242
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
243243
type: 3}
244244
propertyPath: m_RootOrder
245-
value: 4
245+
value: 5
246246
objectReference: {fileID: 0}
247247
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
248248
type: 3}
@@ -495,6 +495,9 @@ PrefabInstance:
495495
- targetCorrespondingSourceObject: {fileID: 8918172421510936374, guid: d0426e4d1cafc1c489d1df380508ec96, type: 3}
496496
insertIndex: -1
497497
addedObject: {fileID: 3160656958356024644}
498+
- targetCorrespondingSourceObject: {fileID: 8918172421510936374, guid: d0426e4d1cafc1c489d1df380508ec96, type: 3}
499+
insertIndex: -1
500+
addedObject: {fileID: 7400000000000000002}
498501
- targetCorrespondingSourceObject: {fileID: 8918172421510936374, guid: d0426e4d1cafc1c489d1df380508ec96, type: 3}
499502
insertIndex: -1
500503
addedObject: {fileID: 4334003084230768327}
@@ -769,7 +772,7 @@ PrefabInstance:
769772
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae,
770773
type: 3}
771774
propertyPath: m_RootOrder
772-
value: 2
775+
value: 3
773776
objectReference: {fileID: 0}
774777
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
775778
propertyPath: m_AnchorMax.x
@@ -1045,3 +1048,69 @@ RectTransform:
10451048
m_CorrespondingSourceObject: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
10461049
m_PrefabInstance: {fileID: 8419483339342981632}
10471050
m_PrefabAsset: {fileID: 0}
1051+
--- !u!1001 &7400000000000000001
1052+
PrefabInstance:
1053+
m_ObjectHideFlags: 0
1054+
serializedVersion: 2
1055+
m_Modification:
1056+
serializedVersion: 3
1057+
m_TransformParent: {fileID: 4006097793316972377}
1058+
m_Modifications:
1059+
- target: {fileID: 2001797702105249370, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1060+
propertyPath: _localizationKey
1061+
value: Menu.Pause.Generic.SkipToScoreScreen
1062+
objectReference: {fileID: 0}
1063+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1064+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.size
1065+
value: 1
1066+
objectReference: {fileID: 0}
1067+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1068+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
1069+
value: 1
1070+
objectReference: {fileID: 0}
1071+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1072+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
1073+
value:
1074+
objectReference: {fileID: 4849977719010318057}
1075+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1076+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
1077+
value: 2
1078+
objectReference: {fileID: 0}
1079+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1080+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
1081+
value: SkipToScoreScreen
1082+
objectReference: {fileID: 0}
1083+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1084+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
1085+
value: YARG.Gameplay.HUD.GenericPause, Assembly-CSharp
1086+
objectReference: {fileID: 0}
1087+
- target: {fileID: 5535251001142144674, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1088+
propertyPath: _onClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
1089+
value: UnityEngine.Object, UnityEngine
1090+
objectReference: {fileID: 0}
1091+
- target: {fileID: 6846856528720448031, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1092+
propertyPath: m_text
1093+
value: Skip to Score Screen
1094+
objectReference: {fileID: 0}
1095+
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1096+
propertyPath: m_RootOrder
1097+
value: 2
1098+
objectReference: {fileID: 0}
1099+
- target: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1100+
propertyPath: m_SizeDelta.x
1101+
value: 0
1102+
objectReference: {fileID: 0}
1103+
- target: {fileID: 6846856529861592903, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1104+
propertyPath: m_Name
1105+
value: Skip to Score Screen
1106+
objectReference: {fileID: 0}
1107+
m_RemovedComponents: []
1108+
m_RemovedGameObjects: []
1109+
m_AddedGameObjects: []
1110+
m_AddedComponents: []
1111+
m_SourcePrefab: {fileID: 100100000, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1112+
--- !u!224 &7400000000000000002 stripped
1113+
RectTransform:
1114+
m_CorrespondingSourceObject: {fileID: 6846856529861592900, guid: 0e2af23c2e7465444a3fb84a06d425ae, type: 3}
1115+
m_PrefabInstance: {fileID: 7400000000000000001}
1116+
m_PrefabAsset: {fileID: 0}

Assets/Script/Gameplay/GameManager.cs

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,54 @@ public bool OverrideResume()
588588
public double GetRelativeInputTime(double timeFromInputSystem)
589589
=> _songRunner.GetRelativeInputTime(timeFromInputSystem);
590590

591-
private bool EndSong()
591+
public void SkipToScoreScreen()
592+
{
593+
double endTime = Math.Max(SongLength, LastNoteTime) + SONG_END_DELAY;
594+
const double simulationStep = 1.0 / 60.0;
595+
double simulationEndTime = LastNoteTime + SONG_END_DELAY;
596+
double simulationTime = _players.Count > 0
597+
? Math.Max(_songRunner.InputTime, _players.Max(player => player.BaseEngine.CurrentTime))
598+
: _songRunner.InputTime;
599+
600+
// Advance all engines together so band failure is evaluated the same way as
601+
// normal gameplay, while queuing no additional player inputs.
602+
while (simulationTime < simulationEndTime && !PlayerHasFailed)
603+
{
604+
simulationTime = Math.Min(simulationTime + simulationStep, simulationEndTime);
605+
EngineManager.UpdateEngines(simulationTime);
606+
}
607+
608+
if (PlayerHasFailed)
609+
{
610+
SetSongTime(simulationTime, 0);
611+
_pauseMenu.PopAllMenus();
612+
Time.timeScale = 1f;
613+
return;
614+
}
615+
616+
// Resolve any non-note state that extends through a long outro without
617+
// simulating every empty frame.
618+
if (simulationTime < endTime)
619+
{
620+
EngineManager.UpdateEngines(endTime);
621+
}
622+
623+
if (PlayerHasFailed)
624+
{
625+
SetSongTime(endTime, 0);
626+
_pauseMenu.PopAllMenus();
627+
Time.timeScale = 1f;
628+
return;
629+
}
630+
631+
BandScore = _players.Sum(player => player.Score + player.BandBonusScore);
632+
EngineManager.UpdateStars();
633+
634+
_pauseMenu.PopAllMenus();
635+
EndSong(endTime);
636+
}
637+
638+
private bool EndSong(double? forcedEndTime = null)
592639
{
593640
// Dispose the crowd handler
594641
CrowdEventHandler.Dispose();
@@ -599,7 +646,7 @@ private bool EndSong()
599646
return false;
600647
}
601648

602-
if (_songRunner.SongTime < SongLength + SONG_END_DELAY)
649+
if (forcedEndTime is null && _songRunner.SongTime < SongLength + SONG_END_DELAY)
603650
{
604651
return false;
605652
}
@@ -615,7 +662,7 @@ private bool EndSong()
615662
try
616663
{
617664
_isReplaySaved = false;
618-
replayInfo = SaveReplay(_songRunner.InputTime, ScoreContainer.ScoreReplayDirectory);
665+
replayInfo = SaveReplay(forcedEndTime ?? _songRunner.InputTime, ScoreContainer.ScoreReplayDirectory);
619666
}
620667
catch (Exception e)
621668
{

Assets/Script/Gameplay/HUD/Pause/GenericPause.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ public void BackToLibrary()
8080
PauseMenuManager.Quit();
8181
}
8282

83+
public void SkipToScoreScreen()
84+
{
85+
GameManager.SkipToScoreScreen();
86+
}
87+
8388
public void OpenQuickSettings()
8489
{
8590
PauseMenuManager.PushMenu(PauseMenuManager.Menu.QuickSettings);

Assets/StreamingAssets/lang/en-US.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,7 @@
591591
"Generic": {
592592
"Resume": "Resume",
593593
"Restart": "Restart",
594+
"SkipToScoreScreen": "Skip to Score Screen",
594595
"BackToLibrary": "Back To Library",
595596
"Settings": "Settings",
596597
"Practice": "Practice"

0 commit comments

Comments
 (0)