コード例 #1
0
        public void LoadWeb(IconDownloadTask task)
        {
            string     cacheKey        = task.CacheKey;
            CacheImage cacheImageByKey = this.GetCacheImageByKey(cacheKey);

            if (cacheImageByKey != null)
            {
                cacheImageByKey.AddRef(1);
                task.Result(true, cacheImageByKey.Tex);
            }
            else
            {
                WebCImageTask webCacheTaskByKey = this.GetWebCacheTaskByKey(cacheKey);
                if (webCacheTaskByKey != null)
                {
                    webCacheTaskByKey.JoinHandler(task);
                }
                else
                {
                    WebCImageTask cacheTask = new WebCImageTask(task, cacheKey);
                    this.webTasks.Add(cacheTask);
                    cacheTask.Complete += delegate(CacheImage image)
                    {
                        if (image != null)
                        {
                            this.cached.Add(image);
                        }
                        this.webTasks.Remove(cacheTask);
                    };
                    cacheTask.Run(this.localRunner);
                }
            }
        }
コード例 #2
0
        public void LoadLocal(LocalIconTask task)
        {
            string     path            = task.Path;
            CacheImage cacheImageByKey = this.GetCacheImageByKey(path);

            if (cacheImageByKey != null)
            {
                cacheImageByKey.AddRef(1);
                task.Result(true, cacheImageByKey.Tex);
            }
            else
            {
                LocalCImageTask localCacheTaskByKey = this.GetLocalCacheTaskByKey(path);
                if (localCacheTaskByKey != null)
                {
                    localCacheTaskByKey.JoinHandler(task);
                }
                else
                {
                    LocalCImageTask cacheTask = new LocalCImageTask(task, path);
                    this.localTasks.Add(cacheTask);
                    cacheTask.Complete += delegate(CacheImage image)
                    {
                        if (image != null)
                        {
                            this.cached.Add(image);
                        }
                        this.localTasks.Remove(cacheTask);
                    };
                    cacheTask.Run(this.localRunner);
                }
            }
        }
コード例 #3
0
        private void ReportResults()
        {
            bool      success = base.Tex != null;
            Texture2D tex     = base.Tex;
            int       num     = 0;

            if (!this.initial.IsCanceled)
            {
                num++;
                this.initial.Result(success, tex);
            }
            if (this.joined != null)
            {
                for (int i = 0; i < this.joined.Count; i++)
                {
                    if (!this.joined[i].IsCanceled)
                    {
                        num++;
                        this.joined[i].Result(success, tex);
                    }
                }
            }
            CacheImage cacheImage = null;

            if (base.Tex != null)
            {
                cacheImage     = new CacheImage(this.initial.Path);
                cacheImage.Tex = base.Tex;
                cacheImage.AddRef(num);
            }
            base.FireCompleted(cacheImage);
        }
コード例 #4
0
 protected void FireCompleted(CacheImage ci)
 {
     if (this.Completed)
     {
         return;
     }
     this.Completed = true;
     if (this.Complete != null)
     {
         this.Complete(ci);
     }
 }
コード例 #5
0
 protected int CacheSort(CacheImage x, CacheImage y)
 {
     if (x.LastUse > y.LastUse)
     {
         return(-1);
     }
     if (x.LastUse < y.LastUse)
     {
         return(1);
     }
     return(0);
 }
コード例 #6
0
        public void Unload(string cacheKey, Texture2D tex)
        {
            CacheImage cacheImage = this.cached.Find((CacheImage img) => img.CacheKey == cacheKey);

            if (cacheImage != null)
            {
                cacheImage.RemoveRef();
                if (cacheImage.Tex != tex)
                {
                    FMLogger.vCore("****Wtf RC tex not match");
                    if (tex != null)
                    {
                        this.localRunner.DestroyTex(tex, false);
                    }
                }
            }
            else if (tex != null)
            {
                FMLogger.vCore("***Wtf RC tex not found");
                this.localRunner.DestroyTex(tex, false);
            }
        }