public IEnumerator Run( Client client, GameSession session, string questNamespaceName, string questGroupName, GetQuestModelEvent onGetQuestModel, FindProgressEvent onFindProgress, ErrorEvent onError ) { if (_watching) { throw new InvalidOperationException("already started"); } _watching = true; _client = client; _session = session; _questNamespaceName = questNamespaceName; _questGroupName = questGroupName; _onGetQuestModel = onGetQuestModel; _onFindProgress = onFindProgress; _onError = onError; yield return(Refresh()); yield return(QuestController.GetProgress( _client, _session, _questNamespaceName, _onFindProgress, _onError )); }
public static IEnumerator GetProgress( Client client, GameSession session, string questNamespaceName, FindProgressEvent onFindProgress, ErrorEvent onError ) { AsyncResult <EzGetProgressResult> result = null; yield return(client.Quest.GetProgress( r => { result = r; }, session, questNamespaceName )); if (result.Error != null) { if (result.Error is NotFoundException) { } else { onError.Invoke( result.Error ); yield break; } } else { var questModel = result.Result.Quest; var progress = result.Result.Item; onFindProgress.Invoke(questModel, progress); } }