350 lines
13 KiB
C#
350 lines
13 KiB
C#
/*-------------------------------------------------------------------------------------
|
||
--- 创建人:
|
||
--- 描 述:
|
||
--- 创建时间: 2024年5月20日
|
||
-------------------------------------------------------------------------------------*/
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
using TMPro;
|
||
using System.Text;
|
||
|
||
namespace Game.HotFix
|
||
{
|
||
public enum PCHoverNormalType
|
||
{
|
||
/// <summary>
|
||
/// 无
|
||
/// </summary>
|
||
None,
|
||
/// <summary>
|
||
/// 属性信息
|
||
/// </summary>
|
||
AttInfo,
|
||
}
|
||
|
||
/// <summary>
|
||
/// xx 功能界面
|
||
/// </summary>
|
||
public class TipsNormalPCHoverUI : UIBase
|
||
{
|
||
//UIAutoBuild_CtrlDefine
|
||
public TextMeshProUGUI tmpContent;
|
||
//UIAutoBuild_CtrlDefine
|
||
public RectTransform rectTrans;
|
||
|
||
#region 通用信号
|
||
static long LastFlag_skillClientid = -1;
|
||
public static void SetHoldData(bool Enter, string pStr)
|
||
{
|
||
if (Enter)
|
||
{
|
||
TipsNormalPCHoverUI ui;
|
||
if (HotfixEntry.UI.IsOpen<TipsNormalPCHoverUI>())
|
||
ui = HotfixEntry.UI.GetUI<TipsNormalPCHoverUI>();
|
||
else
|
||
ui = HotfixEntry.UI.OpenUI<TipsNormalPCHoverUI>(eUINodeType.NodeTip) as TipsNormalPCHoverUI;
|
||
|
||
ui.StartShow(pStr);
|
||
ui.transform.SetAsLastSibling();
|
||
}
|
||
else
|
||
{
|
||
if (HotfixEntry.UI.IsOpen<TipsNormalPCHoverUI>())
|
||
HotfixEntry.UI.Hide<TipsNormalPCHoverUI>();
|
||
}
|
||
}
|
||
public static void SetHoldData(bool Enter, int pID, PCHoverNormalType pType, string pValue = "")
|
||
{
|
||
if (pID <= 0)
|
||
return;
|
||
|
||
if (Enter)
|
||
{
|
||
TipsNormalPCHoverUI ui;
|
||
if (HotfixEntry.UI.IsOpen<TipsNormalPCHoverUI>())
|
||
ui = HotfixEntry.UI.GetUI<TipsNormalPCHoverUI>();
|
||
else
|
||
ui = HotfixEntry.UI.OpenUI<TipsNormalPCHoverUI>(eUINodeType.NodeTip) as TipsNormalPCHoverUI;
|
||
|
||
string tStr = string.Empty;
|
||
|
||
switch (pType)
|
||
{
|
||
case PCHoverNormalType.None:
|
||
break;
|
||
case PCHoverNormalType.AttInfo:
|
||
//AttEnumData tData = HotfixEntry.Luban.GetAttEnumData(pID);
|
||
//if(tData != null)
|
||
//{
|
||
// tStr = tData.Describe;
|
||
//}
|
||
|
||
tStr = GetAttStr(pID, pValue);
|
||
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
ui.StartShow(tStr);
|
||
ui.transform.SetAsLastSibling();
|
||
}
|
||
else
|
||
{
|
||
if (HotfixEntry.UI.IsOpen<TipsNormalPCHoverUI>())
|
||
HotfixEntry.UI.Hide<TipsNormalPCHoverUI>();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
public override void Awake()
|
||
{
|
||
//UIAutoBuild_CtrlBind
|
||
base.Awake();
|
||
Transform tf = transform;
|
||
tmpContent = tf.Find("tmpContent").GetComponent<TextMeshProUGUI>();
|
||
//UIAutoBuild_CtrlBind
|
||
rectTrans = tf.GetComponent<RectTransform>();
|
||
}
|
||
|
||
void OnEnable()
|
||
{
|
||
//UIAutoBuild_EventReg
|
||
//UIAutoBuild_EventReg
|
||
}
|
||
|
||
void OnDisable()
|
||
{
|
||
//UIAutoBuild_EventUnReg
|
||
//UIAutoBuild_EventUnReg
|
||
}
|
||
|
||
void Start()
|
||
{
|
||
}
|
||
|
||
// 每次显示都执行, 可定义参数
|
||
public override void Show(params object[] _params)
|
||
{
|
||
base.Show(_params);
|
||
|
||
}
|
||
|
||
private void Update()
|
||
{
|
||
SetPos();
|
||
}
|
||
|
||
void StartShow(string pStr)
|
||
{
|
||
SetData(pStr);
|
||
|
||
LayoutRebuilder.ForceRebuildLayoutImmediate(rectTrans);
|
||
}
|
||
|
||
Vector2 sizeDelta;
|
||
|
||
void SetPos()
|
||
{
|
||
Vector2 mousepos = Input.mousePosition;
|
||
|
||
Vector3 newVec;
|
||
RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTrans, mousepos, UIMgr.Instance.m_camera, out newVec);
|
||
rectTrans.position = newVec;
|
||
|
||
Vector2 anPos = rectTrans.anchoredPosition;
|
||
if (anPos.y - rectTrans.sizeDelta.y < 0)
|
||
{
|
||
anPos.y = rectTrans.sizeDelta.y;
|
||
}
|
||
//if (anPos.x + rectTrans.sizeDelta.x > Screen.width)
|
||
if (anPos.x + rectTrans.sizeDelta.x > Common.GetCurrScreenSize().x)
|
||
{
|
||
//pos.x = pos.x - (rectTrans.sizeDelta.x * 1.3f);
|
||
anPos.x = anPos.x - rectTrans.sizeDelta.x;
|
||
}
|
||
rectTrans.anchoredPosition = anPos;
|
||
}
|
||
|
||
public void SetData(string pStr)
|
||
{
|
||
tmpContent.text = pStr;
|
||
|
||
SetPos();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取属性字段详细描述
|
||
/// </summary>
|
||
/// <param name="pID"></param>
|
||
/// <param name="pValue"></param>
|
||
/// <returns></returns>
|
||
private static string GetAttStr(int pID, string pValue)
|
||
{
|
||
StringBuilder tStr = new StringBuilder();
|
||
|
||
//AttEnumData tData = HotfixEntry.Luban.GetAttEnumData(pID);
|
||
//if (tData != null)
|
||
//{
|
||
// switch (pID)
|
||
// {
|
||
// //攻击:
|
||
// case 115://物理攻击
|
||
// case 130://法术攻击
|
||
// case 118://火法攻击
|
||
// case 121://冰法攻击
|
||
// case 124://闪法攻击
|
||
// case 127://毒法攻击
|
||
// tStr.Append($"{tData.Describe}{pValue}");
|
||
// break;
|
||
|
||
// //POWER(属性数值,附加属性幂系数)*附加属性乘系数+附加属性加系数
|
||
// case 137://火焰攻击
|
||
// case 138://冰冻攻击
|
||
// case 139://闪电攻击
|
||
// case 140://毒素攻击
|
||
// if(!string.IsNullOrEmpty(pValue))
|
||
// {
|
||
// string[] tS1 = pValue.Split('-');
|
||
// if(tS1.Length > 0)
|
||
// {
|
||
// int num1 = int.Parse(tS1[0]);
|
||
// //int num2 = int.Parse(tS1[1]);
|
||
|
||
// int pMi = 0;
|
||
// int pCheng = 0;
|
||
// int pJia = 0;
|
||
// if (pID == 137)//火
|
||
// {
|
||
// pMi = ConstMgr.GetVal("huo_Power_coefficient");
|
||
// pCheng = ConstMgr.GetVal("huo_Multiplication_coefficient");
|
||
// pJia = ConstMgr.GetVal("huo_Additive_coefficient");
|
||
// }
|
||
// else if (pID == 139)//雷
|
||
// {
|
||
// pMi = ConstMgr.GetVal("lei_Power_coefficient");
|
||
// pCheng = ConstMgr.GetVal("lei_Multiplication_coefficient");
|
||
// pJia = ConstMgr.GetVal("lei_Additive_coefficient");
|
||
// }
|
||
// else if (pID == 138)//冰
|
||
// {
|
||
// pMi = ConstMgr.GetVal("bing_Power_coefficient");
|
||
// pCheng = ConstMgr.GetVal("bing_Multiplication_coefficient");
|
||
// pJia = ConstMgr.GetVal("bing_Additive_coefficient");
|
||
// }
|
||
// else if (pID == 140)//毒
|
||
// {
|
||
// pMi = ConstMgr.GetVal("du_Power_coefficient");
|
||
// pCheng = ConstMgr.GetVal("du_Multiplication_coefficient");
|
||
// pJia = ConstMgr.GetVal("du_Additive_coefficient");
|
||
// }
|
||
|
||
// float t1 = GetValue_Att(num1, pMi, pCheng, pJia) * 100;
|
||
// //float t2 = GetValue_Att(num2, pMi, pCheng, pJia);
|
||
|
||
// tStr.Append(string.Format($"{tData.Describe}", t1.ToString("0.00")));
|
||
// }
|
||
// else
|
||
// tStr.Append(tData.Describe);//数据异常
|
||
// }
|
||
// break;
|
||
|
||
// //防御:防御免伤百分比 =防御值/(防御值*倍系数2/10000 + power(防御等级系数,防御次方系数/10000)*倍系数/10000)
|
||
// case 131://物理防御
|
||
// case 133://火法防御
|
||
// case 134://冰法防御
|
||
// case 135://电法防御
|
||
// case 136://毒法防御
|
||
// if (!string.IsNullOrEmpty(pValue))
|
||
// {
|
||
// string[] tS1 = pValue.Split('-');
|
||
// if (tS1.Length == 2)
|
||
// {
|
||
// int num1 = int.Parse(tS1[0]);
|
||
// int num2 = int.Parse(tS1[1]);
|
||
|
||
// int pBei2 = 0;
|
||
// int pLv = 0;
|
||
// int pCiFang = 0;
|
||
// int pBei1 = 0;
|
||
// pBei2 = ConstMgr.GetVal("Defense_Multiple_two");
|
||
// pLv = HotfixEntry.MainPlayer.self.lv;
|
||
// pCiFang = ConstMgr.GetVal("Defense_Power_coefficient");
|
||
// pBei1 = ConstMgr.GetVal("Defense_Multiple_one");
|
||
|
||
// float pMax = ConstMgr.GetVal("Level_Total_Value") * 0.01f;
|
||
|
||
// float t1 = GetValue_Def(num1, pBei2, pLv, pCiFang, pBei1) * 100;
|
||
// float t2 = GetValue_Def(num2, pBei2, pLv, pCiFang, pBei1) * 100;
|
||
|
||
// if (t1 > pMax)
|
||
// t1 = pMax;
|
||
|
||
// if (t2 > pMax)
|
||
// t2 = pMax;
|
||
|
||
// //tStr.Append(string.Format($"{tData.Describe}", (t1 * 100).ToString("0.00")));
|
||
// tStr.Append(string.Format($"{tData.Describe}", $"{t1.ToString("0.00")}%-{t2.ToString("0.00")}%", $"{pMax}%"));
|
||
// }
|
||
// else
|
||
// tStr.Append(tData.Describe);//数据异常
|
||
// }
|
||
// break;
|
||
|
||
// //命中、闪避:玩家当前命中值/(power(玩家当前命中值,次方系数/10000)*倍系数+命中系数)
|
||
// case 141://命中
|
||
// case 142://闪避
|
||
// if (!string.IsNullOrEmpty(pValue))
|
||
// {
|
||
// string[] tS1 = pValue.Split('-');
|
||
// if (tS1.Length > 0)
|
||
// {
|
||
// int num1 = int.Parse(tS1[0]);
|
||
|
||
// int pCiFang = 0;
|
||
// int pBei = 0;
|
||
// int pXi = 0;
|
||
// pCiFang = ConstMgr.GetVal("Hit_Power");
|
||
// pBei = ConstMgr.GetVal("Dodge_Multiple");
|
||
// pXi = pID == 141 ? ConstMgr.GetVal("Hit_Coefficient") : ConstMgr.GetVal("Dodge_Coefficient");
|
||
|
||
// float t1 = GetValue_HitAndDot(num1, pCiFang, pBei, pXi) * 100;
|
||
|
||
// //tStr.Append(string.Format($"{tData.Describe}", (t1 * 100).ToString("0.00")));
|
||
// tStr.Append($"{tData.Describe}{t1.ToString("0.00")}%");
|
||
// }
|
||
// else
|
||
// tStr.Append(tData.Describe);//数据异常
|
||
// }
|
||
// break;
|
||
|
||
// //其他
|
||
// default:
|
||
// tStr.Append($"{tData.Describe}{pValue}");
|
||
// break;
|
||
// }
|
||
//}
|
||
|
||
return tStr.ToString();
|
||
}
|
||
|
||
|
||
private static float GetValue_Att(int pValue1, int pMi, int pCheng, int pJia)
|
||
{
|
||
if (pValue1 == 0) return 0;
|
||
return Mathf.Pow(pValue1, pMi * 0.0001f) * (pCheng * 0.0001f) + (pJia * 0.0001f);
|
||
}
|
||
|
||
private static float GetValue_Def(int pValue1, int pBei2, int pLv, int pCiFang, int pBei1)
|
||
{
|
||
return pValue1 / (pValue1 * pBei2 * 0.0001f + Mathf.Pow(pLv, pCiFang * 0.0001f) * pBei1 * 0.0001f);
|
||
}
|
||
|
||
private static float GetValue_HitAndDot(int pValue1, int pCiFang, int pBei, int pXi)
|
||
{
|
||
return pValue1 / (Mathf.Pow(pValue1, pCiFang * 0.0001f) * pBei + pXi);
|
||
}
|
||
}
|
||
}
|