Conductor: property that returns secPerBeat scaled to song pitch

NEEDS TESTING
This commit is contained in:
minenice55 2022-03-22 14:29:15 -04:00
parent 7444165b08
commit f6df1644bc
5 changed files with 11 additions and 8 deletions

View file

@ -17,6 +17,9 @@ namespace HeavenStudio
// The number of seconds for each song beat // The number of seconds for each song beat
public float secPerBeat; public float secPerBeat;
// The number of seconds for each song beat, inversely scaled to song pitch (higer pitch = shorter time)
public float pitchedSecPerBeat => (secPerBeat / musicSource.pitch);
// Current song position, in seconds // Current song position, in seconds
private float songPos; // for Conductor use only private float songPos; // for Conductor use only
public float songPosition; public float songPosition;
@ -237,7 +240,7 @@ namespace HeavenStudio
// convert real seconds to beats // convert real seconds to beats
public float GetRestFromRealTime(float seconds) public float GetRestFromRealTime(float seconds)
{ {
return seconds/secPerBeat; return seconds/pitchedSecPerBeat;
} }
public void SetBpm(float bpm) public void SetBpm(float bpm)

View file

@ -14,7 +14,7 @@ namespace HeavenStudio.Games
const float stepDistance = 2.115f; const float stepDistance = 2.115f;
public static float[] moleSoundOffsets = new float[]{ 0.134f, 0.05f, 0.061f }; public static float[] moleSoundOffsets = new float[]{ 0.134f, 0.05f, 0.061f };
float scrollRate => stepDistance / (Conductor.instance.secPerBeat * 2f / Conductor.instance.musicSource.pitch); float scrollRate => stepDistance / (Conductor.instance.pitchedSecPerBeat * 2f);
float grassWidth; float grassWidth;
float dotsWidth = 19.2f; float dotsWidth = 19.2f;

View file

@ -231,7 +231,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
var veggieScale = veggieTrans.localScale; var veggieScale = veggieTrans.localScale;
veggieTrans.localScale = new Vector3(veggieScale.x * 0.5f, veggieScale.y, veggieScale.z); veggieTrans.localScale = new Vector3(veggieScale.x * 0.5f, veggieScale.y, veggieScale.z);
squashTween = veggieTrans.DOScaleX(veggieScale.x, cond.secPerBeat * 0.5f / cond.musicSource.pitch); squashTween = veggieTrans.DOScaleX(veggieScale.x, cond.pitchedSecPerBeat * 0.5f);
ResetState(); ResetState();

View file

@ -108,7 +108,7 @@ namespace HeavenStudio.Games
var sound = new MultiSound.Sound[] var sound = new MultiSound.Sound[]
{ {
new MultiSound.Sound(sounds[0], beat), new MultiSound.Sound(sounds[0], beat),
new MultiSound.Sound(sounds[1], beat + 1f - (0.030f/Conductor.instance.secPerBeat)*Conductor.instance.musicSource.pitch), new MultiSound.Sound(sounds[1], beat + 1f, offset: 0.030f),
new MultiSound.Sound("", beat + 2f) new MultiSound.Sound("", beat + 2f)
}; };
@ -136,7 +136,7 @@ namespace HeavenStudio.Games
var sound = new MultiSound.Sound[] var sound = new MultiSound.Sound[]
{ {
new MultiSound.Sound("djSchool/andStop1", beat), new MultiSound.Sound("djSchool/andStop1", beat),
new MultiSound.Sound("djSchool/andStop2", beat + .5f - (0.1200f/Conductor.instance.secPerBeat)*Conductor.instance.musicSource.pitch), new MultiSound.Sound("djSchool/andStop2", beat + .5f, offset: 0.1200f),
new MultiSound.Sound("", beat + 1.5f) new MultiSound.Sound("", beat + 1.5f)
}; };
@ -178,8 +178,8 @@ namespace HeavenStudio.Games
new MultiSound.Sound(sounds[0], beat), new MultiSound.Sound(sounds[0], beat),
new MultiSound.Sound(sounds[1], beat + .25f), new MultiSound.Sound(sounds[1], beat + .25f),
new MultiSound.Sound(sounds[2], beat + .5f), new MultiSound.Sound(sounds[2], beat + .5f),
new MultiSound.Sound(sounds[3], beat + 1f - (0.0500f/Conductor.instance.secPerBeat)*Conductor.instance.musicSource.pitch), new MultiSound.Sound(sounds[3], beat + 1f, offset: 0.0500f),
new MultiSound.Sound(sounds[4], beat + 2f - (0.070f/Conductor.instance.secPerBeat)*Conductor.instance.musicSource.pitch), new MultiSound.Sound(sounds[4], beat + 2f, offset: 0.070f),
}); });
BeatAction.New(djYellow, new List<BeatAction.Action>() BeatAction.New(djYellow, new List<BeatAction.Action>()

View file

@ -23,7 +23,7 @@ namespace HeavenStudio.Games.Scripts_ForkLifter
// SCHEDULING zoom sound so it lines up with when it meets the fork. // SCHEDULING zoom sound so it lines up with when it meets the fork.
var currentDspTime = AudioSettings.dspTime; var currentDspTime = AudioSettings.dspTime;
var cond = Conductor.instance; var cond = Conductor.instance;
var zoomStartTime = currentDspTime + (double)(cond.secPerBeat * 2 / cond.musicSource.pitch) - 0.317; var zoomStartTime = currentDspTime + (double)(cond.pitchedSecPerBeat * 2) - 0.317;
Jukebox.PlayOneShotScheduledGame("forkLifter/zoomFast", (double)zoomStartTime); Jukebox.PlayOneShotScheduledGame("forkLifter/zoomFast", (double)zoomStartTime);
GetComponentInChildren<SpriteRenderer>().sprite = ForkLifter.instance.peaSprites[type]; GetComponentInChildren<SpriteRenderer>().sprite = ForkLifter.instance.peaSprites[type];