public AbilityActionStatus Perform(CharacterProperty target) { mTarget = target; mOwner.ReduceMP(mCost); if (CoodDownLeft <= 0) { mLastTime = Time.time; for (int i = 0; i < mActions.Count; i++) { mActions [i].Init(); } currentIndex = 0; for (currentIndex = 0; currentIndex < mActions.Count; currentIndex++) { AbilityAction action = mActions [currentIndex]; action.SetTarget(mTarget); action.Execute(); AbilityActionStatus status = action.status; if (status != AbilityActionStatus.Success) { return(status); } } } return(AbilityActionStatus.Success); }
public AbilityActionStatus Update() { if (currentIndex < mActions.Count) { for (; currentIndex < mActions.Count; currentIndex++) { AbilityAction action = mActions [currentIndex]; action.SetTarget(mTarget); action.Execute(); AbilityActionStatus status = action.status; if (status != AbilityActionStatus.Success) { return(status); } } } if (onExit != null) { onExit.OnNext(this); } return(AbilityActionStatus.Success); }