public override void ChangeFlipbookState(ActorFlipbookState NewState, bool Force = false) { if (NewState == MobileFlipbook.State || NewState == ActorFlipbookState.Stand) { return; } MobileFlipbook.ChangeState(NewState, Force); }
public override void ChangeFlipbookState(ActorFlipbookState NewState, bool Force = false) { if (IsStateDormant(NewState) && isMoving) { NewState = ActorFlipbookState.Activated; } base.ChangeFlipbookState(NewState, Force); }
/// <summary> /// Mobile's flipbook change state machine /// </summary> public virtual void ChangeFlipbookState(ActorFlipbookState NewState, bool Force = false) { if (IsHealthCritical) { if (NewState == ActorFlipbookState.Stand) { NewState = ActorFlipbookState.StandLowHealth; } else if (NewState == ActorFlipbookState.Moving) { NewState = ActorFlipbookState.MovingLowHealth; } } if (NewState == MobileFlipbook.State && !IsStateUsingItem(MobileFlipbook.State)) { return; } if (IsStateDead(MobileFlipbook.State)) { return; } if (IsStateUnableToMove(MobileFlipbook.State) && IsStateStand(NewState)) { Force = true; } if (IsStateMoving(MobileFlipbook.State) && IsStateStand(NewState)) { Force = true; } if (IsStateCharging(MobileFlipbook.State) && IsStateStand(NewState)) { return; } //Moving & Shooting condition if (IsStateCharging(MobileFlipbook.State) && IsStateMoving(NewState)) { Force = true; } if (IsStateMoving(MobileFlipbook.State) && IsStateCharging(NewState)) { return; } //Being shot and start moving if (IsStateBeingDamaged(MobileFlipbook.State) && IsStateStand(NewState)) { return; } if (IsStateShooting(MobileFlipbook.State) && IsStateStand(NewState)) { return; } //Stand Condition if (Force || (IsStateStand(MobileFlipbook.State) && (IsStateMoving(NewState) || IsStateEmoting(NewState) || IsStateBeingDamaged(NewState) || IsStateCharging(NewState) || IsStateUsingItem(NewState) || IsStateDead(NewState) || IsStateFalling(NewState))) || //Moving || MovingLowHealth (IsStateMoving(MobileFlipbook.State) && (IsStateStand(NewState) || IsStateDead(NewState) || IsStateShooting(NewState) || IsStateFalling(NewState))) || //Unable to move (IsStateUnableToMove(MobileFlipbook.State) && (IsStateStand(NewState) || IsStateMoving(NewState) || IsStateShooting(NewState))) || //Falling (IsStateFalling(MobileFlipbook.State) && (IsStateStand(NewState) || IsStateMoving(NewState) || IsStateUnableToMove(NewState))) || //Charging (IsStateCharging(MobileFlipbook.State) && (IsStateMoving(NewState) || IsStateUnableToMove(NewState) || IsStateEmoting(NewState) || IsStateBeingDamaged(NewState) || IsStateShooting(NewState) || IsStateUsingItem(NewState)))) { MobileFlipbook.ChangeState(NewState, Force); } }
protected bool IsStateUsingItem(ActorFlipbookState state) => state == ActorFlipbookState.UsingItem;
protected bool IsStateUnableToMove(ActorFlipbookState state) => state == ActorFlipbookState.UnableToMove;
protected bool IsStateFalling(ActorFlipbookState state) => state == ActorFlipbookState.Falling;
protected bool IsStateDead(ActorFlipbookState state) => state == ActorFlipbookState.Dead;
protected bool IsStateEmoting(ActorFlipbookState state) => state == ActorFlipbookState.Emotion1 || state == ActorFlipbookState.Emotion2;
protected bool IsStateBeingDamaged(ActorFlipbookState state) => state == ActorFlipbookState.BeingDamaged1 || state == ActorFlipbookState.BeingDamaged2 || state == ActorFlipbookState.DepletingShield || state == ActorFlipbookState.BeingFrozen || state == ActorFlipbookState.BeingShocked;
protected bool IsStateCharging(ActorFlipbookState state) => state == ActorFlipbookState.ChargingS1 || state == ActorFlipbookState.ChargingS2 || state == ActorFlipbookState.ChargingSS;
protected bool IsStateShooting(ActorFlipbookState state) => state == ActorFlipbookState.ShootingS1 || state == ActorFlipbookState.ShootingS2 || state == ActorFlipbookState.ShootingSS;
protected bool IsStateStand(ActorFlipbookState state) => state == ActorFlipbookState.Stand || state == ActorFlipbookState.StandLowHealth;
protected bool IsStateMoving(ActorFlipbookState state) => state == ActorFlipbookState.MovingLowHealth || state == ActorFlipbookState.Moving;
protected bool IsStateActivated(ActorFlipbookState state) => state == ActorFlipbookState.Activated;
protected bool IsStateDormant(ActorFlipbookState state) => state == ActorFlipbookState.Dormant;