TICKRESULT ITicker.Tick(float delta) { if (_Current != null) { var result = _Current.Result(); if (result == INSTRUCTION.DONE_BY_FAILURE || result == INSTRUCTION.DONE_BY_SUCCESS) { _Reset(); return(result == INSTRUCTION.DONE_BY_SUCCESS ? TICKRESULT.SUCCESS : TICKRESULT.FAILURE); } if (result == INSTRUCTION.NEXT) { _Current = _Next(); return(TICKRESULT.RUNNING); } if (result == INSTRUCTION.WAIT) { return(TICKRESULT.RUNNING); } } _Current = _Next(); if (_Current != null) { return(TICKRESULT.RUNNING); } _Reset(); return(TICKRESULT.SUCCESS); }