public static IEnumerator GetExperienceModel( Client client, string experienceNamespaceName, string experienceModelName, GetExperienceModelEvent onGetExperienceModel, ErrorEvent onError ) { AsyncResult <EzGetExperienceModelResult> result = null; yield return(client.Experience.GetExperienceModel( r => { result = r; }, experienceNamespaceName, experienceModelName )); if (result.Error != null) { onError.Invoke( result.Error ); yield break; } var experienceModel = result.Result.Item; onGetExperienceModel.Invoke(experienceModelName, experienceModel); }
public IEnumerator Run( Client client, GameSession session, Func <IEnumerator, Coroutine> startCoroutine, string experienceNamespaceName, string experienceModelName, GetExperienceModelEvent onGetExperienceModel, GetStatusesEvent onGetStatuses, IncreaseExperienceEvent onIncreaseExperience, ErrorEvent onError ) { if (_watching) { throw new InvalidOperationException("already started"); } _watching = true; _client = client; _session = session; _startCoroutine = startCoroutine; _experienceNamespaceName = experienceNamespaceName; _experienceModelName = experienceModelName; _onGetExperienceModel = onGetExperienceModel; _onGetStatuses = onGetStatuses; _onIncreaseExperience = onIncreaseExperience; _onError = onError; void GetExperienceModelAction( string experienceModelNameTemp, EzExperienceModel experienceModel ) { if (_experienceModelName != experienceModelNameTemp) { return; } _experienceModel = experienceModel; _onGetExperienceModel.RemoveListener(GetExperienceModelAction); } _onGetExperienceModel.AddListener(GetExperienceModelAction); yield return(ExperienceController.GetExperienceModel( _client, _experienceNamespaceName, _experienceModelName, _onGetExperienceModel, _onError )); _onIncreaseExperience.AddListener(OnIncreaseExperience); yield return(Refresh()); }