66 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|