private ILoadProcess DownloadImpl(ISoundLoadDatabase database, string cueSheetName) { var fileData = database.Find(cueSheetName); if (fileData == null) { ChipstarLog.Log_RequestCueSheet_Error(cueSheetName); return(SkipLoadProcess.Create(cueSheetName)); } ChipstarLog.Log_Download_Sound(fileData); ILoadProcess acbJob = SkipLoadProcess.Create(cueSheetName); var(acbUrl, awbUrl) = database.GetServerLocation(fileData); if (!HasAcb(fileData)) { acbJob = Download(acbUrl, fileData.Acb); } else { ChipstarLog.Log($"Cached :: {fileData.Acb.Identifier}"); } if (!fileData.HasAwb()) { // Awbファイルがないならココまで return(acbJob); } ILoadProcess awbJob = SkipLoadProcess.Create(cueSheetName); if (!HasAwb(fileData)) { awbJob = Download(awbUrl, fileData.Awb); } else { ChipstarLog.Log($"Cached :: {fileData.Awb.Identifier}"); } return(acbJob.ToJoin(awbJob)); }
private void Next() { // 処理待ち or 完了? if (m_preProcessFuncQueue.Count <= 0) { // 事前処理がすべて完了している m_state = State.MainProcess; return; } var max = m_preProcessFuncQueue.Count; for (int i = 0; i < max; i++) { var func = m_preProcessFuncQueue.Dequeue(); var p = func?.Invoke(m_path); m_waitPreProcess = p; m_processCache.Add(p); if (!p.IsCompleted) { break; } } }
/// <summary> /// /// </summary> public static CoroutineLoadProcess ToYieldInstruction(this ILoadProcess self) { return(new CoroutineLoadProcess(self)); }
public void Dispose() { m_self = null; }
//======================================== // 関数 //======================================== /// <summary> /// コンストラクタ /// </summary> public CoroutineLoadProcess(ILoadProcess result) { m_self = result; }
public IPreloadOperation Preload(ILoadProcess process) { return(Register(new PreloadOperation(process))); }
/// <summary> /// 事前ロード用処理 /// </summary> /// <param name="process"></param> /// <returns></returns> public IPreloadOperation Preload(ILoadProcess process) { var operation = new PreloadOperation(process); return(AddCueue(operation)); }
/// <summary> /// 直列 /// </summary> public static ILoadProcess ToJoin(this ILoadProcess self, ILoadProcess next) { return(new JoinLoadProcess(self, next)); }
//================================ // 関数 //================================ public JoinLoadProcess(ILoadProcess prev, ILoadProcess onNext) { m_prev = prev; m_next = onNext; }