123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 Jiang Yin. All rights reserved.
- // Homepage: https://gameframework.cn/
- // Feedback: mailto:ellan@gameframework.cn
- //------------------------------------------------------------
- using GameFramework.DataTable;
- using GameFramework.UI;
- using System.Collections;
- using UnityEngine;
- using UnityEngine.UI;
- using UnityGameFramework.Runtime;
- namespace MetaClient
- {
- public static class UIExtension
- {
- public static IEnumerator FadeToAlpha(this CanvasGroup canvasGroup, float alpha, float duration)
- {
- float time = 0f;
- float originalAlpha = canvasGroup.alpha;
- while (time < duration)
- {
- time += Time.deltaTime;
- canvasGroup.alpha = Mathf.Lerp(originalAlpha, alpha, time / duration);
- yield return new WaitForEndOfFrame();
- }
- canvasGroup.alpha = alpha;
- }
- public static IEnumerator SmoothValue(this Slider slider, float value, float duration)
- {
- float time = 0f;
- float originalValue = slider.value;
- while (time < duration)
- {
- time += Time.deltaTime;
- slider.value = Mathf.Lerp(originalValue, value, time / duration);
- yield return new WaitForEndOfFrame();
- }
- slider.value = value;
- }
- public static bool HasUIForm(this UIComponent uiComponent, UIFormId uiFormId, string uiGroupName = null)
- {
- return uiComponent.HasUIForm((int)uiFormId, uiGroupName);
- }
- public static bool HasUIForm(this UIComponent uiComponent, int uiFormId, string uiGroupName = null)
- {
- IDataTable<DRUIForm> dtUIForm = GameEntry.DataTable.GetDataTable<DRUIForm>();
- DRUIForm drUIForm = dtUIForm.GetDataRow(uiFormId);
- if (drUIForm == null)
- {
- return false;
- }
- string assetName = AssetUtility.GetUIFormAsset(drUIForm.AssetName);
- if (string.IsNullOrEmpty(uiGroupName))
- {
- return uiComponent.HasUIForm(assetName);
- }
- IUIGroup uiGroup = uiComponent.GetUIGroup(uiGroupName);
- if (uiGroup == null)
- {
- return false;
- }
- return uiGroup.HasUIForm(assetName);
- }
- public static UGuiForm GetUIForm(this UIComponent uiComponent, UIFormId uiFormId, string uiGroupName = null)
- {
- return uiComponent.GetUIForm((int)uiFormId, uiGroupName);
- }
- public static UGuiForm GetUIForm(this UIComponent uiComponent, int uiFormId, string uiGroupName = null)
- {
- IDataTable<DRUIForm> dtUIForm = GameEntry.DataTable.GetDataTable<DRUIForm>();
- DRUIForm drUIForm = dtUIForm.GetDataRow(uiFormId);
- if (drUIForm == null)
- {
- return null;
- }
- string assetName = AssetUtility.GetUIFormAsset(drUIForm.AssetName);
- UIForm uiForm = null;
- if (string.IsNullOrEmpty(uiGroupName))
- {
- uiForm = uiComponent.GetUIForm(assetName);
- if (uiForm == null)
- {
- return null;
- }
- return (UGuiForm)uiForm.Logic;
- }
- IUIGroup uiGroup = uiComponent.GetUIGroup(uiGroupName);
- if (uiGroup == null)
- {
- return null;
- }
- uiForm = (UIForm)uiGroup.GetUIForm(assetName);
- if (uiForm == null)
- {
- return null;
- }
- return (UGuiForm)uiForm.Logic;
- }
- public static void CloseUIForm(this UIComponent uiComponent, UGuiForm uiForm)
- {
- uiComponent.CloseUIForm(uiForm.UIForm);
- }
- public static int? OpenUIForm(this UIComponent uiComponent, UIFormId uiFormId, object userData = null)
- {
- return uiComponent.OpenUIForm((int)uiFormId, userData);
- }
- public static int? OpenUIForm(this UIComponent uiComponent, int uiFormId, object userData = null)
- {
- IDataTable<DRUIForm> dtUIForm = GameEntry.DataTable.GetDataTable<DRUIForm>();
- DRUIForm drUIForm = dtUIForm.GetDataRow(uiFormId);
- if (drUIForm == null)
- {
- Log.Warning("Can not load UI form '{0}' from data table.", uiFormId.ToString());
- return null;
- }
- string assetName = AssetUtility.GetUIFormAsset(drUIForm.AssetName);
- if (!drUIForm.AllowMultiInstance)
- {
- if (uiComponent.IsLoadingUIForm(assetName))
- {
- return null;
- }
- if (uiComponent.HasUIForm(assetName))
- {
- return null;
- }
- }
- return uiComponent.OpenUIForm(assetName, drUIForm.UIGroupName, Constant.AssetPriority.UIFormAsset, drUIForm.PauseCoveredUIForm, userData);
- }
- public static void OpenDialog(this UIComponent uiComponent, DialogParams dialogParams)
- {
- if (((ProcedureBase)GameEntry.Procedure.CurrentProcedure).UseNativeDialog)
- {
- OpenNativeDialog(dialogParams);
- }
- else
- {
- uiComponent.OpenUIForm(UIFormId.DialogForm, dialogParams);
- }
- }
- private static void OpenNativeDialog(DialogParams dialogParams)
- {
- // TODO:这里应该弹出原生对话框,先简化实现为直接按确认按钮
- if (dialogParams.OnClickConfirm != null)
- {
- dialogParams.OnClickConfirm(dialogParams.UserData);
- }
- }
- }
- }
|