Ejemplo n.º 1
0
        /// <summary>
        /// 请求资源
        /// </summary>
        /// <param name="caller"></param>
        /// <param name="resName"></param>
        /// <param name="callback"></param>
        public void GetResource(System.Object caller, string resName, ResDataLoadedHandler callback, System.Object userData = null)
        {
            string             key   = resName.ToLower();
            ResourceDataObject resDO = null;

            if (!_dataDict.TryGetValue(key, out resDO))
            {
                throw new Exception(string.Format("名为{0}的资源不存在", resName));
                //return;
            }
            ResourceData data = null;

            if (!_resDict.TryGetValue(key, out data))
            {
                string url = GetRootPath(resDO.Type) + resDO.Path;
                data = new ResourceData(caller, key, resDO.Type, url, callback, userData);
                _waitToLoadList.Add(data);
                _resDict[key] = data;
            }
            else
            {
                data.AddCounter(caller);
                if (data.IsReady)
                {
                    if (callback != null)
                    {
                        callback(key, data.Url, data.Data, userData);
                    }
                }
                else
                {
                    data.AddCallback(callback, userData);
                }
            }
        }
Ejemplo n.º 2
0
 internal void AddCallback(ResDataLoadedHandler callback, System.Object userData = null)
 {
     _callbacks.Add(new CallbackListener()
     {
         Callback = callback, UserData = userData
     });
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 增加该资源的使用者
        /// </summary>
        /// <param name="user"></param>
        /// <param name="callback"></param>
        /// <param name="userData"></param>
        internal void AddUser(System.Object user, ResDataLoadedHandler callback, System.Object userData = null)
        {
            CallbackListener listener = new CallbackListener()
            {
                Callback = callback, UserData = userData
            };
            List <CallbackListener> existList = null;

            if (!_userDict.TryGetValue(user, out existList))
            {
                existList = new List <CallbackListener>();
                existList.Add(listener);

                _userDict.Add(user, existList);
                _userList.Add(user);
            }
            else
            {
                if (!existList.Contains(listener))
                {
                    existList.Add(listener);
                }
                else
                {
                    return;//
                }
            }
        }
Ejemplo n.º 4
0
        public ResourceData(System.Object user, string key, ResourceType type, string url, ResDataLoadedHandler callback, System.Object userData = null)
        {
            this.Name    = key;
            this.ResType = type;
            this.Url     = url;

            CallbackListener listener = new CallbackListener()
            {
                Callback = callback, UserData = userData
            };

            _callbacks.Add(listener);
            //_userDict.Add(user, new List<CallbackListener>() { listener });
            AddCounter(user);
        }