40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using BlueWater.Interfaces;
|
|
|
|
namespace BlueWater.Players.Tycoons
|
|
{
|
|
public class WalkingState : IStateMachine<TycoonPlayer>
|
|
{
|
|
private bool _previousIsPickedUpAnything;
|
|
|
|
public void EnterState(TycoonPlayer character)
|
|
{
|
|
_previousIsPickedUpAnything = character.TycoonPickupHandler.IsPickedUpAnything();
|
|
float animationSpeed = character.TycoonMovement.MoveSpeed / 3f;
|
|
character.SpineController.PlayAnimation(_previousIsPickedUpAnything ?
|
|
TycoonPlayerSpineAnimation.Serving : TycoonPlayerSpineAnimation.Walking,
|
|
true, speed:animationSpeed);
|
|
}
|
|
|
|
public void UpdateState(TycoonPlayer character)
|
|
{
|
|
if (character.TycoonPickupHandler.IsPickedUpAnything() != _previousIsPickedUpAnything)
|
|
{
|
|
EnterState(character);
|
|
}
|
|
else if (character.IsInteracting())
|
|
{
|
|
character.StateMachineController.TransitionToState(character.InteractionState, character);
|
|
}
|
|
else if (!character.TycoonMovement.IsMoving)
|
|
{
|
|
character.StateMachineController.TransitionToState(character.IdleState, character);
|
|
}
|
|
}
|
|
|
|
public void ExitState(TycoonPlayer character)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|