CapersProject/Assets/02.Scripts/Character/Player/Tycoon/State/InteractionState.cs
2024-11-17 13:29:57 +09:00

66 lines
2.0 KiB
C#

using BlueWater.Interfaces;
namespace BlueWater.Players.Tycoons
{
public class InteractionState : IStateMachine<TycoonPlayer>
{
private string _previousAnimationName;
public void EnterState(TycoonPlayer character)
{
string newAnimationName = GetAnimationName(character);
if (newAnimationName != _previousAnimationName)
{
_previousAnimationName = newAnimationName;
character.SpineController.PlayAnimation(_previousAnimationName, true);
}
}
public void UpdateState(TycoonPlayer character)
{
if (character.IsMakingCocktail || character.IsCleaningFloor || character.IsCleaningTable || character.IsPumping)
{
EnterState(character);
}
else if (character.TycoonMovement.IsMoving)
{
character.StateMachineController.TransitionToState(character.WalkingState, character);
_previousAnimationName = null;
}
else if (!character.TycoonMovement.IsMoving)
{
character.StateMachineController.TransitionToState(character.IdleState, character);
_previousAnimationName = null;
}
}
public void ExitState(TycoonPlayer character)
{
}
private string GetAnimationName(TycoonPlayer character)
{
if (character.IsMakingCocktail)
{
return TycoonPlayerSpineAnimation.MakingCocktail;
}
if (character.IsCleaningFloor)
{
return TycoonPlayerSpineAnimation.CleaningFloor;
}
if (character.IsCleaningTable)
{
return TycoonPlayerSpineAnimation.CleaningTable;
}
if (character.IsPumping)
{
return TycoonPlayerSpineAnimation.Pumping;
}
return null;
}
}
}