CapersProject/Assets/02.Scripts/Character/Player/Tycoon/State/InteractionState.cs

78 lines
2.3 KiB
C#
Raw Normal View History

2024-11-17 04:29:57 +00:00
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)
{
2024-11-26 08:22:26 +00:00
if (character.IsInteracting())
2024-11-17 04:29:57 +00:00
{
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;
}
2024-11-25 01:40:15 +00:00
if (character.IsCleaningMold)
{
return TycoonPlayerSpineAnimation.AttackLimeTree;
}
2024-11-17 04:29:57 +00:00
if (character.IsPumping)
{
return TycoonPlayerSpineAnimation.Pumping;
}
2024-11-17 14:21:16 +00:00
if (character.IsInteractedSlimeGarnish)
{
return TycoonPlayerSpineAnimation.AttackSlime;
}
if (character.IsInteractedLimeTreeGarnish)
{
2024-11-25 01:40:15 +00:00
return TycoonPlayerSpineAnimation.AttackLimeTree;
2024-11-17 14:21:16 +00:00
}
2024-11-17 04:29:57 +00:00
return null;
}
}
}