public IEnumerator RunMoveUntil(IBossMove move, Func <bool> predicate) { CurrentMove = move; yield return(CoroutineUtilities.RunWhile(move.DoMove(), () => !predicate())); PreviousMove = move; if (CurrentMove == move) { CurrentMove = null; } else { move.OnCancel(); } }
/*public IEnumerator RunRandomMove() * { * return RunMove(GetRandomMove()); * }*/ public IEnumerator RunMove(IBossMove move) { int stage = BossStage; return(RunMoveUntil(move, () => stage != BossStage || move != CurrentMove)); }