diff --git a/Assets/Resources/Sprites/Games/ForkLifter/Animations/Hand_Flick.anim b/Assets/Resources/Sprites/Games/ForkLifter/Animations/Hand_Flick.anim
index e3404d1e8..4cd470dfb 100644
--- a/Assets/Resources/Sprites/Games/ForkLifter/Animations/Hand_Flick.anim
+++ b/Assets/Resources/Sprites/Games/ForkLifter/Animations/Hand_Flick.anim
@@ -98,6 +98,15 @@ AnimationClip:
- serializedVersion: 3
time: 0.35
value: {x: 0.017, y: 0.261, z: 74.52776}
+ inSlope: {x: 2.7443511, y: -2.188788, z: 0}
+ outSlope: {x: 2.7443511, y: -2.188788, z: 0}
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
+ outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
+ - serializedVersion: 3
+ time: 0.4
+ value: {x: 0.1744351, y: 0.1891212, z: 74.52776}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@@ -192,59 +201,6 @@ AnimationClip:
classID: 1
script: {fileID: 0}
m_PPtrCurves:
- - curve:
- - time: 0
- value: {fileID: 0}
- - time: 0.016666668
- value: {fileID: 0}
- - time: 0.033333335
- value: {fileID: 0}
- - time: 0.05
- value: {fileID: 0}
- - time: 0.06666667
- value: {fileID: 0}
- - time: 0.083333336
- value: {fileID: 0}
- - time: 0.1
- value: {fileID: 0}
- - time: 0.11666667
- value: {fileID: 0}
- - time: 0.13333334
- value: {fileID: 0}
- - time: 0.15
- value: {fileID: 0}
- - time: 0.16666667
- value: {fileID: 0}
- - time: 0.18333334
- value: {fileID: 0}
- - time: 0.2
- value: {fileID: 0}
- - time: 0.21666667
- value: {fileID: 0}
- - time: 0.23333333
- value: {fileID: 0}
- - time: 0.25
- value: {fileID: 0}
- - time: 0.26666668
- value: {fileID: 0}
- - time: 0.28333333
- value: {fileID: 0}
- - time: 0.3
- value: {fileID: 0}
- - time: 0.31666666
- value: {fileID: 0}
- - time: 0.33333334
- value: {fileID: 0}
- - time: 0.35
- value: {fileID: 0}
- - time: 0.36666667
- value: {fileID: 0}
- - time: 0.38333333
- value: {fileID: 0}
- attribute: m_Sprite
- path: Fork_Lifter_Gameplay
- classID: 212
- script: {fileID: 0}
- curve:
- time: 0
value: {fileID: -4922902375269903740, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
@@ -307,13 +263,6 @@ AnimationClip:
typeID: 1
customType: 0
isPPtrCurve: 0
- - serializedVersion: 2
- path: 345648135
- attribute: 0
- script: {fileID: 0}
- typeID: 212
- customType: 23
- isPPtrCurve: 1
- serializedVersion: 2
path: 3267382320
attribute: 0
@@ -336,30 +285,6 @@ AnimationClip:
customType: 0
isPPtrCurve: 0
pptrCurveMapping:
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- - {fileID: 0}
- {fileID: -4922902375269903740, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
- {fileID: -3456084564025576355, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
- {fileID: -3456084564025576355, guid: 52117e1d5cd298c42adfea952676c7d6, type: 3}
@@ -688,6 +613,15 @@ AnimationClip:
- serializedVersion: 3
time: 0.35
value: 0.017
+ inSlope: 2.7443511
+ outSlope: 2.7443511
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ - serializedVersion: 3
+ time: 0.4
+ value: 0.1744351
inSlope: 0
outSlope: 0
tangentMode: 136
@@ -716,6 +650,15 @@ AnimationClip:
- serializedVersion: 3
time: 0.35
value: 0.261
+ inSlope: -2.188788
+ outSlope: -2.188788
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ - serializedVersion: 3
+ time: 0.4
+ value: 0.1891212
inSlope: 0
outSlope: 0
tangentMode: 136
diff --git a/Assets/Scripts/Games/CropStomp/CropStomp.cs b/Assets/Scripts/Games/CropStomp/CropStomp.cs
index 5295b10d1..951c698f0 100644
--- a/Assets/Scripts/Games/CropStomp/CropStomp.cs
+++ b/Assets/Scripts/Games/CropStomp/CropStomp.cs
@@ -16,13 +16,13 @@ namespace HeavenStudio.Games.Loaders
{
new GameAction("start marching", "Start Marching")
{
- function = delegate { CropStomp.instance.StartMarching(eventCaller.currentEntity.beat); },
+ function = delegate { CropStomp.instance.StartMarching(eventCaller.currentEntity.beat); },
defaultLength = 2f,
inactiveFunction = delegate { CropStomp.MarchInactive(eventCaller.currentEntity.beat); }
},
new GameAction("veggies", "Veggies")
{
- defaultLength = 4f,
+ defaultLength = 4f,
resizable = true
},
new GameAction("mole", "Mole")
@@ -49,7 +49,8 @@ namespace HeavenStudio.Games.Loaders
new GameAction("plantCollect", "Veggie Collection Values")
{
function = delegate { var e = eventCaller.currentEntity;
- CropStomp.instance.SetCollectThresholds(e["threshold"], e["limit"], e["force"], e["forceAmount"]); },
+ CropStomp.instance.SetCollectThresholds(e["threshold"], e["limit"], e["force"], e["forceAmount"]);
+ },
defaultLength = 0.5f,
parameters = new List()
{
@@ -125,43 +126,34 @@ namespace HeavenStudio.Games
private void Awake()
{
- instance = this;// Finding grass sprite width for grass scrolling.
+ instance = this; // Finding grass sprite width for grass scrolling.
farmer.Init();
- var grassSprite = grass.sprite;
- var borderLeft = grassSprite.rect.xMin + grassSprite.border.x;
- var borderRight = grassSprite.rect.xMax - grassSprite.border.z;
- var borderWidthPixels = borderRight - borderLeft;
- grassWidth = borderWidthPixels / grassSprite.pixelsPerUnit;
+ Sprite sprite = grass.sprite;
+ float borderLeft = sprite.rect.xMin + sprite.border.x;
+ float borderRight = sprite.rect.xMax - sprite.border.z;
+ float borderWidthPixels = borderRight - borderLeft;
+ grassWidth = borderWidthPixels / sprite.pixelsPerUnit;
legsAnim.Play("LiftFront", 0, 1); // Start with leg up.
+ }
- // Initialize vegetables.
- var cond = Conductor.instance;
- var entities = GameManager.instance.Beatmap.Entities;
-
- double startBeat = cond.songPositionInBeatsAsDouble;
+ public override void OnGameSwitch(double beat)
+ {
+ double startBeat;
double endBeat = double.MaxValue;
-
+ var entities = GameManager.instance.Beatmap.Entities;
if (inactiveStart == -1f)
{
// Find the beat of the closest "start marching" event.
- var marchStarts = entities.FindAll(m => m.datamodel == "cropStomp/start marching");
- for (int i = 0; i < marchStarts.Count; i++)
- {
- var sampleBeat = marchStarts[i].beat;
- if (cond.songPositionInBeatsAsDouble <= sampleBeat + 0.25f) // 0.25-beat buffer in case the start marching event is directly next to the game switch event.
- {
- startBeat = sampleBeat;
- break;
- }
- }
+ var lastMarch = entities.Find(c => c.datamodel == "cropStomp/start marching" && beat <= c.beat);
+ startBeat = lastMarch?.beat ?? beat;
}
else
{
// Find the beat of the next step, assuming marching started at inactiveStart.
int stepsPassed = 0;
- while (inactiveStart + (stepsPassed * 2f) < cond.songPositionInBeatsAsDouble)
+ while (inactiveStart + (stepsPassed * 2f) < beat)
{
stepsPassed++;
@@ -175,54 +167,31 @@ namespace HeavenStudio.Games
startBeat = inactiveStart + (stepsPassed * 2f);
// Cue the marching proper to begin when applicable.
- BeatAction.New(this, new List()
- {
- new BeatAction.Action(startBeat - 0.25f, delegate { StartMarching(startBeat); })
- });
+ BeatAction.New(this, new() { new(startBeat - 0.25f, delegate { StartMarching(startBeat); }) });
inactiveStart = -1f;
}
// find out when the next game switch (or remix end) happens
- var allEnds = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame", "end" });
- if (allEnds.Count == 0)
- {
- endBeat = double.MaxValue;
- }
- else
- {
- allEnds.Sort((x, y) => x.beat.CompareTo(y.beat));
-
- //get the beat of the closest end event
- foreach (var end in allEnds)
- {
- if (end.datamodel != "gameManager/end" && end.datamodel.Split(2) == "cropStomp") continue;
- if (end.beat > startBeat)
- {
- endBeat = end.beat;
- break;
- }
- }
- }
+ RiqEntity firstEnd = entities.Find(c => c.datamodel is "gameManager/switchGame/cropStomp" or "gameManager/end" && c.beat > startBeat);
+ endBeat = firstEnd?.beat ?? double.MaxValue;
// Veggie and mole events.
- var vegEvents = entities.FindAll(v => v.datamodel == "cropStomp/veggies");
- var moleEvents = entities.FindAll(m => m.datamodel == "cropStomp/mole");
+ List vegEvents = entities.FindAll(v => v.datamodel == "cropStomp/veggies");
+ List moleEvents = entities.FindAll(m => m.datamodel == "cropStomp/mole");
// Spawn veggies.
- for (int i = 0; i < vegEvents.Count; i++)
- {
+ for (int i = 0; i < vegEvents.Count; i++) {
var vegBeat = vegEvents[i].beat;
var vegLength = vegEvents[i].length;
// Only consider veggie events that aren't past the start point.
- if (startBeat <= vegBeat + vegLength)
- {
+ if (startBeat <= vegBeat + vegLength) {
int veggiesInEvent = Mathf.CeilToInt(vegLength + 1) / 2;
for (int b = 0; b < veggiesInEvent; b++)
{
- var targetVeggieBeat = vegBeat + 2f * b;
+ var targetVeggieBeat = vegBeat + (2f * b);
if (startBeat <= targetVeggieBeat && targetVeggieBeat < endBeat)
{
SpawnVeggie(targetVeggieBeat, startBeat, false);
@@ -232,52 +201,40 @@ namespace HeavenStudio.Games
}
// Spawn moles.
- for (int i = 0; i < moleEvents.Count; i++)
- {
+ for (int i = 0; i < moleEvents.Count; i++) {
var moleBeat = moleEvents[i].beat;
- if (startBeat <= moleBeat && moleBeat < endBeat)
- {
+ if (startBeat <= moleBeat && moleBeat < endBeat) {
SpawnVeggie(moleBeat, startBeat, true);
}
}
- }
-
- List cuedMoleSounds = new List();
-
- public override void OnGameSwitch(double beat)
- {
SetInitTresholds(beat);
SetMarchEndBeat(beat);
}
public override void OnPlay(double beat)
{
- SetInitTresholds(beat);
- SetMarchEndBeat(beat);
+ OnGameSwitch(beat);
}
private void SetMarchEndBeat(double beat)
{
- double nextEndBeat = double.MaxValue;
var nextEnd = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame", "end" }).Find(e => e.beat > beat);
- if (nextEnd != null) nextEndBeat = nextEnd.beat;
+ double nextEndBeat = nextEnd?.beat ?? double.MaxValue;
- var allEnds = EventCaller.GetAllInGameManagerList("cropStomp", new string[] { "end" });
- var tempEnds = allEnds.FindAll(x => x.beat >= beat && x.beat < nextEndBeat);
- if (tempEnds.Count == 0) return;
-
- marchEndBeat = tempEnds[0].beat;
- willNotHum = tempEnds[0]["mute"];
+ var firstEnd = GameManager.instance.Beatmap.Entities.Find(c => c.datamodel == "cropStomp/end" && c.beat >= beat && c.beat < nextEndBeat);
+ if (firstEnd != null) {
+ marchEndBeat = firstEnd.beat;
+ willNotHum = firstEnd["mute"];
+ }
}
public static void MoleSound(double beat)
{
- MultiSound.Play(new MultiSound.Sound[]
- {
- new MultiSound.Sound("cropStomp/moleNyeh", beat - 2, 1, 1, false, 0.134),
- new MultiSound.Sound("cropStomp/moleHeh1", beat - 1.5, 1, 1, false, 0.05),
- new MultiSound.Sound("cropStomp/moleHeh2", beat - 1, 1, 1, false, 0.061)
+ MultiSound.Play(new MultiSound.Sound[] {
+ new MultiSound.Sound("cropStomp/moleNyeh", beat - 2, offset: 0.134),
+ new MultiSound.Sound("cropStomp/moleHeh1", beat - 1.5, offset: 0.05),
+ new MultiSound.Sound("cropStomp/moleHeh2", beat - 1, offset: 0.061)
}, forcePlay: true);
}
@@ -285,11 +242,8 @@ namespace HeavenStudio.Games
{
var cond = Conductor.instance;
- if (!cond.isPlaying)
- return;
+ if (!cond.isPlaying || !isMarching) return;
- if (!isMarching)
- return;
// Debug.Log(newBeat);
bool cameraLocked = cond.songPositionInBeats >= marchEndBeat;
@@ -308,11 +262,11 @@ namespace HeavenStudio.Games
if (PlayerInput.GetIsAction(InputAction_BasicRelease) && !IsExpectingInputNow(InputAction_BasicRelease))
{
- bodyAnim.Play("Raise");
+ bodyAnim.DoScaledAnimationAsync("Raise", 0.5f);
}
if (PlayerInput.GetIsAction(InputAction_Flick) && !IsExpectingInputNow(InputAction_FlickRelease))
{
- bodyAnim.Play("Pick");
+ bodyAnim.DoScaledAnimationAsync("Pick", 0.5f);
}
if (cameraLocked) return;
@@ -326,7 +280,7 @@ namespace HeavenStudio.Games
var grassPos = grassTrans.localPosition;
var newGrassX = grassPos.x + (scrollRate * Time.deltaTime);
- newGrassX = (newGrassX % (grassWidth * 4.5f));
+ newGrassX %= grassWidth * 4.5f;
grassTrans.localPosition = new Vector3(newGrassX, grassPos.y, grassPos.z);
@@ -334,16 +288,14 @@ namespace HeavenStudio.Games
var dotsPos = dotsTrans.localPosition;
var newDotsX = dotsPos.x + (scrollRate * Time.deltaTime);
- newDotsX = (newDotsX % dotsWidth);
+ newDotsX %= dotsWidth;
dotsTrans.localPosition = new Vector3(newDotsX, dotsPos.y, dotsPos.z);
}
private void LateUpdate()
{
- if (!isMarching)
- return;
-
+ if (!isMarching) return;
isFlicking = false;
}
@@ -357,12 +309,9 @@ namespace HeavenStudio.Games
private void SetInitTresholds(double beat)
{
- var allCollects = EventCaller.GetAllInGameManagerList("cropStomp", new string[] { "plantCollect" });
- if (allCollects.Count == 0) return;
-
- var tempCollect = allCollects.FindLast(x => x.beat < beat);
- if (tempCollect == null) return;
- SetCollectThresholds(tempCollect["threshold"], tempCollect["limit"], tempCollect["force"], tempCollect["forceAmount"]);
+ var lastCollect = GameManager.instance.Beatmap.Entities.FindLast(c => c.datamodel == "cropStomp/plantCollect" && c.beat < beat);
+ if (lastCollect == null) return;
+ SetCollectThresholds(lastCollect["threshold"], lastCollect["limit"], lastCollect["force"], lastCollect["forceAmount"]);
}
public void CollectPlant(int veggieType)
@@ -379,19 +328,18 @@ namespace HeavenStudio.Games
if (!isStepping)
{
stepCount += 1;
- var stepAnim = (stepCount % 2 != 0 ? "StepFront" : "StepBack");
- legsAnim.Play(stepAnim, 0, 0);
+ var stepAnim = (stepCount % 2 != 0) ? "StepFront" : "StepBack";
+ legsAnim.DoScaledAnimationAsync(stepAnim, 0.5f);
isStepping = true;
}
-
}
// Lift.
else
{
- var liftAnim = (stepCount % 2 != 0 ? "LiftBack" : "LiftFront");
- legsAnim.Play(liftAnim, 0, 0);
+ var liftAnim = (stepCount % 2 != 0) ? "LiftBack" : "LiftFront";
+ legsAnim.DoScaledAnimationAsync(liftAnim, 0.5f);
var farmerPos = farmerTrans.localPosition;
farmerTrans.localPosition = new Vector3(farmerPos.x - stepDistance, farmerPos.y, farmerPos.z);
@@ -413,27 +361,28 @@ namespace HeavenStudio.Games
public void Stomp()
{
// Don't increment step counter if autostep stepped already.
- if (!isStepping)
- stepCount += 1;
+ if (!isStepping) stepCount += 1;
- var stompAnim = (stepCount % 2 != 0 ? "StompFront" : "StompBack");
+ var stompAnim = (stepCount % 2 != 0) ? "StompFront" : "StompBack";
- legsAnim.Play(stompAnim, 0, 0);
+ legsAnim.DoScaledAnimationAsync(stompAnim, 0.5f);
SoundByte.PlayOneShotGame("cropStomp/stomp");
- if (shakeTween != null)
- shakeTween.Kill(true);
+ if (shakeTween != null) shakeTween.Kill(true);
- DOTween.Punch(() => GameCamera.AdditionalPosition, x => GameCamera.AdditionalPosition = x, new Vector3(0, 0.75f, 0),
- Conductor.instance.pitchedSecPerBeat*0.5f, 18, 1f);
+ DOTween.Punch(() =>
+ GameCamera.AdditionalPosition,
+ x => GameCamera.AdditionalPosition = x,
+ new Vector3(0, 0.75f, 0), Conductor.instance.pitchedSecPerBeat * 0.5f, 18, 1f
+ );
isStepping = true;
}
private void SpawnVeggie(double beat, double startBeat, bool isMole)
{
- var newVeggie = GameObject.Instantiate(isMole ? baseMole : baseVeggie, veggieHolder).GetComponent();
+ var newVeggie = Instantiate(isMole ? baseMole : baseVeggie, veggieHolder).GetComponent();
newVeggie.targetBeat = beat;
@@ -445,21 +394,16 @@ namespace HeavenStudio.Games
public static void MarchInactive(double beat)
{
- if (GameManager.instance.currentGame == "cropStomp") //this function is only meant for making march sounds while the game is inactive
- {
- return;
- }
+ if (GameManager.instance.currentGame == "cropStomp") return;
inactiveStart = beat;
RiqEntity gameSwitch = GameManager.instance.Beatmap.Entities.Find(c => c.beat >= beat && c.datamodel == "gameManager/switchGame/cropStomp");
- if (gameSwitch == null)
- return;
- int length = (int)Math.Ceiling((gameSwitch.beat - beat)/2);
+ if (gameSwitch == null) return;
+ int length = (int)Math.Ceiling((gameSwitch.beat - beat) / 2);
MultiSound.Sound[] sounds = new MultiSound.Sound[length];
- for(int i = 0; i < length; i++)
- {
- sounds[i] = new MultiSound.Sound("cropStomp/hmm", beat + i*2);
+ for(int i = 0; i < length; i++) {
+ sounds[i] = new MultiSound.Sound("cropStomp/hmm", beat + (i * 2));
}
- MultiSound.Play(sounds, forcePlay:true);
+ MultiSound.Play(sounds, forcePlay: true);
}
}
}
diff --git a/Assets/Scripts/Games/CropStomp/Farmer.cs b/Assets/Scripts/Games/CropStomp/Farmer.cs
index cc2b33ca9..4016cb5dd 100644
--- a/Assets/Scripts/Games/CropStomp/Farmer.cs
+++ b/Assets/Scripts/Games/CropStomp/Farmer.cs
@@ -70,7 +70,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
if (PlayerInput.GetIsAction(CropStomp.InputAction_BasicPress) && !game.IsExpectingInputNow(CropStomp.InputAction_BasicPress))
{
- game.bodyAnim.Play("Crouch", 0, 0);
+ game.bodyAnim.DoScaledAnimationAsync("Crouch", 0.5f);
}
}
@@ -87,8 +87,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
startPlant.SetActive(collectedPlants >= plantThreshold);
if (spawnedPlants.Count > 0)
{
- foreach (var plant in spawnedPlants)
- {
+ foreach (var plant in spawnedPlants) {
Destroy(plant);
}
spawnedPlants.Clear();
@@ -102,8 +101,9 @@ namespace HeavenStudio.Games.Scripts_CropStomp
{
spawnedPlant = Instantiate(plantLastRef, collectedHolder);
spawnedPlant.GetComponent().sprite = veggieSprites[lastVeggieType];
+ } else {
+ spawnedPlant = Instantiate((realIndex % 2 == 0) ? plantRightRef : plantLeftRef, collectedHolder);
}
- else spawnedPlant = Instantiate((realIndex % 2 == 0) ? plantRightRef : plantLeftRef, collectedHolder);
spawnedPlant.transform.localPosition = new Vector3(0, (realIndex * plantDistance) + plantStartDistance, 0);
spawnedPlant.GetComponent().sortingOrder = -realIndex - 2;
spawnedPlant.SetActive(true);
@@ -119,9 +119,8 @@ namespace HeavenStudio.Games.Scripts_CropStomp
private void Miss(PlayerActionEvent caller)
{
- if (GameManager.instance.currentGame != "cropStomp") return;
- if (!game.isMarching)
- return;
+ if (GameManager.instance.currentGame != "cropStomp" || !game.isMarching) return;
+
// REMARK: does not count for performance
nextStompBeat += 2f;
stomp?.Disable();
@@ -133,18 +132,12 @@ namespace HeavenStudio.Games.Scripts_CropStomp
void Stomp(bool ng)
{
- if (GameManager.instance.currentGame != "cropStomp") return;
- if (!game.isMarching)
- return;
- if (ng)
- {
- game.bodyAnim.Play("Crouch", 0, 0);
- }
- else
- {
+ if (GameManager.instance.currentGame != "cropStomp" || !game.isMarching) return;
+ if (ng) {
+ game.bodyAnim.DoScaledAnimationAsync("Crouch", 0.5f);
+ } else {
game.Stomp();
- game.bodyAnim.Play("Stomp", 0, 0);
-
+ game.bodyAnim.DoScaledAnimationAsync("Stomp", 0.5f);
}
nextStompBeat += 2f;
stomp?.Disable();
diff --git a/Assets/Scripts/Games/CropStomp/Veggie.cs b/Assets/Scripts/Games/CropStomp/Veggie.cs
index 56d6a4784..695589813 100644
--- a/Assets/Scripts/Games/CropStomp/Veggie.cs
+++ b/Assets/Scripts/Games/CropStomp/Veggie.cs
@@ -39,7 +39,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
{
game = CropStomp.instance;
- if (Conductor.instance.isPlaying)
+ // if (Conductor.instance.isPlaying)
game.ScheduleInput(targetBeat - 1, 1f, CropStomp.InputAction_BasicPress, StompJust, StompMiss, Out);
if (!isMole)
@@ -56,38 +56,23 @@ namespace HeavenStudio.Games.Scripts_CropStomp
private bool gotStomped; // Safeguard in case nested Update() call breaks.
private void Update()
{
- if (!game.isMarching)
- return;
+ if (!game.isMarching) return;
- // Veggie missed. Handle missed state.
- if (veggieState == -1)
+ switch (veggieState)
{
- MissedUpdate();
- return;
- }
+ case -1: MissedUpdate(); return;
+ // case 0:
+ case 2: PickedUpdate(); return;
+ case 1:
+ float airPosition = Conductor.instance.GetPositionFromBeat(stompedBeat, landBeat - stompedBeat);
+ veggieTrans.position = curve.GetPoint(Mathf.Clamp(airPosition, 0, 1));
- // Veggie picked. Handle picked state.
- if (veggieState == 2)
- {
- PickedUpdate();
- return;
- }
-
- var cond = Conductor.instance;
- // In ground.
- if (veggieState == 0)
- {
- }
- // In air.
- else if (veggieState == 1)
- {
- float airPosition = cond.GetPositionFromBeat(stompedBeat, landBeat - stompedBeat);
- veggieTrans.position = curve.GetPoint(Mathf.Clamp(airPosition, 0, 1));
-
- if (PlayerInput.GetIsAction(CropStomp.InputAction_FlickRelease) && !game.IsExpectingInputNow(CropStomp.InputAction_FlickRelease))
- {
- pickEligible = false;
- }
+ if (PlayerInput.GetIsAction(CropStomp.InputAction_FlickRelease) && !game.IsExpectingInputNow(CropStomp.InputAction_FlickRelease))
+ {
+ pickEligible = false;
+ }
+ break;
+ // default:
}
}
@@ -105,17 +90,17 @@ namespace HeavenStudio.Games.Scripts_CropStomp
StompVeggie(false);
}
- private void StompMiss(PlayerActionEvent caller)
+ private void StompMiss(PlayerActionEvent caller)
{
veggieState = -1;
caller.Disable();
}
- private void Out(PlayerActionEvent caller) {}
+ private void Out(PlayerActionEvent caller) { }
private void PickJust(PlayerActionEvent caller, float state)
{
- game.bodyAnim.Play("Pick", 0, 0);
+ game.bodyAnim.DoScaledAnimationAsync("Pick", 0.5f);
game.isFlicking = true;
if (!pickEligible) return;
if (GameManager.instance.autoplay)
@@ -131,13 +116,20 @@ namespace HeavenStudio.Games.Scripts_CropStomp
curve.transform.localScale = Vector3.one; // Return curve to normal size in the case of mole curves.
- var key1 = curve.KeyPoints[0];
- var key1Pos = key1.Position;
- key1.Position = new Vector3(key1Pos.x, veggieTrans.position.y, key1Pos.z);
+ for (int i = 0; i < 2; i++)
+ {
+ var key = curve.KeyPoints[i];
+ var keyPos = key.Position;
+ key.Position = new Vector3(keyPos.x, veggieTrans.position.y + (i * 2), keyPos.z);
+ }
- var key2 = curve.KeyPoints[1];
- var key2Pos = key2.Position;
- key2.Position = new Vector3(key2Pos.x, veggieTrans.position.y + 2f, key2Pos.z);
+ // var key1 = curve.KeyPoints[0];
+ // var key1Pos = key1.Position;
+ // key1.Position = new Vector3(key1Pos.x, veggieTrans.position.y, key1Pos.z);
+
+ // var key2 = curve.KeyPoints[1];
+ // var key2Pos = key2.Position;
+ // key2.Position = new Vector3(key2Pos.x, veggieTrans.position.y + 2f, key2Pos.z);
pickedBeat = Conductor.instance.songPositionInBeatsAsDouble;
@@ -154,9 +146,8 @@ namespace HeavenStudio.Games.Scripts_CropStomp
private void PickMiss(PlayerActionEvent caller)
{
veggieState = -1;
-
- if (!isMole)
- SoundByte.PlayOneShotGame("cropStomp/veggieMiss");
+
+ if (!isMole) SoundByte.PlayOneShotGame("cropStomp/veggieMiss");
caller.Disable();
}
@@ -186,7 +177,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
var distDiff = transform.position.x - game.farmerTrans.position.x;
if (distDiff > 1.5f)
{
- moleAnim.Play("Chuckle", 0, 0);
+ moleAnim.DoScaledAnimationAsync("Chuckle", 0.5f);
moleLaughing = true;
}
}
@@ -223,6 +214,8 @@ namespace HeavenStudio.Games.Scripts_CropStomp
}
gotStomped = true;
+ Debug.Log("Stomped!");
+
var cond = Conductor.instance;
ParticleSystem spawnedHit = Instantiate(game.hitParticle, game.hitParticle.transform.parent);
@@ -235,12 +228,12 @@ namespace HeavenStudio.Games.Scripts_CropStomp
stompedBeat = cond.songPositionInBeatsAsDouble;
- landBeat = targetBeat + (float)cond.SecsToBeats(Minigame.NgLateTime()-1, cond.GetBpmAtBeat(targetBeat));
+ landBeat = targetBeat + (float)cond.SecsToBeats(Minigame.NgLateTime() - 1, cond.GetBpmAtBeat(targetBeat));
if (autoTriggered)
{
game.Stomp();
- game.bodyAnim.Play("Stomp", 0, 0);
+ game.bodyAnim.DoScaledAnimationAsync("Stomp", 0.5f);
}
if (!isMole)
@@ -251,7 +244,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
}
else
{
- moleAnim.Play("Idle", 0, 0);
+ moleAnim.DoScaledAnimationAsync("Idle", 0.5f);
}
var veggieScale = veggieTrans.localScale;
@@ -267,7 +260,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
if (autoTriggered)
{
- game.bodyAnim.Play("Pick", 0, 0);
+ game.bodyAnim.DoScaledAnimationAsync("Pick", 0.5f);
game.isFlicking = true;
}
diff --git a/Assets/Scripts/Games/ForkLifter/ForkLifter.cs b/Assets/Scripts/Games/ForkLifter/ForkLifter.cs
index 0c6519acf..6787de94d 100644
--- a/Assets/Scripts/Games/ForkLifter/ForkLifter.cs
+++ b/Assets/Scripts/Games/ForkLifter/ForkLifter.cs
@@ -124,6 +124,12 @@ namespace HeavenStudio.Games
BackgroundColorUpdate();
}
+ public override void OnPlay(double beat)
+ {
+ base.OnPlay(beat);
+ OnGameSwitch(beat);
+ }
+
public override void OnGameSwitch(double beat)
{
base.OnGameSwitch(beat);
@@ -247,10 +253,5 @@ namespace HeavenStudio.Games
BackgroundColorGrad(lastEventGrad.beat, lastEventGrad.length, lastEventGrad["start"], lastEventGrad["end"], lastEventGrad["ease"]);
}
}
-
- public override void OnPlay(double beat)
- {
- PersistColor(beat);
- }
}
}
\ No newline at end of file