/// <summary> /// CPK のDownload~Bind までの処理 /// LoadFileの途中処理としての利用や、CueSheet取得用などに用いると思われ /// </summary> /// <param name="_cpkName"></param> /// <param name="_onComplete"></param> /// <returns></returns> private IEnumerator LoadCPK(string _cpkName, string _versionHashName, OnCompleteBind _onComplete) { /* * ------------------------------ * フロー * 1. Cache に無ければDownload -> Cache に保存 * 2. Cache にあるCPKファイルをBind * ------------------------------ */ // Cache上に無い if (!CriPackageCacheController.IsCached(_cpkName, _versionHashName)) { // Download すべきか、サーバー上のファイルを直接バインドすべきかは要検討 yield return m_dlCtrl.DonwloadCPK(_cpkName, _versionHashName, null); //TODO: Retry 対応 } // Dictionary未登録であればCache 上にあるCPKファイルをバインド if (!BindDict.ContainsKey(_cpkName)) { yield return(BindCPK(_cpkName, _versionHashName)); } BinderData data = null; bool ret = BindDict.TryGetValue(_cpkName, out data); if (_onComplete != null) { // Load 成功したので参照しているはず if (ret && data != null) { data.SetReference(); } _onComplete.Invoke(ret, data); } }
/// <summary> /// CPK ファイルのロード窓口 /// </summary> /// <param name="_cpkName"></param> /// <param name="_onComplete"></param> /// <returns></returns> public IEnumerator LoadCPK(string _cpkName, OnCompleteBind _onComplete) { string version = GetVersionName(_cpkName); yield return(LoadCPK(_cpkName, version, _onComplete)); }