diff --git a/Assets/Resources/Prefabs/GameView/CamerasGame.prefab b/Assets/Resources/Prefabs/GameView/CamerasGame.prefab index 8c767faed..999fdb63e 100644 --- a/Assets/Resources/Prefabs/GameView/CamerasGame.prefab +++ b/Assets/Resources/Prefabs/GameView/CamerasGame.prefab @@ -232,6 +232,9 @@ MonoBehaviour: ambientBg: {fileID: 4779885053979786433} ambientBgGO: {fileID: 487891016983371717} letterboxBgGO: {fileID: 3931965693507761463} + overlayCanvas: {fileID: 8313606602379655831} + letterboxMask: {fileID: 9126116407185073410} + parentView: {fileID: 1850376182743320724} camera: {fileID: 16338400879174842} --- !u!1 &487891016983371717 GameObject: diff --git a/Assets/Resources/Sprites/UI/Timeline/JudgementOpen.playable b/Assets/Resources/Sprites/UI/Timeline/JudgementOpen.playable index 01e0261e6..81009b3a1 100644 --- a/Assets/Resources/Sprites/UI/Timeline/JudgementOpen.playable +++ b/Assets/Resources/Sprites/UI/Timeline/JudgementOpen.playable @@ -22,7 +22,7 @@ MonoBehaviour: m_Children: [] m_Clips: - m_Version: 1 - m_Start: 3 + m_Start: 3.2333333333333325 m_ClipIn: 0 m_Asset: {fileID: 2796815243102601463} m_Duration: 2 @@ -133,7 +133,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3} m_Name: Signal Emitter m_EditorClassIdentifier: - m_Time: 3.6666666666666665 + m_Time: 3.899999999999999 m_Retroactive: 0 m_EmitOnce: 0 m_Asset: {fileID: 11400000, guid: 425447af5e3be6844b683556e28151b9, type: 2} @@ -176,7 +176,7 @@ MonoBehaviour: m_Children: [] m_Clips: - m_Version: 1 - m_Start: 0.016666666666666666 + m_Start: 0.25 m_ClipIn: 0 m_Asset: {fileID: 3869086833221261789} m_Duration: 4.983333333333333 @@ -293,7 +293,7 @@ MonoBehaviour: m_Children: [] m_Clips: - m_Version: 1 - m_Start: 0.016666666666666666 + m_Start: 0.25 m_ClipIn: 0 m_Asset: {fileID: -3297741380686258233} m_Duration: 0.47421168418479587 @@ -379,7 +379,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3} m_Name: Signal Emitter m_EditorClassIdentifier: - m_Time: 1.5 + m_Time: 1.7333333333333325 m_Retroactive: 0 m_EmitOnce: 0 m_Asset: {fileID: 11400000, guid: 91b18d308429fbd43b8ccc497a10451f, type: 2} @@ -407,7 +407,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3} m_Name: Signal Emitter m_EditorClassIdentifier: - m_Time: 2 + m_Time: 2.2333333333333325 m_Retroactive: 0 m_EmitOnce: 0 m_Asset: {fileID: 11400000, guid: 57ca9bfe84a3d8e459c3acb8ae9d822a, type: 2} @@ -435,7 +435,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 15c38f6fa1940124db1ab7f6fe7268d1, type: 3} m_Name: Signal Emitter m_EditorClassIdentifier: - m_Time: 1 + m_Time: 1.2333333333333325 m_Retroactive: 0 m_EmitOnce: 0 m_Asset: {fileID: 11400000, guid: f5bc62bc9f451ed4a9ed997842113201, type: 2} diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index 94b5d8475..d2b8315fb 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -120,6 +120,8 @@ namespace HeavenStudio } } + JudgementManager.JudgementInfo judgementInfo; + private void Awake() { // autoplay = true; @@ -326,11 +328,20 @@ namespace HeavenStudio } } - public void ScoreInputAccuracy(double beat, double accuracy, bool late, double time, double weight = 1, bool doDisplay = true, int category = 0) + public void ScoreInputAccuracy(double beat, double accuracy, bool late, double time, float weight = 1, bool doDisplay = true, int category = 0) { totalInputs += weight; totalPlayerAccuracy += accuracy * weight; + judgementInfo.inputs.Add(new JudgementManager.InputInfo + { + beat = beat, + accuracyState = accuracy, + timeOffset = time, + weight = weight, + category = category + }); + if (accuracy < Minigame.rankOkThreshold && weight > 0) { SkillStarManager.instance.KillStar(); @@ -615,6 +626,12 @@ namespace HeavenStudio SectionMedalsManager.instance.Reset(); clearedSections.Clear(); + + judgementInfo = new JudgementManager.JudgementInfo + { + inputs = new List(), + medals = new List() + }; } StartCoroutine(PlayCo(beat, delay)); @@ -674,16 +691,16 @@ namespace HeavenStudio SectionMedalsManager.instance.OnRemixEnd(); // pass this data to rating screen + stats - Debug.Log($"== Playthrough statistics of {Beatmap["remixtitle"]} (played at {System.DateTime.Now:yyyy-MM-dd HH:mm:ss}) =="); - Debug.Log($"Average input offset for playthrough: {averageInputOffset}ms"); - Debug.Log($"Accuracy for playthrough: {(PlayerAccuracy * 100): 0.00}"); - Debug.Log($"Cleared {clearedSections.FindAll(c => c).Count} sections out of {Beatmap.SectionMarkers.Count}"); - if (SkillStarManager.instance.IsCollected) - Debug.Log($"Skill Star collected"); - else - Debug.Log($"Skill Star not collected"); - if (GoForAPerfect.instance.perfect) - Debug.Log($"Perfect Clear!"); + // Debug.Log($"== Playthrough statistics of {Beatmap["remixtitle"]} (played at {System.DateTime.Now:yyyy-MM-dd HH:mm:ss}) =="); + // Debug.Log($"Average input offset for playthrough: {averageInputOffset}ms"); + // Debug.Log($"Accuracy for playthrough: {(PlayerAccuracy * 100): 0.00}"); + // Debug.Log($"Cleared {clearedSections.FindAll(c => c).Count} sections out of {Beatmap.SectionMarkers.Count}"); + // if (SkillStarManager.instance.IsCollected) + // Debug.Log($"Skill Star collected"); + // else + // Debug.Log($"Skill Star not collected"); + // if (GoForAPerfect.instance.perfect) + // Debug.Log($"Perfect Clear!"); KillAllSounds(); if (restart) @@ -692,8 +709,13 @@ namespace HeavenStudio } else if (playMode) { - // when rating screen gets added playOnStart will instead move to that scene - GlobalGameManager.LoadScene("Title", 0.35f, 0.5f); + judgementInfo.finalScore = (float)PlayerAccuracy; + judgementInfo.star = skillStarCollected; + judgementInfo.perfect = GoForAPerfect.instance.perfect; + judgementInfo.time = DateTime.Now; + + JudgementManager.SetPlayInfo(judgementInfo, Beatmap); + GlobalGameManager.LoadScene("Judgement", 0.35f, 0f); CircleCursor.LockCursor(false); } Application.backgroundLoadingPriority = ThreadPriority.Normal; diff --git a/Assets/Scripts/Games/LaunchParty/LaunchPartyRocket.cs b/Assets/Scripts/Games/LaunchParty/LaunchPartyRocket.cs index 370ac31da..09662af59 100644 --- a/Assets/Scripts/Games/LaunchParty/LaunchPartyRocket.cs +++ b/Assets/Scripts/Games/LaunchParty/LaunchPartyRocket.cs @@ -38,7 +38,7 @@ namespace HeavenStudio.Games.Scripts_LaunchParty SoundByte.PlayOneShotGame("launchParty/rocket_endBad"); string leftOrRight = (UnityEngine.Random.Range(1, 3) == 1) ? "Left" : "Right"; if (!anim.IsPlayingAnimationName("RocketBarelyLeft") && !anim.IsPlayingAnimationName("RocketBarelyRight")) anim.Play("RocketBarely" + leftOrRight, 0, 0); - game.ScoreMiss(0.5); + game.ScoreMiss(0.5f); } } diff --git a/Assets/Scripts/Games/Minigame.cs b/Assets/Scripts/Games/Minigame.cs index 4d44f2ce5..700c0e5ac 100644 --- a/Assets/Scripts/Games/Minigame.cs +++ b/Assets/Scripts/Games/Minigame.cs @@ -433,7 +433,7 @@ namespace HeavenStudio.Games return null; } - public void ScoreMiss(double weight = 1f) + public void ScoreMiss(float weight = 1f) { double beat = Conductor.instance?.songPositionInBeatsAsDouble ?? -1; GameManager.instance.ScoreInputAccuracy(beat, 0, true, NgLateTime(), weight, false); diff --git a/Assets/Scripts/Games/PlayerActionEvent.cs b/Assets/Scripts/Games/PlayerActionEvent.cs index 7dae9c96f..ac06eb083 100644 --- a/Assets/Scripts/Games/PlayerActionEvent.cs +++ b/Assets/Scripts/Games/PlayerActionEvent.cs @@ -343,7 +343,7 @@ namespace HeavenStudio.Games if (countsForAccuracy && !(noAutoplay || autoplayOnly)) { - GameManager.instance.ScoreInputAccuracy(startBeat + timer, 0, true, 2.0, 1.0, false); + GameManager.instance.ScoreInputAccuracy(startBeat + timer, 0, true, 2.0, 1, false); GoForAPerfect.instance.Miss(); SectionMedalsManager.instance.MakeIneligible(); } diff --git a/Assets/Scripts/Games/Ringside/Ringside.cs b/Assets/Scripts/Games/Ringside/Ringside.cs index 5da8b759b..f77871127 100644 --- a/Assets/Scripts/Games/Ringside/Ringside.cs +++ b/Assets/Scripts/Games/Ringside/Ringside.cs @@ -244,7 +244,7 @@ namespace HeavenStudio.Games if ((PlayerInput.CurrentControlStyle != InputController.ControlStyles.Touch) || (PlayerInput.CurrentControlStyle == InputController.ControlStyles.Touch && !IsExpectingInputNow(InputAction_Alt))) { - Ringside.instance.ScoreMiss(0.5); + Ringside.instance.ScoreMiss(0.5f); wrestlerAnim.DoScaledAnimationAsync("YeMiss", 0.25f); SoundByte.PlayOneShotGame($"ringside/confusedanswer"); @@ -254,7 +254,7 @@ namespace HeavenStudio.Games if ( PlayerInput.CurrentControlStyle == InputController.ControlStyles.Touch && PlayerInput.GetIsAction(InputAction_FlickPress) && !IsExpectingInputNow(InputAction_FlickPress) && !shouldNotInput) { - Ringside.instance.ScoreMiss(0.5); + Ringside.instance.ScoreMiss(0.5f); SoundByte.PlayOneShotGame($"ringside/muscles2"); wrestlerAnim.DoScaledAnimationAsync("BigGuyTwo", 0.5f); @@ -263,7 +263,7 @@ namespace HeavenStudio.Games } if (PlayerInput.GetIsAction(InputAction_Alt) && !IsExpectingInputNow(InputAction_Alt) && !shouldNotInput) { - Ringside.instance.ScoreMiss(0.5); + Ringside.instance.ScoreMiss(0.5f); int randomPose = UnityEngine.Random.Range(1, 7); wrestlerAnim.Play($"Pose{randomPose}", 0, 0); diff --git a/Assets/Scripts/InputSystem/PlayerInput.cs b/Assets/Scripts/InputSystem/PlayerInput.cs index 7e7ce1732..1630cb4a1 100644 --- a/Assets/Scripts/InputSystem/PlayerInput.cs +++ b/Assets/Scripts/InputSystem/PlayerInput.cs @@ -209,6 +209,7 @@ namespace HeavenStudio // The GameManager allows you to Input public static bool PlayerHasControl() { + if (GameManager.instance == null || Conductor.instance == null) return true; return !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput; } diff --git a/Assets/Scripts/JudgementManager.cs b/Assets/Scripts/JudgementManager.cs index 1a9846efe..678ec69b0 100644 --- a/Assets/Scripts/JudgementManager.cs +++ b/Assets/Scripts/JudgementManager.cs @@ -8,6 +8,7 @@ using TMPro; using Jukebox; using UnityEngine.Playables; using HeavenStudio.Games; +using HeavenStudio.InputSystem; namespace HeavenStudio { @@ -108,10 +109,10 @@ namespace HeavenStudio // temp twoMessage = true; - judgementInfo = new() - { - finalScore = 0.79, - }; + // judgementInfo = new() + // { + // finalScore = 0.79, + // }; header.text = "Rhythm League Notes"; // end temp @@ -185,6 +186,7 @@ namespace HeavenStudio rankAnim.Play("Hi"); audioSource.PlayOneShot(rankHi); } + didRank = true; } public void StartRankMusic() @@ -283,6 +285,15 @@ namespace HeavenStudio } } } + + if (didRank) + { + InputController currentController = PlayerInput.GetInputController(1); + if (currentController.GetLastButtonDown() > 0) + { + GlobalGameManager.LoadScene("Title", 0.35f, 0.5f); + } + } } } } \ No newline at end of file