using Fie.Manager; using Fie.Object; using Spine; using System; using System.Collections.Generic; namespace Fie.Enemies.HoovesRaces.Changeling { public class FieStateMachineChangelingVortex : FieStateMachineGameCharacterBase { private enum MeleeState { MELEE_START, MELEE } private MeleeState _meleeState; private bool _isEnd; public override void initialize(FieGameCharacter gameCharacter) { FieChangeling fieChangeling = gameCharacter as FieChangeling; if (!(fieChangeling == null)) { autoFlipToEnemy(fieChangeling); fieChangeling.isEnableAutoFlip = false; } } public override void terminate(FieGameCharacter gameCharacter) { if (!(gameCharacter == null)) { gameCharacter.isEnableAutoFlip = true; } } public override void updateState(ref T gameCharacter) { if (gameCharacter is FieChangeling) { FieChangeling changeling = gameCharacter as FieChangeling; if (_meleeState == MeleeState.MELEE_START) { if (changeling.groundState == FieObjectGroundState.Grounding) { TrackEntry trackEntry = changeling.animationManager.SetAnimation(14, isLoop: false, isForceSet: true); if (trackEntry != null) { trackEntry.Event += delegate(TrackEntry state, Event trackIndex) { if (trackIndex.Data.Name == "fire") { FieManagerBehaviour.I.EmitObject(changeling.transform, changeling.flipDirectionVector, null, changeling); } if (trackIndex.Data.Name == "finished") { _isEnd = true; } }; trackEntry.Complete += delegate { _isEnd = true; }; } else { _isEnd = true; } } else { _isEnd = true; } _meleeState = MeleeState.MELEE; } } } public override bool isEnd() { return _isEnd; } public override Type getNextState() { return typeof(FieStateMachineCommonIdle); } public override List getAllowedStateList() { return new List(); } } }