private IEnumerator Load(string guid, string bundleName, UIResourceDisplayMode displayMode)
        {
            loadState = UIResourceLoadState.Loading;
            AssetBundleLoadRequest bundleLoadRequest = AssetManager.LoadAssetBundle(bundleName);

            while (!bundleLoadRequest.get_isDone())
            {
                yield return(null);
            }
            if (AssetManagerError.op_Implicit(bundleLoadRequest.get_error()) != 0)
            {
                loadState           = UIResourceLoadState.Error;
                m_pendingBundleName = string.Empty;
                if (m_resourceConsumer != null)
                {
                    m_resourceConsumer.UnRegister(this);
                    m_resourceConsumer = null;
                }
                Log.Error($"Could not load bundle named '{bundleName}': {bundleLoadRequest.get_error()}", 226, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\UI\\Components\\UIResourceLoader.cs");
                m_coroutine = null;
                yield break;
            }
            AssetLoadRequest <T> assetLoadRequest = AssetManager.LoadAssetAsync <T>(guid, bundleName);

            while (!assetLoadRequest.get_isDone())
            {
                yield return(null);
            }
            if (AssetManagerError.op_Implicit(assetLoadRequest.get_error()) != 0)
            {
                AssetManager.UnloadAssetBundle(bundleName);
                loadState           = UIResourceLoadState.Error;
                m_pendingBundleName = string.Empty;
                if (m_resourceConsumer != null)
                {
                    m_resourceConsumer.UnRegister(this);
                    m_resourceConsumer = null;
                }
                Log.Error($"Could not load asset with guid {guid} from bundle named '{bundleName}': {assetLoadRequest.get_error()}", 253, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\UI\\Components\\UIResourceLoader.cs");
                m_coroutine = null;
                yield break;
            }
            T asset = assetLoadRequest.get_asset();

            yield return(Apply(asset, displayMode));

            if (m_loadedBundleName.Length != 0)
            {
                AssetManager.UnloadAssetBundle(m_loadedBundleName);
            }
            loadState           = UIResourceLoadState.Loaded;
            m_pendingBundleName = string.Empty;
            m_loadedBundleName  = bundleName;
            if (m_resourceConsumer != null)
            {
                m_resourceConsumer.UnRegister(this);
                m_resourceConsumer = null;
            }
            m_coroutine = null;
        }
        public void Clear([CanBeNull] IUIResourceConsumer resourceConsumer = null)
        {
            MonoBehaviour monoBehaviour = Main.monoBehaviour;

            if (null == monoBehaviour)
            {
                throw new Exception();
            }
            if (m_coroutine != null)
            {
                monoBehaviour.StopCoroutine(m_coroutine);
                m_coroutine = null;
            }
            if (loadState == UIResourceLoadState.Loading && m_pendingBundleName.Length != 0)
            {
                AssetManager.UnloadAssetBundle(m_pendingBundleName);
                m_pendingBundleName = string.Empty;
            }
            if (m_resourceConsumer != null)
            {
                m_resourceConsumer.UnRegister(this);
            }
            UIResourceDisplayMode displayMode = resourceConsumer?.Register(this) ?? UIResourceDisplayMode.None;

            m_resourceConsumer = resourceConsumer;
            m_coroutine        = MonoBehaviourExtensions.StartCoroutineImmediate(monoBehaviour, Clear(displayMode));
        }
 protected override IEnumerator Apply(GameObject asset, UIResourceDisplayMode displayMode)
 {
     if (null != m_asset)
     {
         Object.Destroy(m_asset);
     }
     m_asset = Object.Instantiate <GameObject>(asset, this.get_transform());
     asset.get_transform().set_localPosition(Vector3.get_zero());
     yield break;
 }
        private IEnumerator Clear(UIResourceDisplayMode displayMode)
        {
            yield return(Revert(displayMode));

            if (m_loadedBundleName.Length != 0)
            {
                AssetManager.UnloadAssetBundle(m_loadedBundleName);
                m_loadedBundleName = string.Empty;
            }
            loadState = UIResourceLoadState.None;
        }
Esempio n. 5
0
        protected unsafe override IEnumerator Apply(Sprite sprite, UIResourceDisplayMode displayMode)
        {
            if (null == m_image)
            {
                Log.Warning("No image component has been linked.", 60, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\UI\\Components\\ImageLoader.cs");
                yield break;
            }
            if (m_tween != null)
            {
                TweenExtensions.Kill(m_tween, false);
                m_tween = null;
            }
            if (displayMode == UIResourceDisplayMode.Immediate || !m_image.get_gameObject().get_activeInHierarchy())
            {
                m_alpha = 1f;
                m_image.set_color(m_color);
                m_image.set_sprite(sprite);
                m_image.set_enabled(true);
                yield break;
            }
            Sprite sprite2 = m_image.get_sprite();

            if (null != sprite2)
            {
                float num = m_fadeOutTweenDuration * m_alpha;
                if (num > 0f)
                {
                    m_tween = TweenSettingsExtensions.OnComplete <TweenerCore <float, float, FloatOptions> >(DOTween.To(new DOGetter <float>((object)this, (IntPtr)(void *) /*OpCode not supported: LdFtn*/), new DOSetter <float>((object)this, (IntPtr)(void *) /*OpCode not supported: LdFtn*/), 0f, num), new TweenCallback((object)this, (IntPtr)(void *) /*OpCode not supported: LdFtn*/));
                    while (m_tween != null && TweenExtensions.IsPlaying(m_tween))
                    {
                        yield return(null);
                    }
                }
            }
            else
            {
                Color color = m_color;
                color.a = 0f;
                m_alpha = 0f;
                m_image.set_color(color);
            }
            m_image.set_enabled(true);
            m_image.set_sprite(sprite);
            m_tween = TweenSettingsExtensions.OnComplete <TweenerCore <float, float, FloatOptions> >(DOTween.To(new DOGetter <float>((object)this, (IntPtr)(void *) /*OpCode not supported: LdFtn*/), new DOSetter <float>((object)this, (IntPtr)(void *) /*OpCode not supported: LdFtn*/), 1f, m_fadeInTweenDuration), new TweenCallback((object)this, (IntPtr)(void *) /*OpCode not supported: LdFtn*/));
            while (m_tween != null && TweenExtensions.IsPlaying(m_tween))
            {
                yield return(null);
            }
        }
        public void Setup(AssetReference assetReference, [NotNull] string bundleName, [CanBeNull] IUIResourceConsumer resourceConsumer = null)
        {
            MonoBehaviour monoBehaviour = Main.monoBehaviour;

            if (null == monoBehaviour)
            {
                throw new Exception();
            }
            if (m_coroutine != null)
            {
                monoBehaviour.StopCoroutine(m_coroutine);
                m_coroutine = null;
            }
            if (loadState == UIResourceLoadState.Loading && m_pendingBundleName.Length != 0)
            {
                AssetManager.UnloadAssetBundle(m_pendingBundleName);
                m_pendingBundleName = string.Empty;
            }
            if (m_resourceConsumer != null)
            {
                m_resourceConsumer.UnRegister(this);
            }
            UIResourceDisplayMode displayMode = resourceConsumer?.Register(this) ?? UIResourceDisplayMode.None;

            m_resourceConsumer = resourceConsumer;
            if (!assetReference.get_hasValue())
            {
                m_coroutine = MonoBehaviourExtensions.StartCoroutineImmediate(monoBehaviour, Clear(displayMode));
                return;
            }
            if (string.IsNullOrEmpty(bundleName))
            {
                throw new ArgumentException("The bundle name must be a non-null non-empty string.", "bundleName");
            }
            m_pendingBundleName = bundleName;
            m_coroutine         = MonoBehaviourExtensions.StartCoroutineImmediate(monoBehaviour, Load(assetReference.get_value(), bundleName, displayMode));
        }
 protected abstract IEnumerator Revert(UIResourceDisplayMode displayMode);
 protected abstract IEnumerator Apply([NotNull] T asset, UIResourceDisplayMode displayMode);
 protected override IEnumerator Revert(UIResourceDisplayMode displayMode)
 {
     yield break;
 }