Merge branch 'title-screen-and-more' of https://github.com/evdial/HeavenStudio into pr/454
This commit is contained in:
commit
aed594b427
BIN
Assets/Resources/Music/Quick/jgl_challengefail.wav
Normal file
BIN
Assets/Resources/Music/Quick/jgl_challengefail.wav
Normal file
Binary file not shown.
22
Assets/Resources/Music/Quick/jgl_challengefail.wav.meta
Normal file
22
Assets/Resources/Music/Quick/jgl_challengefail.wav.meta
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d98376004e499164ba964a236415b6b1
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 6
|
||||||
|
defaultSettings:
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
preloadAudioData: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Resources/Music/Quick/jgl_challengewin.wav
Normal file
BIN
Assets/Resources/Music/Quick/jgl_challengewin.wav
Normal file
Binary file not shown.
22
Assets/Resources/Music/Quick/jgl_challengewin.wav.meta
Normal file
22
Assets/Resources/Music/Quick/jgl_challengewin.wav.meta
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 119a69280a5739147bc49b8e10386e2a
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 6
|
||||||
|
defaultSettings:
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
preloadAudioData: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Assets/Resources/Music/mus_perfect.wav
Normal file
BIN
Assets/Resources/Music/mus_perfect.wav
Normal file
Binary file not shown.
22
Assets/Resources/Music/mus_perfect.wav.meta
Normal file
22
Assets/Resources/Music/mus_perfect.wav.meta
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 38aa84c219986a94cb70204f29e86c47
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 6
|
||||||
|
defaultSettings:
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
preloadAudioData: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Resources/Music/mus_perfect00.ogg
Normal file
BIN
Assets/Resources/Music/mus_perfect00.ogg
Normal file
Binary file not shown.
22
Assets/Resources/Music/mus_perfect00.ogg.meta
Normal file
22
Assets/Resources/Music/mus_perfect00.ogg.meta
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 91e122c94e9c3cf419daa70428cb69e5
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 6
|
||||||
|
defaultSettings:
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
preloadAudioData: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Resources/Music/mus_perfect01.ogg
Normal file
BIN
Assets/Resources/Music/mus_perfect01.ogg
Normal file
Binary file not shown.
22
Assets/Resources/Music/mus_perfect01.ogg.meta
Normal file
22
Assets/Resources/Music/mus_perfect01.ogg.meta
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3301b29ac7b6f394a8747997bf949724
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 6
|
||||||
|
defaultSettings:
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
preloadAudioData: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -206,6 +206,22 @@ PrefabInstance:
|
||||||
propertyPath: m_IsActive
|
propertyPath: m_IsActive
|
||||||
value: 1
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3954997730746798104, guid: 75ce9c0b59ff27f46a011e0cafc17fb3, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3954997730746798104, guid: 75ce9c0b59ff27f46a011e0cafc17fb3, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3954997730746798104, guid: 75ce9c0b59ff27f46a011e0cafc17fb3, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3954997730746798104, guid: 75ce9c0b59ff27f46a011e0cafc17fb3, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5046962229971873052, guid: 75ce9c0b59ff27f46a011e0cafc17fb3, type: 3}
|
- target: {fileID: 5046962229971873052, guid: 75ce9c0b59ff27f46a011e0cafc17fb3, type: 3}
|
||||||
propertyPath: m_AnchorMax.y
|
propertyPath: m_AnchorMax.y
|
||||||
value: 0
|
value: 0
|
||||||
|
|
@ -426,6 +442,50 @@ Transform:
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &645596968
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 645596970}
|
||||||
|
- component: {fileID: 645596969}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: StretchCameraVFX
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &645596969
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 645596968}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c41d0b7047b9b1d4e91d4cf101fa025b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!4 &645596970
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 645596968}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 5
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &1157422643
|
--- !u!1 &1157422643
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,8 @@ namespace HeavenStudio
|
||||||
private Minigame _currentMinigame;
|
private Minigame _currentMinigame;
|
||||||
[NonSerialized] public bool autoplay;
|
[NonSerialized] public bool autoplay;
|
||||||
[NonSerialized] public bool canInput = true;
|
[NonSerialized] public bool canInput = true;
|
||||||
[NonSerialized] public RiqEntity currentSection, nextSection;
|
[NonSerialized] public RiqEntity lastSection, currentSection;
|
||||||
|
[NonSerialized] public double nextSectionBeat;
|
||||||
public double SectionProgress { get; private set; }
|
public double SectionProgress { get; private set; }
|
||||||
|
|
||||||
public bool GameHasSplitColours
|
public bool GameHasSplitColours
|
||||||
|
|
@ -70,7 +71,7 @@ namespace HeavenStudio
|
||||||
List<RiqEntity> allGameSwitches;
|
List<RiqEntity> allGameSwitches;
|
||||||
|
|
||||||
public event Action<double> onBeatChanged;
|
public event Action<double> onBeatChanged;
|
||||||
public event Action<RiqEntity> onSectionChange;
|
public event Action<RiqEntity, RiqEntity> onSectionChange;
|
||||||
public event Action<double> onBeatPulse;
|
public event Action<double> onBeatPulse;
|
||||||
|
|
||||||
public int BeatmapEntities()
|
public int BeatmapEntities()
|
||||||
|
|
@ -331,7 +332,7 @@ namespace HeavenStudio
|
||||||
public void ScoreInputAccuracy(double beat, double accuracy, bool late, double time, float 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;
|
totalInputs += weight;
|
||||||
totalPlayerAccuracy += accuracy * weight;
|
totalPlayerAccuracy += Math.Pow(accuracy, weight);
|
||||||
|
|
||||||
judgementInfo.inputs.Add(new JudgementManager.InputInfo
|
judgementInfo.inputs.Add(new JudgementManager.InputInfo
|
||||||
{
|
{
|
||||||
|
|
@ -358,6 +359,15 @@ namespace HeavenStudio
|
||||||
TimingAccuracyDisplay.instance.MakeAccuracyVfx(time, late);
|
TimingAccuracyDisplay.instance.MakeAccuracyVfx(time, late);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DoSectionCompletion(double beat, bool clear, string name, double score)
|
||||||
|
{
|
||||||
|
judgementInfo.medals.Add(new JudgementManager.MedalInfo
|
||||||
|
{
|
||||||
|
beat = beat,
|
||||||
|
cleared = clear
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
static bool StringStartsWith(string a, string b)
|
static bool StringStartsWith(string a, string b)
|
||||||
{
|
{
|
||||||
int aLen = a.Length;
|
int aLen = a.Length;
|
||||||
|
|
@ -495,13 +505,17 @@ namespace HeavenStudio
|
||||||
if (cond.songPositionInBeatsAsDouble >= sectionBeats[currentSectionEvent])
|
if (cond.songPositionInBeatsAsDouble >= sectionBeats[currentSectionEvent])
|
||||||
{
|
{
|
||||||
Debug.Log("Section " + Beatmap.SectionMarkers[currentSectionEvent]["sectionName"] + " started");
|
Debug.Log("Section " + Beatmap.SectionMarkers[currentSectionEvent]["sectionName"] + " started");
|
||||||
currentSection = Beatmap.SectionMarkers[currentSectionEvent];
|
lastSection = currentSection;
|
||||||
|
if (currentSectionEvent < Beatmap.SectionMarkers.Count)
|
||||||
|
currentSection = Beatmap.SectionMarkers[currentSectionEvent];
|
||||||
|
else
|
||||||
|
currentSection = null;
|
||||||
currentSectionEvent++;
|
currentSectionEvent++;
|
||||||
if (currentSectionEvent < Beatmap.SectionMarkers.Count)
|
if (currentSectionEvent < Beatmap.SectionMarkers.Count)
|
||||||
nextSection = Beatmap.SectionMarkers[currentSectionEvent];
|
nextSectionBeat = Beatmap.SectionMarkers[currentSectionEvent].beat;
|
||||||
else
|
else
|
||||||
nextSection = default(RiqEntity);
|
nextSectionBeat = endBeat;
|
||||||
onSectionChange?.Invoke(currentSection);
|
onSectionChange?.Invoke(currentSection, lastSection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -580,10 +594,7 @@ namespace HeavenStudio
|
||||||
{
|
{
|
||||||
double currectSectionStart = cond.GetSongPosFromBeat(currentSection.beat);
|
double currectSectionStart = cond.GetSongPosFromBeat(currentSection.beat);
|
||||||
|
|
||||||
if (nextSection == null)
|
SectionProgress = (cond.songPosition - currectSectionStart) / (cond.GetSongPosFromBeat(nextSectionBeat) - currectSectionStart);
|
||||||
SectionProgress = (cond.songPosition - currectSectionStart) / (cond.GetSongPosFromBeat(endBeat) - currectSectionStart);
|
|
||||||
else
|
|
||||||
SectionProgress = (cond.songPosition - currectSectionStart) / (cond.GetSongPosFromBeat(nextSection.beat) - currectSectionStart);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -676,31 +687,18 @@ namespace HeavenStudio
|
||||||
|
|
||||||
public void Stop(double beat, bool restart = false, float restartDelay = 0f)
|
public void Stop(double beat, bool restart = false, float restartDelay = 0f)
|
||||||
{
|
{
|
||||||
|
// I feel like I should standardize the names
|
||||||
|
SkillStarManager.instance.KillStar();
|
||||||
|
TimingAccuracyDisplay.instance.StopStarFlash();
|
||||||
|
GoForAPerfect.instance.Disable();
|
||||||
|
SectionMedalsManager.instance.OnRemixEnd(endBeat, currentSection);
|
||||||
|
|
||||||
Minigame miniGame = currentGameO.GetComponent<Minigame>();
|
Minigame miniGame = currentGameO.GetComponent<Minigame>();
|
||||||
if (miniGame != null)
|
if (miniGame != null)
|
||||||
miniGame.OnStop(beat);
|
miniGame.OnStop(beat);
|
||||||
|
|
||||||
Conductor.instance.Stop(beat);
|
Conductor.instance.Stop(beat);
|
||||||
SetCurrentEventToClosest(beat);
|
SetCurrentEventToClosest(beat);
|
||||||
//onBeatChanged?.Invoke(beat);
|
|
||||||
|
|
||||||
// I feel like I should standardize the names
|
|
||||||
SkillStarManager.instance.KillStar();
|
|
||||||
TimingAccuracyDisplay.instance.StopStarFlash();
|
|
||||||
GoForAPerfect.instance.Disable();
|
|
||||||
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!");
|
|
||||||
|
|
||||||
KillAllSounds();
|
KillAllSounds();
|
||||||
if (restart)
|
if (restart)
|
||||||
|
|
@ -721,7 +719,12 @@ namespace HeavenStudio
|
||||||
Application.backgroundLoadingPriority = ThreadPriority.Normal;
|
Application.backgroundLoadingPriority = ThreadPriority.Normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerator WaitReadyAndPlayCo(double beat)
|
public void SafePlay(double beat, float delay, bool discord)
|
||||||
|
{
|
||||||
|
StartCoroutine(WaitReadyAndPlayCo(beat, delay, discord));
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator WaitReadyAndPlayCo(double beat, float delay = 1f, bool discord = true)
|
||||||
{
|
{
|
||||||
WaitUntil yieldOverlays = new WaitUntil(() => OverlaysManager.OverlaysReady);
|
WaitUntil yieldOverlays = new WaitUntil(() => OverlaysManager.OverlaysReady);
|
||||||
WaitUntil yieldBeatmap = new WaitUntil(() => Beatmap != null && Beatmap.Entities.Count > 0);
|
WaitUntil yieldBeatmap = new WaitUntil(() => Beatmap != null && Beatmap.Entities.Count > 0);
|
||||||
|
|
@ -729,7 +732,7 @@ namespace HeavenStudio
|
||||||
|
|
||||||
// wait for overlays to be ready
|
// wait for overlays to be ready
|
||||||
yield return yieldOverlays;
|
yield return yieldOverlays;
|
||||||
// wait for first game to be loaded
|
// wait for beatmap to be loaded
|
||||||
yield return yieldBeatmap;
|
yield return yieldBeatmap;
|
||||||
//wait for audio clip to be loaded
|
//wait for audio clip to be loaded
|
||||||
yield return yieldAudio;
|
yield return yieldAudio;
|
||||||
|
|
@ -737,11 +740,14 @@ namespace HeavenStudio
|
||||||
SkillStarManager.instance.KillStar();
|
SkillStarManager.instance.KillStar();
|
||||||
TimingAccuracyDisplay.instance.StopStarFlash();
|
TimingAccuracyDisplay.instance.StopStarFlash();
|
||||||
GoForAPerfect.instance.Disable();
|
GoForAPerfect.instance.Disable();
|
||||||
SectionMedalsManager.instance?.OnRemixEnd();
|
SectionMedalsManager.instance?.Reset();
|
||||||
|
|
||||||
GlobalGameManager.UpdateDiscordStatus(Beatmap["remixtitle"].ToString(), false, true);
|
if (discord)
|
||||||
|
{
|
||||||
|
GlobalGameManager.UpdateDiscordStatus(Beatmap["remixtitle"].ToString(), false, true);
|
||||||
|
}
|
||||||
|
|
||||||
Play(beat, 1f);
|
Play(beat, delay);
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -924,8 +930,8 @@ namespace HeavenStudio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
currentSection = default(RiqEntity);
|
lastSection = null;
|
||||||
nextSection = default(RiqEntity);
|
currentSection = null;
|
||||||
if (Beatmap.SectionMarkers.Count > 0)
|
if (Beatmap.SectionMarkers.Count > 0)
|
||||||
{
|
{
|
||||||
currentSectionEvent = 0;
|
currentSectionEvent = 0;
|
||||||
|
|
@ -939,7 +945,7 @@ namespace HeavenStudio
|
||||||
currentSectionEvent = t;
|
currentSectionEvent = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onSectionChange?.Invoke(currentSection);
|
onSectionChange?.Invoke(currentSection, lastSection);
|
||||||
|
|
||||||
SeekAheadAndPreload(beat);
|
SeekAheadAndPreload(beat);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -433,10 +433,10 @@ namespace HeavenStudio.Games
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ScoreMiss(float weight = 1f)
|
public void ScoreMiss(float weight = 1f, int category = 0)
|
||||||
{
|
{
|
||||||
double beat = Conductor.instance?.songPositionInBeatsAsDouble ?? -1;
|
double beat = Conductor.instance?.songPositionInBeatsAsDouble ?? -1;
|
||||||
GameManager.instance.ScoreInputAccuracy(beat, 0, true, NgLateTime(), weight, false);
|
GameManager.instance.ScoreInputAccuracy(beat, 0, true, NgLateTime(), weight, false, category);
|
||||||
if (weight > 0)
|
if (weight > 0)
|
||||||
{
|
{
|
||||||
GoForAPerfect.instance.Miss();
|
GoForAPerfect.instance.Miss();
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
public double startBeat;
|
public double startBeat;
|
||||||
public double timer;
|
public double timer;
|
||||||
|
public int category;
|
||||||
|
public float weight = 1f;
|
||||||
|
|
||||||
public bool isEligible = true;
|
public bool isEligible = true;
|
||||||
public bool canHit = true; //Indicates if you can still hit the cue or not. If set to false, it'll guarantee a miss
|
public bool canHit = true; //Indicates if you can still hit the cue or not. If set to false, it'll guarantee a miss
|
||||||
|
|
@ -269,7 +271,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
if (countsForAccuracy && !(noAutoplay || autoplayOnly) && isEligible)
|
if (countsForAccuracy && !(noAutoplay || autoplayOnly) && isEligible)
|
||||||
{
|
{
|
||||||
GameManager.instance.ScoreInputAccuracy(startBeat + timer, TimeToAccuracy(time), time > 1.0, time);
|
GameManager.instance.ScoreInputAccuracy(startBeat + timer, TimeToAccuracy(time), time > 1.0, time, weight, true, category);
|
||||||
if (state >= 1f || state <= -1f)
|
if (state >= 1f || state <= -1f)
|
||||||
{
|
{
|
||||||
GoForAPerfect.instance.Miss();
|
GoForAPerfect.instance.Miss();
|
||||||
|
|
@ -343,7 +345,7 @@ namespace HeavenStudio.Games
|
||||||
|
|
||||||
if (countsForAccuracy && !(noAutoplay || autoplayOnly))
|
if (countsForAccuracy && !(noAutoplay || autoplayOnly))
|
||||||
{
|
{
|
||||||
GameManager.instance.ScoreInputAccuracy(startBeat + timer, 0, true, 2.0, 1, false);
|
GameManager.instance.ScoreInputAccuracy(startBeat + timer, 0, true, 2.0, weight, false, category);
|
||||||
GoForAPerfect.instance.Miss();
|
GoForAPerfect.instance.Miss();
|
||||||
SectionMedalsManager.instance.MakeIneligible();
|
SectionMedalsManager.instance.MakeIneligible();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -233,6 +233,19 @@ namespace HeavenStudio
|
||||||
float h = Screen.height / 1080f;
|
float h = Screen.height / 1080f;
|
||||||
scaler.scaleFactor = Mathf.Min(w, h);
|
scaler.scaleFactor = Mathf.Min(w, h);
|
||||||
|
|
||||||
|
InputController currentController = PlayerInput.GetInputController(1);
|
||||||
|
if (currentController.GetLastButtonDown() > 0)
|
||||||
|
{
|
||||||
|
if (didRank)
|
||||||
|
{
|
||||||
|
// start the sequence for epilogue
|
||||||
|
GlobalGameManager.LoadScene("Title", 0.35f, 0.5f);
|
||||||
|
}
|
||||||
|
else if (barStarted)
|
||||||
|
{
|
||||||
|
barTime = Time.time - barStartTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (barStarted)
|
if (barStarted)
|
||||||
{
|
{
|
||||||
float t = Time.time - barStartTime;
|
float t = Time.time - barStartTime;
|
||||||
|
|
@ -286,14 +299,6 @@ namespace HeavenStudio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (didRank)
|
|
||||||
{
|
|
||||||
InputController currentController = PlayerInput.GetInputController(1);
|
|
||||||
if (currentController.GetLastButtonDown() > 0)
|
|
||||||
{
|
|
||||||
GlobalGameManager.LoadScene("Title", 0.35f, 0.5f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -696,7 +696,7 @@ namespace HeavenStudio.Editor.Track
|
||||||
TimelineSongPosLine.gameObject.SetActive(true);
|
TimelineSongPosLine.gameObject.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
GameManager.instance.Play(time);
|
GameManager.instance.SafePlay(time, 0, false);
|
||||||
|
|
||||||
SetTimeButtonColors(false, true, true);
|
SetTimeButtonColors(false, true, true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -655,7 +655,7 @@ namespace HeavenStudio
|
||||||
if (Timeline.instance != null)
|
if (Timeline.instance != null)
|
||||||
Timeline.instance?.Stop(Timeline.instance.PlaybackBeat);
|
Timeline.instance?.Stop(Timeline.instance.PlaybackBeat);
|
||||||
else
|
else
|
||||||
GameManager.instance.Stop(0);
|
GameManager.instance.Stop(eventCaller.currentEntity.beat);
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
new GameAction("skill star", "Skill Star", 1f, true)
|
new GameAction("skill star", "Skill Star", 1f, true)
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace HeavenStudio.Common
|
||||||
{
|
{
|
||||||
GameManager.instance.onSectionChange += OnSectionChange;
|
GameManager.instance.onSectionChange += OnSectionChange;
|
||||||
GameManager.instance.onBeatChanged += OnBeatChanged;
|
GameManager.instance.onBeatChanged += OnBeatChanged;
|
||||||
gameObject.SetActive(GameManager.instance.currentSection != null);
|
gameObject.SetActive(GameManager.instance.lastSection != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
// Update is called once per frame
|
||||||
|
|
@ -32,23 +32,23 @@ namespace HeavenStudio.Common
|
||||||
|
|
||||||
public void OnBeatChanged(double beat)
|
public void OnBeatChanged(double beat)
|
||||||
{
|
{
|
||||||
gameObject.SetActive(GameManager.instance.currentSection != null);
|
gameObject.SetActive(GameManager.instance.lastSection != null);
|
||||||
SectionProgress.value = (float) GameManager.instance.SectionProgress;
|
SectionProgress.value = (float) GameManager.instance.SectionProgress;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnSectionChange(RiqEntity section)
|
public void OnSectionChange(RiqEntity newSection, RiqEntity lastSection)
|
||||||
{
|
{
|
||||||
if (section != null)
|
if (newSection != null)
|
||||||
{
|
{
|
||||||
gameObject.SetActive(true);
|
gameObject.SetActive(true);
|
||||||
SectionText.text = section["sectionName"];
|
SectionText.text = newSection["sectionName"];
|
||||||
SectionProgress.value = (float) GameManager.instance.SectionProgress;
|
SectionProgress.value = (float) GameManager.instance.SectionProgress;
|
||||||
|
|
||||||
if (PersistentDataManager.gameSettings.perfectChallengeType == PersistentDataManager.PerfectChallengeType.Off) return;
|
if (PersistentDataManager.gameSettings.perfectChallengeType == PersistentDataManager.PerfectChallengeType.Off) return;
|
||||||
if (!OverlaysManager.OverlaysEnabled) return;
|
if (!OverlaysManager.OverlaysEnabled) return;
|
||||||
if (section["startPerfect"] && GoForAPerfect.instance != null && GoForAPerfect.instance.perfect && !GoForAPerfect.instance.gameObject.activeSelf)
|
if (newSection["startPerfect"] && GoForAPerfect.instance != null && GoForAPerfect.instance.perfect && !GoForAPerfect.instance.gameObject.activeSelf)
|
||||||
{
|
{
|
||||||
GoForAPerfect.instance.Enable(section.beat);
|
GoForAPerfect.instance.Enable(newSection.beat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,9 +61,9 @@ namespace HeavenStudio.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnSectionChange(RiqEntity section)
|
public void OnSectionChange(RiqEntity newSection, RiqEntity lastSection)
|
||||||
{
|
{
|
||||||
if (section == null) return;
|
if (newSection == null) return;
|
||||||
if (!PersistentDataManager.gameSettings.isMedalOn) return;
|
if (!PersistentDataManager.gameSettings.isMedalOn) return;
|
||||||
if (PersistentDataManager.gameSettings.isMedalOn && !isMedalsStarted)
|
if (PersistentDataManager.gameSettings.isMedalOn && !isMedalsStarted)
|
||||||
{
|
{
|
||||||
|
|
@ -72,19 +72,19 @@ namespace HeavenStudio.Common
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GameManager.instance.ClearedSection = isMedalsEligible;
|
GameManager.instance.DoSectionCompletion(newSection.beat, isMedalsEligible, lastSection["sectionName"], 1);
|
||||||
GameObject medal = Instantiate(isMedalsEligible ? MedalOkPrefab : MedalMissPrefab, MedalsHolder.transform);
|
GameObject medal = Instantiate(isMedalsEligible ? MedalOkPrefab : MedalMissPrefab, MedalsHolder.transform);
|
||||||
medal.SetActive(true);
|
medal.SetActive(true);
|
||||||
isMedalsEligible = true;
|
isMedalsEligible = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnRemixEnd()
|
public void OnRemixEnd(double beat, RiqEntity lastSection)
|
||||||
{
|
{
|
||||||
if (!PersistentDataManager.gameSettings.isMedalOn) return;
|
if (!PersistentDataManager.gameSettings.isMedalOn) return;
|
||||||
if (PersistentDataManager.gameSettings.isMedalOn && isMedalsStarted)
|
if (PersistentDataManager.gameSettings.isMedalOn && isMedalsStarted)
|
||||||
{
|
{
|
||||||
GameManager.instance.ClearedSection = isMedalsEligible;
|
GameManager.instance.DoSectionCompletion(beat, isMedalsEligible, lastSection["sectionName"], 1);
|
||||||
GameObject medal = Instantiate(isMedalsEligible ? MedalOkPrefab : MedalMissPrefab, MedalsHolder.transform);
|
GameObject medal = Instantiate(isMedalsEligible ? MedalOkPrefab : MedalMissPrefab, MedalsHolder.transform);
|
||||||
medal.SetActive(true);
|
medal.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,8 @@ namespace HeavenStudio.Util
|
||||||
{
|
{
|
||||||
foreach (Util.Sound sound in playingSounds)
|
foreach (Util.Sound sound in playingSounds)
|
||||||
{
|
{
|
||||||
if (!sound.available)
|
if (sound == null) continue;
|
||||||
return;
|
if (!sound.available) return;
|
||||||
}
|
}
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ namespace HeavenStudio.Util
|
||||||
public bool looping;
|
public bool looping;
|
||||||
public double loopEndBeat = -1;
|
public double loopEndBeat = -1;
|
||||||
public double fadeTime;
|
public double fadeTime;
|
||||||
int loopIndex = 0;
|
bool loopDone;
|
||||||
|
|
||||||
private AudioSource audioSource;
|
private AudioSource audioSource;
|
||||||
private Conductor cond;
|
private Conductor cond;
|
||||||
|
|
@ -78,7 +78,7 @@ namespace HeavenStudio.Util
|
||||||
audioSource.loop = looping;
|
audioSource.loop = looping;
|
||||||
|
|
||||||
loopEndBeat = -1;
|
loopEndBeat = -1;
|
||||||
loopIndex = 0;
|
loopDone = false;
|
||||||
audioSource.Stop();
|
audioSource.Stop();
|
||||||
|
|
||||||
if (beat == -1 && !scheduled)
|
if (beat == -1 && !scheduled)
|
||||||
|
|
@ -87,7 +87,6 @@ namespace HeavenStudio.Util
|
||||||
played = true;
|
played = true;
|
||||||
startTime = AudioSettings.dspTime;
|
startTime = AudioSettings.dspTime;
|
||||||
audioSource.PlayScheduled(startTime);
|
audioSource.PlayScheduled(startTime);
|
||||||
StartCoroutine(NotRelyOnBeatSound());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -126,7 +125,6 @@ namespace HeavenStudio.Util
|
||||||
}
|
}
|
||||||
if (scheduledPitch != 0 && dspTime > scheduledTime)
|
if (scheduledPitch != 0 && dspTime > scheduledTime)
|
||||||
{
|
{
|
||||||
StartCoroutine(NotRelyOnBeatSound());
|
|
||||||
played = true;
|
played = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -140,7 +138,6 @@ namespace HeavenStudio.Util
|
||||||
}
|
}
|
||||||
if (scheduledPitch != 0 && dspTime > startTime)
|
if (scheduledPitch != 0 && dspTime > startTime)
|
||||||
{
|
{
|
||||||
StartCoroutine(NotRelyOnBeatSound());
|
|
||||||
played = true;
|
played = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -171,6 +168,17 @@ namespace HeavenStudio.Util
|
||||||
|
|
||||||
if (played)
|
if (played)
|
||||||
{
|
{
|
||||||
|
if (!(cond.isPlaying || cond.isPaused))
|
||||||
|
{
|
||||||
|
GameManager.instance.SoundObjects.Release(this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(looping || paused || audioSource.isPlaying))
|
||||||
|
{
|
||||||
|
GameManager.instance.SoundObjects.Release(this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (cond.isPaused || cond.SongPitch == 0)
|
if (cond.isPaused || cond.SongPitch == 0)
|
||||||
{
|
{
|
||||||
if (!paused)
|
if (!paused)
|
||||||
|
|
@ -191,34 +199,19 @@ namespace HeavenStudio.Util
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loopIndex < 1)
|
if (!loopDone)
|
||||||
{
|
{
|
||||||
if (looping && loopEndBeat != -1) // Looping sounds play forever unless params are set.
|
if (looping && loopEndBeat != -1) // Looping sounds play forever unless params are set.
|
||||||
{
|
{
|
||||||
if (cond.songPositionInBeatsAsDouble > loopEndBeat)
|
if (cond.songPositionInBeatsAsDouble > loopEndBeat)
|
||||||
{
|
{
|
||||||
KillLoop(fadeTime);
|
KillLoop(fadeTime);
|
||||||
loopIndex++;
|
loopDone = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerator NotRelyOnBeatSound()
|
|
||||||
{
|
|
||||||
if (!(Conductor.instance.isPlaying || Conductor.instance.isPaused))
|
|
||||||
{
|
|
||||||
GameManager.instance.SoundObjects.Release(this);
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
WaitUntil yieldIsAudioPlaying = new WaitUntil(() => !(paused || audioSource.isPlaying || Conductor.instance.isPlaying || Conductor.instance.isPaused));
|
|
||||||
if (played && !looping) // Looping sounds are destroyed manually.
|
|
||||||
{
|
|
||||||
yield return yieldIsAudioPlaying;
|
|
||||||
GameManager.instance.SoundObjects.Release(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetLoopParams(double endBeat, double fadeTime)
|
public void SetLoopParams(double endBeat, double fadeTime)
|
||||||
{
|
{
|
||||||
loopEndBeat = endBeat;
|
loopEndBeat = endBeat;
|
||||||
|
|
@ -248,7 +241,7 @@ namespace HeavenStudio.Util
|
||||||
scheduled = false;
|
scheduled = false;
|
||||||
beat = 0;
|
beat = 0;
|
||||||
loopEndBeat = -1;
|
loopEndBeat = -1;
|
||||||
loopIndex = 0;
|
loopDone = false;
|
||||||
startTime = 0;
|
startTime = 0;
|
||||||
|
|
||||||
audioSource.loop = false;
|
audioSource.loop = false;
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,6 @@ namespace HeavenStudio.Util
|
||||||
GameObject Jukebox = new GameObject("Jukebox");
|
GameObject Jukebox = new GameObject("Jukebox");
|
||||||
Jukebox.AddComponent<AudioSource>();
|
Jukebox.AddComponent<AudioSource>();
|
||||||
Jukebox.tag = "Jukebox";
|
Jukebox.tag = "Jukebox";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if (oneShotAudioSourceObject == null)
|
if (oneShotAudioSourceObject == null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue