Esempio n. 1
0
        public bool IsReady(GameItemInfo gameItem)
        {
            Initialize();
            ResourceGameItem item = gameItem as ResourceGameItem;

            if (item != null)
            {
                return(true);
            }
            AssetBundleGameItem assetBundleGameItem = gameItem as AssetBundleGameItem;

            if (assetBundleGameItem != null)
            {
                if (_assetBundles.ContainsKey(assetBundleGameItem.AssetBundle))
                {
                    return(_assetBundles[assetBundleGameItem.AssetBundle].LoadAsset(assetBundleGameItem.ItemName));
                }
                if (!IsAssetBundleDownloaded(assetBundleGameItem.AssetBundle))
                {
                    return(false);
                }
                return(true);
            }
            return(true);
        }
Esempio n. 2
0
        public Object Resolve(GameItemInfo gameItem)
        {
            Initialize();
            ResourceGameItem item = gameItem as ResourceGameItem;

            if (item != null)
            {
                return(Resources.Load(item.Address));
            }
            AssetBundleGameItem assetBundleGameItem = gameItem as AssetBundleGameItem;

            if (assetBundleGameItem != null)
            {
                if (_assetBundles.ContainsKey(assetBundleGameItem.AssetBundle))
                {
                    return(_assetBundles[assetBundleGameItem.AssetBundle].LoadAsset(assetBundleGameItem.ItemName));
                }
                if (!IsAssetBundleDownloaded(assetBundleGameItem.AssetBundle))
                {
                    throw new Exception(string.Format("Asset bundle {0} is not downloaded", assetBundleGameItem.AssetBundle));
                }
                Uri bundleServerAddress             = GetBundleServerAddress(assetBundleGameItem.AssetBundle);
                UnityEngine.AssetBundle assetBundle =
                    UnityEngine.AssetBundle.LoadFromFile(
                        InfoResolver.Resolve <FortInfo>()
                        .ServerConnectionProvider.UserConnection.LoadFromCache(bundleServerAddress));
                _assetBundles[assetBundleGameItem.AssetBundle] = assetBundle;
                return(assetBundle.LoadAsset(assetBundleGameItem.ItemName));
            }
            return((Object)gameItem.GetType().GetProperty("GameItem").GetValue(gameItem, new object[0]));
        }