2025-04-21 21:14:23 +08:00

187 lines
5.7 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
namespace Launcher
{
#pragma warning disable CS0649
public class LoadStyle : MonoBehaviour
{
public Button _btn_ignore;
public Button _btn_update;
public Button _btn_package;
public Text _label_ignore;
public Text _label_update;
public Text _label_package;
private Dictionary<StyleEnum, Dictionary<BtnEnum, StyleItem>> loadConfig;
private const string CONFIG_PATH = "RawBytes/UIStyle/Style.json";
public enum StyleEnum
{
Style_Default = 0, //默认
Style_QuitApp = 1, //退出应用
Style_RestartApp = 2, //重启应用
Style_Retry = 3, //重试
Style_StartUpdate_Notice = 4, //提示更新
Style_DownLoadApk = 5, //下载底包
Style_Clear = 6, //修复客户端
Style_DownZip = 7, //继续下载压缩包
}
public enum BtnEnum
{
BtnOK = 0, //确定按钮
BtnIgnore = 1, //取消按钮
BtnOther = 2, //其他按钮
}
/// <summary>
/// 单个按钮的样式
/// </summary>
private class StyleItem
{
public Alignment Align; //对其方式
public bool Show; //是否隐藏
public string Desc; //按钮描述
}
/// <summary>
/// 对齐方式
/// </summary>
private enum Alignment
{
Left = 0,
Middle = 1,
Right = 2
}
private void Awake()
{
//设置按钮的默认描述
_label_ignore.text = LoadText.Instance.Label_Btn_Ignore;
_label_update.text = LoadText.Instance.Label_Btn_Update;
_label_package.text = LoadText.Instance.Label_Btn_Package;
InitConfig();
}
private void InitConfig()
{
// string url = AssetUtility.Config.GetConfigAsset(ConfigPath);
// if (!String.IsNullOrEmpty(url))
// {
// string finalPath = SetFilePath(url);
// InitConfigDic(finalPath);
// }
}
#region
private string SetFilePath(string path)
{
#if UNITY_ANDROID
if (path.StartsWith(Application.persistentDataPath))
path = $"file://{path}";
#elif UNITY_IOS
if (path.StartsWith(Application.persistentDataPath)||path.StartsWith(Application.streamingAssetsPath))
path = $"file://{path}";
#endif
return path;
}
private void InitConfigDic(string path)
{
UnityWebRequest www = UnityWebRequest.Get(path);
UnityWebRequestAsyncOperation request = www.SendWebRequest();
while (!request.isDone)
{
}
if (!String.IsNullOrEmpty(www.downloadHandler.text))
{
loadConfig = JsonUtility.FromJson<Dictionary<StyleEnum, Dictionary<BtnEnum, StyleItem>>>(www.downloadHandler.text);
// loadConfig = JsonConvert.DeserializeObject<Dictionary<StyleEnum, Dictionary<BtnEnum, StyleItem>>>(www.downloadHandler.text);
}
www.Dispose();
}
#endregion
/// <summary>
/// 设置样式
/// </summary>
/// <param name="type">样式对应的id</param>
public void SetStyle(StyleEnum type)
{
if (type == StyleEnum.Style_Default)
return;
if (loadConfig == null)
{
Debug.LogError("LoadConfig is null");
return;
}
var style = loadConfig[type];
if (style == null)
{
Debug.LogError($"LoadConfig, Can not find type:{type},please check it");
return;
}
SetButtonStyle(style);
}
/// <summary>
/// 设置按钮的描述,是否隐藏
/// </summary>
private void SetButtonStyle(Dictionary<BtnEnum, StyleItem> list)
{
foreach (var item in list)
{
switch (item.Key)
{
case BtnEnum.BtnOK:
_label_update.text = item.Value.Desc;
_btn_update.gameObject.SetActive(item.Value.Show);
SetButtonPos(item.Value.Align, _btn_update.transform);
break;
case BtnEnum.BtnIgnore:
_label_ignore.text = item.Value.Desc;
_btn_ignore.gameObject.SetActive(item.Value.Show);
SetButtonPos(item.Value.Align, _btn_ignore.transform);
break;
case BtnEnum.BtnOther:
_label_package.text = item.Value.Desc;
_btn_package.gameObject.SetActive(item.Value.Show);
SetButtonPos(item.Value.Align, _btn_package.transform);
break;
}
}
}
/// <summary>
/// 设置按钮位置
/// </summary>
private void SetButtonPos(Alignment align, Transform item)
{
switch (align)
{
case Alignment.Left:
item.SetSiblingIndex(0);
break;
case Alignment.Middle:
item.SetSiblingIndex(1);
break;
case Alignment.Right:
item.SetSiblingIndex(2);
break;
}
}
}
}