using Fie.Object; using Spine; using System; using System.Collections.Generic; using UnityEngine; namespace Fie.Enemies.HoovesRaces { public class FieStateMachineEnemiesHoovesRacesRift : FieStateMachineGameCharacterBase { private enum StaggerState { STATE_PREPARE, STATE_STAGGER, STATE_STAGGER_END } private StaggerState _staggerState; private bool _isEnd; private Type _nextState = typeof(FieStateMachineCommonIdle); private float _riftForceRate = 1f; private bool _resetMoveForce; public override void updateState(ref T gameCharacter) { if (gameCharacter is FieEnemiesHoovesRaces) { FieEnemiesHoovesRaces fieEnemiesHoovesRaces = gameCharacter as FieEnemiesHoovesRaces; switch (_staggerState) { case StaggerState.STATE_PREPARE: _staggerState = StaggerState.STATE_STAGGER; break; case StaggerState.STATE_STAGGER: { int num = 3; _nextState = typeof(FieStateMachineEnemiesHoovesRacesStaggerFall); fieEnemiesHoovesRaces.isEnableGravity = false; fieEnemiesHoovesRaces.isEnableGravity = true; gameCharacter.setGravityRate(0.15f); if (_resetMoveForce) { fieEnemiesHoovesRaces.resetMoveForce(); } fieEnemiesHoovesRaces.setMoveForce(Vector3.up * 8f * _riftForceRate, 1f, useRound: false); num = 4; TrackEntry trackEntry = fieEnemiesHoovesRaces.animationManager.SetAnimation(num, isLoop: false, isForceSet: true); trackEntry.mixDuration = 0f; if (trackEntry != null) { trackEntry.Event += delegate(Spine.AnimationState state, int trackIndex, Spine.Event e) { if (e.Data.Name == "finished") { _isEnd = true; } }; trackEntry.Complete += delegate { _isEnd = true; }; } else { _isEnd = true; } _staggerState = StaggerState.STATE_STAGGER_END; break; } } } } public override void initialize(FieGameCharacter gameCharacter) { FieEnemiesHoovesRaces fieEnemiesHoovesRaces = gameCharacter as FieEnemiesHoovesRaces; if (!(fieEnemiesHoovesRaces == null)) { fieEnemiesHoovesRaces.isEnableAutoFlip = false; } } public override void terminate(FieGameCharacter gameCharacter) { FieEnemiesHoovesRaces fieEnemiesHoovesRaces = gameCharacter as FieEnemiesHoovesRaces; if (!(fieEnemiesHoovesRaces == null)) { fieEnemiesHoovesRaces.setGravityRate(1f); fieEnemiesHoovesRaces.isEnableAutoFlip = true; fieEnemiesHoovesRaces.isEnableGravity = true; } } public void SetRiftForceRate(float forceRate) { _riftForceRate = forceRate; } public void ResetMoveForce(bool resetMoveForce) { _resetMoveForce = resetMoveForce; } public override bool isEnd() { return _isEnd; } public override Type getNextState() { return _nextState; } public override List getAllowedStateList() { List list = new List(); list.Add(typeof(FieStateMachineEnemiesHoovesRacesStagger)); return list; } } }