CTT/Unity/Assets/HotfixView/Helper/TabHelper.cs

1056 lines
47 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using ET;
using FairyGUI;
using Cal.DataTable;
using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using Cal;
namespace ET
{
public class TabHelper
{
private static FUI_TabUI _ui;
private static FUI_TabUI _comprasionUi;
public static FUI_TabUI FUI_TabUI
{
get
{
if (_ui == null)
{
_ui = FUI_TabUI.CreateInstance(FUIComponent.Instance);
_ui.Name = _ui.self.id.ToString();
_ui.self.sortingOrder = 9998;
FUIComponent.Instance.Add(_ui, true);
}
return _ui;
}
}
private static void AddHideEvent()
{
GRoot.inst.GetTopWindow().onRemovedFromStage.Add(TabHelper.HideUI);
}
public static FUI_TabUI FUI_TabComprasionUI
{
get
{
if (_comprasionUi == null)
{
_comprasionUi = FUI_TabUI.CreateInstance(FUIComponent.Instance);
_comprasionUi.Name = _comprasionUi.self.id.ToString();
_comprasionUi.self.sortingOrder = 9998;
FUIComponent.Instance.Add(_comprasionUi, true);
}
return _comprasionUi;
}
}
private static bool isShowing;
//private static bool isLastShowing;
private static FUI_TabUI OpenUI()
{
if (!isShowing)
{
isShowing = true;
FUI_TabUI.Visible = true;
FUI_TabUI.m_Show.Play();
}
#if !UNITY_STANDALONE
HideComprasionUI();
AddHideEvent();
#endif
return FUI_TabUI;
}
private static FUI_TabUI OpenComprasionUI()
{
FUI_TabComprasionUI.Visible = true;
FUI_TabComprasionUI.m_Show.Play();
return FUI_TabComprasionUI;
}
public static void HideUI()
{
isShowing = false;
if (FUI_TabUI.Visible)
{
FUI_TabUI.Visible = false;
FUI_TabUI.m_Hide.Play();
}
if (FUI_TabComprasionUI.Visible)
{
FUI_TabComprasionUI.Visible = false;
FUI_TabComprasionUI.m_Hide.Play();
}
}
public static void HideComprasionUI()
{
if (FUI_TabComprasionUI.Visible)
{
FUI_TabComprasionUI.Visible = false;
FUI_TabComprasionUI.m_Hide.Play();
}
}
public struct QualityColor
{
public const string Common = "#FFFFFF";
public const string UnCommon = "#00CD14";
public const string Rare = "#0027FF";
public const string Epic = "#FF00B8";
public const string Legendary = "#FF6600";
public const string Ulti = "#FF0000";
}
public const string YellowStar = "[img]ui://kqsmrpxlp2c66p[/img]";
public const string SliverStar = "[img]ui://kqsmrpxlp2c66q[/img]";
public const string Gold = "[img]ui://kqsmrpxleh2aa[/img]";
public const string Sliver = "[img]ui://kqsmrpxleh2ab[/img]";
public const string Coin = "[img]ui://kqsmrpxleh2am[/img]";
private const int TitleSize = 18;
private static StringBuilder sb = new StringBuilder();
public static void SetTab(GObject btn, Action action)
{
//!显示页签
#if UNITY_STANDALONE
btn.onRollOver.Set(() =>
#else
btn.onClick.Add(() =>
#endif
{
action?.Invoke();
});
//!隐藏页签
#if UNITY_STANDALONE
btn.onRollOut.Set(TabHelper.HideUI);
#endif
}
private readonly static List<string> itemDescList = new List<string>();
public static void OpenUI(ClientItemData data, bool isComprasion = true)
{
ClientItemData wornEquipData = null;
sb.Length = 0;
itemDescList.Clear();
switch (data.ItemType)
{
default:
return;
case ItemType.EquipItem:
{
EquipBase equipBase = DataTableHelper.Get<EquipBase>(data.ItemId);
int index = equipBase.Type;
if (isComprasion)
{
isComprasion = false;
if (ClientItemDataComponent.Instance.WornEquipDic.TryGetValue(index, out wornEquipData))
{
isComprasion = wornEquipData.ItemType == ItemType.EquipItem;
}
}
Quality quality;
if (data.Equip.quality == 0)
quality = (Quality)equipBase.Quality;
else
quality = data.Equip.quality;
string equipLevel = null;
if (data.Equip.level > 0)
{
equipLevel = "+" + data.Equip.level;
}
sb.AppendFormat($"[color={GetQualityColor(quality)}][size={TitleSize}][b]{equipBase.Name} {equipLevel}[/b][/size][/color]\n");
int star;
if (data.Equip.star == 0)
star = equipBase.Star;
else
star = data.Equip.star;
for (int i = 0; i < star; i++)
{
sb.AppendFormat(YellowStar);
}
sb.AppendFormat("\n");
sb.AppendFormat($"装备 {(EquipType)equipBase.Type}\n");
2021-04-11 19:50:39 +08:00
(long gold, int sliver, int coin) = GetCoinFormat(equipBase.Price);
2021-04-08 20:09:59 +08:00
sb.Append($"单价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}\n");
string isLock = data.IsLock ? "已绑定" : "未绑定";
sb.AppendFormat($"[color=#ff99cc]{isLock}[/color]\n");
sb.AppendFormat($"需要等级:{equipBase.UseLevel}\n");
sb.AppendFormat($"需要职业: {GetStrJob(equipBase.JobId, equipBase.Transmigration)}\n");
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipSpecialAtrribute(data.Equip, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipBaseAtrribute(data.Equip, equipBase, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipAdditionalAtrribute(data.Equip, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
2021-04-11 19:50:39 +08:00
foreach (int item in data.Equip.gemList)
2021-04-08 20:09:59 +08:00
{
if (item == 0)
{
sb.AppendFormat($"{SliverStar}\n");
continue;
}
MaterialBase materialBase = DataTableHelper.Get<MaterialBase>(item);
sb.AppendFormat($"{YellowStar}[color=#e9d099]{GteGemValue((AttributeType)materialBase.GemKey, materialBase.GemValue)}[/color]\n");
}
if (!data.getSource.IsNullOrEmpty())
{
sb.AppendLine($"来源:[color=#ffff00][i]{data.getSource}[/i][/color]");
}
SuitConfig suitConfig = SuitConfigCategory.Instance.GetSuitConfigByEquipId(data.ItemId);
if (suitConfig != null)
{
itemDescList.Clear();
GetEquipSuitAtrribute(suitConfig.SuitArr, itemDescList);
sb.AppendFormat($"套装属性:\n");
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
}
sb.AppendFormat($"[color=#ffff99]{equipBase.Description}[/color]");
}
break;
case ItemType.GoodsItem:
{
GoodsBase goodsBase = DataTableHelper.Get<GoodsBase>(data.ItemId);
Quality quality = (Quality)goodsBase.Quality;
sb.AppendFormat($"[color={GetQualityColor(quality)}][size={TitleSize}][b]{goodsBase.Name}[/b][/size][/color]\n");
sb.AppendFormat($"道具 消耗品\n");
2021-04-11 19:50:39 +08:00
(long gold, int sliver, int coin) = GetCoinFormat(goodsBase.Price);
2021-04-08 20:09:59 +08:00
sb.Append($"单价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}\n");
string isLock = data.IsLock ? "已绑定" : "未绑定";
sb.AppendFormat($"[color=#ff99cc]{isLock}[/color]\n");
sb.AppendFormat($"需要等级:{goodsBase.UsedLevel}\n");
sb.AppendFormat($"[color=#ffff99]{goodsBase.Description}[/color]");
}
break;
case ItemType.MaterialsItem:
{
MaterialBase materialBase = DataTableHelper.Get<MaterialBase>(data.ItemId);
Quality quality = (Quality)materialBase.Quality;
sb.AppendFormat($"[color={GetQualityColor(quality)}][size={TitleSize}][b]{materialBase.Name}[/b][/size][/color]\n");
sb.AppendFormat($"材料 {((MaterialsType)materialBase.MaterialType == MaterialsType.普通材料 ? MaterialsType.普通材料.ToString() : ((GemType)materialBase.GemType).ToString())}\n");
2021-04-11 19:50:39 +08:00
(long gold, int sliver, int coin) = GetCoinFormat(materialBase.Price);
2021-04-08 20:09:59 +08:00
sb.Append($"单价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}\n");
string isLock = data.IsLock ? "已绑定" : "未绑定";
sb.AppendFormat($"[color=#ff99cc]{isLock}[/color]\n");
if (materialBase.MaterialType == (int)MaterialsType.)
{
sb.AppendLine($"[color=#99bf88]{GteGemValue((AttributeType)materialBase.GemKey, materialBase.GemValue)}[/color]");
}
sb.Append($"[color=#ffff99]{materialBase.Description}[/color]");
}
break;
}
2021-04-11 19:50:39 +08:00
FUI_TabUI ui = OpenUI();
2021-04-08 20:09:59 +08:00
ui.m_title.text = sb.ToString();
Vector2 pos = GRoot.inst.GetPoupPosition(ui.self, null, null);
Vector2 offset = new Vector2(15, 15);
pos += offset;
ui.self.position = pos;
if (isComprasion)
{
if (wornEquipData == null) return;
2021-04-11 19:50:39 +08:00
FUI_TabUI comUI = OpenComprasionUI();
Vector2 newPos = GetComprasionPos(comUI.self, pos);
2021-04-08 20:09:59 +08:00
comUI.self.position = newPos;
sb.Length = 0;
//!产生字符
EquipBase equipBase = DataTableHelper.Get<EquipBase>(wornEquipData.ItemId);
Quality quality = (Quality)equipBase.Quality;
string equipLevel = null;
if (wornEquipData.Equip.level > 0)
{
equipLevel = "+" + wornEquipData.Equip.level;
}
sb.AppendFormat($"[color={GetQualityColor(quality)}][size={TitleSize}][b]{equipBase.Name} {equipLevel}[/b][/size][/color]\n");
for (int i = 0; i < equipBase.Star; i++)
{
sb.AppendFormat(YellowStar);
}
sb.AppendFormat("\n");
sb.AppendFormat($"装备[color=#99cc33](已穿戴)[/color] {(EquipType)equipBase.Type}\n");
2021-04-11 19:50:39 +08:00
(long gold, int sliver, int coin) = GetCoinFormat(equipBase.Price);
2021-04-08 20:09:59 +08:00
sb.Append($"单价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}\n");
sb.AppendFormat($"[color=#ff99cc]已绑定[/color]\n");
sb.AppendFormat($"需要等级:{equipBase.UseLevel}\n");
sb.AppendFormat($"需要职业: {GetStrJob(equipBase.JobId, equipBase.Transmigration)}\n");
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipSpecialAtrribute(wornEquipData.Equip, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipBaseAtrribute(wornEquipData.Equip, equipBase, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipAdditionalAtrribute(wornEquipData.Equip, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
2021-04-11 19:50:39 +08:00
foreach (int item in wornEquipData.Equip.gemList)
2021-04-08 20:09:59 +08:00
{
if (item == 0)
{
sb.AppendFormat($"{SliverStar}\n");
continue;
}
MaterialBase materialBase = DataTableHelper.Get<MaterialBase>(item);
sb.AppendFormat($"{YellowStar}[color=#e9d099]{GteGemValue((AttributeType)materialBase.GemKey, materialBase.GemValue)}[/color]\n");
}
if (!wornEquipData.getSource.IsNullOrEmpty())
{
sb.AppendLine($"来源:[color=#ffff00][i]{wornEquipData.getSource}[/i][/color]");
}
sb.AppendFormat($"[color=#ffff99]{equipBase.Description}[/color]");
//!字符串赋值
FUI_TabComprasionUI.m_title.text = sb.ToString();
}
Vector2 GetComprasionPos(GObject gObject, Vector2 oldPos)
{
Vector2 tempPos = oldPos + new Vector2(-gObject.width, 0);
return tempPos;
}
}
private static void GetEquipSuitAtrribute(SuitConfig.Suit[] suitArr, List<string> list)
{
2021-04-11 19:50:39 +08:00
foreach (SuitConfig.Suit suit in suitArr)
2021-04-08 20:09:59 +08:00
{
list.Add(TabHelper.GetAttributeString((Cal.AttributeType)suit.Key, suit.Value));
}
}
//!获取装备的词条
static void GetEquipBaseAtrribute(Equip equip, EquipBase equipBase, List<string> list)
{
foreach (var kv in equip.mainAttribute)
{
float value = TabHelper.GetValueFromConfig((Cal.AttributeType)kv.Key, equipBase);
AttributeType attributeType = (AttributeType)kv.Key;
list.Add($"{GetAttributeString(attributeType, value,1+kv.Value)}{GetPercent(kv.Value)}");
}
2021-04-11 19:50:39 +08:00
foreach (int manulequipId in equip.randomAttributes)
2021-04-08 20:09:59 +08:00
{
ManulEquipAttribute manulEquipAttribute = ManulEquipAttributeCategory.Instance.Get(manulequipId);
if (manulEquipAttribute != null)
{
list.Add($"{GetAttributeString((AttributeType)manulEquipAttribute.Key, manulEquipAttribute.Value)}");
}
}
}
public static string GetPercent(float percent)
{
return percent >= 0 ? $"[color=#99cc33] ({percent:p2})[/color]" : $"[color=#cc3333] ({percent:p2})[/color]";
}
//!获取装备的词条
static void GetEquipAdditionalAtrribute(Equip equip, List<string> list)
{
2021-04-11 19:50:39 +08:00
foreach (int affixId in equip.addtionalAttributes)
2021-04-08 20:09:59 +08:00
{
if (affixId== 0) continue;
EquipAffixConfig equipAffixConfig = EquipAffixConfigCategory.Instance.Get(affixId);
if (equipAffixConfig != null)
{
2021-04-11 19:50:39 +08:00
foreach (EquipAffixConfig.Affix affix in equipAffixConfig.AffixArr)
2021-04-08 20:09:59 +08:00
{
list.Add(TabHelper.GetAttributeString((Cal.AttributeType)affix.Key, affix.Value));
}
}
}
}
static void GetEquipSpecialAtrribute(Equip equip, List<string> list)
{
float add;
Strengthentable strengthentable = StrengthentableCategory.Instance.Get(equip.level, false);
if (strengthentable == null)
{
add = 1;
}
else
add =1+ strengthentable.AttribteAdd;
if(equip.specialKey!= AttributeType.)
{
EquipBase equipBase = EquipBaseCategory.Instance.Get(equip.EquipId);
list.Add($"{equip.specialKey}:{MathHelper.RoundToInt(equipBase.SpecialValue * add)}");
}
else
{
ManulEquipAttribute manulEquipAttribute = ManulEquipAttributeCategory.Instance.Get(equip.specialId);
if (manulEquipAttribute != null )
list.Add($"{(Cal.AttributeType)manulEquipAttribute.Key}:{MathHelper.RoundToInt( manulEquipAttribute.Value * add)}");
}
}
public static string GetAttributeString(AttributeType attributeType,float value,float coeffict = 1)
{
string str = null;
switch (attributeType)
{
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
str = $"{attributeType}:{MathHelper.RoundToInt(value * coeffict)}";
break;
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
str = $"{attributeType}:{value * coeffict:p2}";
break;
default:
break;
}
return str;
}
public static float GetValueFromConfig(AttributeType attributeType,EquipBase equipBase)
{
switch (attributeType)
{
case AttributeType.:
return 0;
case AttributeType.:
return equipBase.Hp;
case AttributeType.:
return equipBase.Mp;
case AttributeType.:
return equipBase.Str;
case AttributeType.:
return equipBase.Quk;
case AttributeType.:
return equipBase.Spi;
case AttributeType.:
return equipBase.Wim;
case AttributeType.:
return equipBase.PhyAtk;
case AttributeType.:
return equipBase.SpiAtk;
case AttributeType.:
return equipBase.PhyDef;
case AttributeType.:
return equipBase.SpiDef;
case AttributeType.:
return equipBase.Pcrir;
case AttributeType.:
return equipBase.Mcrir;
case AttributeType.:
return equipBase.Pcri;
case AttributeType.:
return equipBase.Mcri;
case AttributeType.:
return equipBase.Rpcrir;
case AttributeType.:
return equipBase.Rmcrir;
case AttributeType.:
return equipBase.Rpcri;
case AttributeType.:
return equipBase.Rmcri;
case AttributeType.:
return equipBase.Dvo;
case AttributeType.:
return equipBase.Phy;
case AttributeType.:
return equipBase.Sta;
case AttributeType.:
return equipBase.Nphyi;
case AttributeType.:
return equipBase.Nmeni;
case AttributeType.:
return equipBase.Spd;
case AttributeType.:
return equipBase.Hit;
case AttributeType.:
return equipBase.Res;
default:
return 0;
}
}
static void GetEquipSpecialAtrribute(EquipBase equip, List<string> list)
{
var kv = new KeyValuePair<int, int>(equip.SpecialKey, equip.SpecialValue);
if (kv.Value == 0) return;
AttributeType attributeType = (AttributeType)kv.Key;
switch (attributeType)
{
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{MathHelper.RoundToInt(kv.Value)}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:f0}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
case AttributeType.:
list.Add($"{attributeType}:{kv.Value:p2}");
break;
default:
break;
}
}
public static void OpenUI(int itemId, string additionalPrice = null)
{
2021-04-11 19:50:39 +08:00
IConfig itemBase = BagHelper.GetItemBase(itemId);
2021-04-08 20:09:59 +08:00
sb.Length = 0;
itemDescList.Clear();
switch (itemBase)
{
default:
return;
case EquipBase equipBase:
{
Quality quality = (Quality)equipBase.Quality;
sb.AppendFormat($"[color={GetQualityColor(quality)}][size={TitleSize}][b]{equipBase.Name}[/b][/size][/color]\n");
for (int i = 0; i < equipBase.Star; i++)
{
sb.AppendFormat(YellowStar);
}
sb.AppendFormat("\n");
sb.AppendFormat($"装备 {(EquipType)equipBase.Type}\n");
2021-04-11 19:50:39 +08:00
(long gold, int sliver, int coin) = GetCoinFormat(equipBase.Price);
2021-04-08 20:09:59 +08:00
sb.Append($"单价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}\n");
string isLock = "未绑定";
sb.AppendFormat($"[color=#ff99cc]{isLock}[/color]\n");
sb.AppendFormat($"需要等级:{equipBase.UseLevel}\n");
sb.AppendFormat($"需要职业: {GetStrJob(equipBase.JobId, equipBase.Transmigration)}\n");
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipSpecialAtrribute(equipBase, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquiBaseAtrribute(equipBase, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
for (int i = 0; i < equipBase.MaxHole; i++)
{
sb.AppendFormat($"{SliverStar}\n");
}
sb.AppendFormat($"[color=#ffff99]{equipBase.Description}[/color]");
}
break;
case GoodsBase goodsBase:
{
Quality quality = (Quality)goodsBase.Quality;
sb.AppendFormat($"[color={GetQualityColor(quality)}][size={TitleSize}][b]{goodsBase.Name}[/b][/size][/color]\n");
sb.AppendFormat($"道具 消耗品\n");
2021-04-11 19:50:39 +08:00
(long gold, int sliver, int coin) = GetCoinFormat(goodsBase.Price);
2021-04-08 20:09:59 +08:00
sb.Append($"单价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}\n");
string isLock = goodsBase.IsLock ? "已绑定" : "未绑定";
sb.AppendFormat($"[color=#ff99cc]{isLock}[/color]\n");
sb.AppendFormat($"需要等级:{goodsBase.UsedLevel}\n");
sb.AppendFormat($"[color=#ffff99]{goodsBase.Description}[/color]");
}
break;
case MaterialBase materialBase:
{
Quality quality = (Quality)materialBase.Quality;
sb.AppendFormat($"[color={GetQualityColor(quality)}][size={TitleSize}][b]{materialBase.Name}[/b][/size][/color]\n");
sb.AppendFormat($"材料 {((MaterialsType)materialBase.MaterialType == MaterialsType.普通材料 ? MaterialsType.普通材料.ToString() : ((GemType)materialBase.GemType).ToString())}\n");
2021-04-11 19:50:39 +08:00
(long gold, int sliver, int coin) = GetCoinFormat(materialBase.Price);
2021-04-08 20:09:59 +08:00
sb.Append($"单价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}\n");
string isLock = materialBase.IsLock ? "已绑定" : "未绑定";
sb.AppendFormat($"[color=#ff99cc]{isLock}[/color]\n");
if (materialBase.MaterialType == (int)MaterialsType.)
{
sb.AppendLine($"[color=#99bf88]{GteGemValue((AttributeType)materialBase.GemKey, materialBase.GemValue)}[/color]");
}
sb.Append($"[color=#ffff99]{materialBase.Description}[/color]");
}
break;
}
if (additionalPrice != null)
sb.Append($"{additionalPrice}");
2021-04-11 19:50:39 +08:00
FUI_TabUI ui = OpenUI();
2021-04-08 20:09:59 +08:00
ui.m_title.text = sb.ToString();
Vector2 pos = GRoot.inst.GetPoupPosition(ui.self, null, null);
Vector2 offset = new Vector2(15, 15);
pos += offset;
ui.self.position = pos;
}
public static void OpenBuffUI(BuffStateInfo stateBuffInfo)
{
sb.Length = 0;
sb.AppendLine($"{stateBuffInfo.iconDesc}");
2021-04-11 19:50:39 +08:00
sb.Append($"持续时间时间:{stateBuffInfo.time / 1000f:f1} s");
FUI_TabUI ui = OpenUI();
2021-04-08 20:09:59 +08:00
ui.m_title.text = sb.ToString();
Vector2 pos = GRoot.inst.GetPoupPosition(ui.self, null, null);
Vector2 offset = new Vector2(15, 15);
pos += offset;
ui.self.position = pos;
}
public static string GetAdditionalPrice(IConfig itemBase, float discount = 1, MarketType marketType = MarketType.VoucherMarket)
{
sb.Length = 0;
switch (itemBase)
{
case MarketBase marketBase:
{
if (marketType == MarketType.YuanBaoMarket)
{
sb.Append($"\n原价: <s>{marketBase.Price_YuanBao}元宝</s>");
sb.Append($"\n现价: {Mathf.RoundToInt(marketBase.Price_YuanBao * discount)}元宝 ({discount:p2})");
}
else if (marketType == MarketType.VoucherMarket)
{
if (marketBase.OnlyYuanBao)
{
sb.Append("\n代金券无法购买此物品");
}
else
{
sb.Append($"\n原价: <s>{marketBase.Price_YuanBao * 2}代金券</s>");
sb.Append($"\n现价: {Mathf.RoundToInt(marketBase.Price_YuanBao * discount * 2)}代金券 ({discount:p2})");
}
}
}
break;
case ShopBase shopBase:
{
2021-04-11 19:50:39 +08:00
(long gold, int sliver, int coin) = GetCoinFormat(shopBase.Price);
2021-04-08 20:09:59 +08:00
sb.Append($"\n售价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}");
}
break;
}
return sb.ToString();
}
public static void OpenEquipForgeUI(int itemId, List<EquipForgeMaterialInfo> needMaterialInfoList)
{
2021-04-11 19:50:39 +08:00
IConfig itemBase = BagHelper.GetItemBase(itemId);
2021-04-08 20:09:59 +08:00
sb.Length = 0;
switch (itemBase)
{
default:
return;
case EquipBase equipBase:
{
Quality quality = (Quality)equipBase.Quality;
sb.Append($"[color={GetQualityColor(quality)}][size={TitleSize}][b]{equipBase.Name}[/b][/size][/color]\n");
for (int i = 0; i < equipBase.Star; i++)
{
sb.Append(YellowStar);
}
sb.Append("\n");
sb.Append($"需要等级:{equipBase.UseLevel}\n");
sb.Append($"需要职业: {GetStrJob(equipBase.JobId, equipBase.Transmigration)}\n");
itemDescList.Clear();
GetEquiBaseAtrribute(equipBase, itemDescList);
2021-04-11 19:50:39 +08:00
foreach (string item in itemDescList)
2021-04-08 20:09:59 +08:00
{
sb.Append($"[color=#99bf88]{item}[/color]\n");
}
sb.Append($"[color=#FFE148]-----------------所需素材-----------------[/color]");
2021-04-11 19:50:39 +08:00
foreach (EquipForgeMaterialInfo item in needMaterialInfoList)
2021-04-08 20:09:59 +08:00
{
string color = item.needCount > item.count ? "FF0000" : "FFFFFF";
sb.Append($"\n[color=#{color}]{item.name} x{item.needCount}(持有{item.count}[/color]");
}
}
break;
case GoodsBase goodsBase:
case MaterialBase materialBase:
break;
}
2021-04-11 19:50:39 +08:00
FUI_TabUI ui = OpenUI();
2021-04-08 20:09:59 +08:00
ui.m_title.text = sb.ToString();
Vector2 pos = GRoot.inst.GetPoupPosition(ui.self, null, null);
Vector2 offset = new Vector2(15, 15);
pos += offset;
ui.self.position = pos;
}
public static void OpenSkilUI(SkillConfig skillLogicConfig, int level, bool isPre = false)
{
sb.Length = 0;
sb.AppendLine($"[color=#FF8821][size={TitleSize}][b]{skillLogicConfig.Name}[/b][/size][/color]");
sb.AppendLine($"技能类型:{(SkillTypes)skillLogicConfig.SkillType}");
sb.AppendLine($"冷却时间:{skillLogicConfig.CD / 1000}s");
sb.AppendLine("[color=#FFE148]------------------------------------------[/color]");
sb.AppendLine($"当前等级:{(isPre ? 0 : level)}");
2021-04-11 19:50:39 +08:00
SkillCastType castType = (SkillCastType)skillLogicConfig.CastType;
2021-04-08 20:09:59 +08:00
switch (castType)
{
case SkillCastType.:
sb.AppendLine($"{castType}");
break;
case SkillCastType.:
case SkillCastType.:
sb.AppendLine($"{castType}{skillLogicConfig.CastValue:p2}");
break;
default:
break;
}
2021-04-11 19:50:39 +08:00
SkillConfig skillConfig_Level = DataTableHelper.Get<SkillConfig>(skillLogicConfig.Id + level);
2021-04-08 20:09:59 +08:00
sb.AppendLine($"升级需要等级:{skillConfig_Level.LearnLevel}");
sb.AppendLine($"技能效果:\n {skillLogicConfig.Desc}");
string descColor;
for (int i = 1; i <= skillLogicConfig.MaxLevel; i++)
{
if (level < i || isPre)
descColor = "#999999";
else
descColor = "#ffffff";
2021-04-11 19:50:39 +08:00
SkillConfig skillConfig_EachLevel = DataTableHelper.Get<SkillConfig>(skillLogicConfig.Id + i);
2021-04-08 20:09:59 +08:00
sb.AppendLine($" [color={descColor}]{skillConfig_EachLevel.Desc}[/color]");
}
2021-04-11 19:50:39 +08:00
FUI_TabUI ui = OpenUI();
2021-04-08 20:09:59 +08:00
ui.m_title.text = sb.ToString();
Vector2 pos = GRoot.inst.GetPoupPosition(ui.self, null, null);
Vector2 offset = new Vector2(15, 15);
pos += offset;
ui.self.position = pos;
}
//!获取品质颜色码
static string GetQualityColor(Quality quality)
{
switch (quality)
{
default:
case Quality.Common: return QualityColor.Common;
case Quality.UnCommon: return QualityColor.UnCommon;
case Quality.Rare: return QualityColor.Rare;
case Quality.Epic: return QualityColor.Epic;
case Quality.Legendary: return QualityColor.Legendary;
case Quality.Ulti: return QualityColor.Ulti;
}
}
//!获取职业
public static string GetStrJob(int jobId, int trans = 0)
{
return GetStrJob((JobType)jobId, trans);
}
public static string GetStrJob(JobType jobId, int trans = 0)
{
string ext = null;
switch (trans)
{
default:
break;
case 0:
ext = "";
break;
case 1:
ext = "(一转)";
break;
case 2:
ext = "(二转)";
break;
}
switch (jobId)
{
case JobType.UnKnown:
break;
case JobType.Officer:
return "军官" + ext;
case JobType.Sportsman:
return "运动员" + ext;
case JobType.Nurse:
return "护士" + ext;
case JobType.Superman:
return "超能力" + ext;
default:
break;
}
return string.Empty;
}
public static int GetJobById(int jobId)
{
return (jobId + 1) / 2;
}
//!获取装备的词条
static void GetEquiBaseAtrribute(EquipBase equipBase, List<string> list)
{
string GetPercent(int a, int b)
{
float percent = (a - b) * 100 / b;
return percent >= 0 ? $"[color=#99cc33] ({percent:f2}%)[/color]" : $"[color=#cc3333] ({percent:f2}%)[/color]";
}
string GetFloatPercent(float a, float b)
{
float percent = (a - b) * 100 / b;
return percent >= 0 ? $"[color=#99cc33] ({percent:f2}%)[/color]" : $"[color=#cc3333] ({percent:f2}%)[/color]";
}
if (equipBase.Hp != 0)
{
list.Add($"生命:{equipBase.Hp}{GetPercent(equipBase.Hp, equipBase.Hp)}");
}
if (equipBase.Mp != 0)
{
list.Add($"精力:{ equipBase.Mp}{GetPercent(equipBase.Mp, equipBase.Mp)}");
}
if (equipBase.Str != 0)
{
list.Add($"力量:{equipBase.Str}{GetPercent(equipBase.Str, equipBase.Str)}");
}
if (equipBase.Quk != 0)
{
list.Add($"敏捷:{equipBase.Quk}{GetPercent(equipBase.Quk, equipBase.Quk)}");
}
if (equipBase.Spi != 0)
{
list.Add($"精神:{equipBase.Spi}{GetPercent(equipBase.Spi, equipBase.Spi)}");
}
if (equipBase.Wim != 0)
{
list.Add($"智慧:{equipBase.Wim}{GetPercent(equipBase.Wim, equipBase.Wim)}");
}
if (equipBase.Sta != 0)
{
list.Add($"耐力:{equipBase.Sta}{GetPercent(equipBase.Sta, equipBase.Sta)}");
}
if (equipBase.Phy != 0)
{
list.Add($"体力:{equipBase.Phy}{GetPercent(equipBase.Phy, equipBase.Phy)}");
}
if (equipBase.PhyAtk != 0)
{
list.Add($"物理攻击:{equipBase.PhyAtk}{GetPercent(equipBase.PhyAtk, equipBase.PhyAtk)}");
}
if (equipBase.SpiAtk != 0)
{
list.Add($"精神攻击:{equipBase.SpiAtk}{GetPercent(equipBase.SpiAtk, equipBase.SpiAtk)}");
}
if (equipBase.PhyDef != 0)
{
list.Add($"物理防御:{equipBase.PhyDef}{GetPercent(equipBase.PhyDef, equipBase.PhyDef)}");
}
if (equipBase.SpiDef != 0)
{
list.Add($"精神防御:{equipBase.SpiDef}{GetPercent(equipBase.SpiDef, equipBase.SpiDef)}");
}
if (equipBase.Pcrir != 0)
{
list.Add($"物理暴击率:{equipBase.Pcrir:p2}{GetFloatPercent(equipBase.Pcrir, equipBase.Pcrir)}");
}
if (equipBase.Mcrir != 0)
{
list.Add($"精神暴击率:{equipBase.Mcrir:p2}{GetFloatPercent(equipBase.Mcrir, equipBase.Mcrir)}");
}
if (equipBase.Pcri != 0)
{
list.Add($"物理暴击值:{equipBase.Pcri:p2}{GetFloatPercent(equipBase.Pcri, equipBase.Pcri)}");
}
if (equipBase.Mcri != 0)
{
list.Add($"精神暴击值:{equipBase.Mcri:p2}{GetFloatPercent(equipBase.Mcri, equipBase.Mcri)}");
}
if (equipBase.Rpcrir != 0)
{
list.Add($"抗物理暴击率:{equipBase.Rpcrir:p2}{GetFloatPercent(equipBase.Rpcrir, equipBase.Rpcrir)}");
}
if (equipBase.Rmcrir != 0)
{
list.Add($"抗精神暴击率:{equipBase.Rmcrir:p2}{GetFloatPercent(equipBase.Rmcrir, equipBase.Rmcrir)}");
}
if (equipBase.Rpcri != 0)
{
list.Add($"抗物理暴击值:{equipBase.Rpcrir:p2}{GetFloatPercent(equipBase.Rpcri, equipBase.Rpcri)}");
}
if (equipBase.Rmcri != 0)
{
list.Add($"抗精神暴击值:{equipBase.Rmcri:p2}{GetFloatPercent(equipBase.Rmcri, equipBase.Rmcri)}");
}
if (equipBase.Nphyi != 0)
{
list.Add($"物理免伤:{equipBase.Nphyi:p2}{GetFloatPercent(equipBase.Nphyi, equipBase.Nphyi)}");
}
if (equipBase.Nmeni != 0)
{
list.Add($"精神免伤:{equipBase.Nmeni:p2}{GetFloatPercent(equipBase.Nmeni, equipBase.Nmeni)}");
}
if (equipBase.Dvo != 0)
{
list.Add($"辅助值:{equipBase.Dvo:p2}{GetFloatPercent(equipBase.Dvo, equipBase.Dvo)}");
}
}
public static (long, int, int) GetCoinFormat(long coin)
{
int cupper = (int)(coin % 100);
long gold = coin / 10000;
int sliver = (int)((coin - gold * 10000) / 100);
return (gold, sliver, cupper);
}
public static string GteGemValue(AttributeType type, float value)
{
switch (type)
{
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
return $"{type}:{MathHelper.RoundToInt(value)}";
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
case AttributeType.:
return $"{type}:{value:p2}";
case AttributeType.:
default: return string.Empty;
}
}
}
}