示例#1
0
        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));
        }
示例#2
0
        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;
                }
            }
        }
示例#3
0
 /// <summary>
 ///
 /// </summary>
 public static CoroutineLoadProcess ToYieldInstruction(this ILoadProcess self)
 {
     return(new CoroutineLoadProcess(self));
 }
示例#4
0
 public void Dispose()
 {
     m_self = null;
 }
示例#5
0
 //========================================
 //	関数
 //========================================
 /// <summary>
 /// コンストラクタ
 /// </summary>
 public CoroutineLoadProcess(ILoadProcess result)
 {
     m_self = result;
 }
示例#6
0
 public IPreloadOperation Preload(ILoadProcess process)
 {
     return(Register(new PreloadOperation(process)));
 }
示例#7
0
        /// <summary>
        /// 事前ロード用処理
        /// </summary>
        /// <param name="process"></param>
        /// <returns></returns>
        public IPreloadOperation Preload(ILoadProcess process)
        {
            var operation = new PreloadOperation(process);

            return(AddCueue(operation));
        }
示例#8
0
 /// <summary>
 /// 直列
 /// </summary>
 public static ILoadProcess ToJoin(this ILoadProcess self, ILoadProcess next)
 {
     return(new JoinLoadProcess(self, next));
 }
示例#9
0
        //================================
        //  関数
        //================================

        public JoinLoadProcess(ILoadProcess prev, ILoadProcess onNext)
        {
            m_prev = prev;
            m_next = onNext;
        }