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

1057 lines
47 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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");
var (gold, sliver, coin) = GetCoinFormat(equipBase.Price);
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);
foreach (var item in itemDescList)
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipBaseAtrribute(data.Equip, equipBase, itemDescList);
foreach (var item in itemDescList)
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipAdditionalAtrribute(data.Equip, itemDescList);
foreach (var item in itemDescList)
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
foreach (var item in data.Equip.gemList)
{
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");
foreach (var item in itemDescList)
{
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");
var (gold, sliver, coin) = GetCoinFormat(goodsBase.Price);
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");
var (gold, sliver, coin) = GetCoinFormat(materialBase.Price);
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;
}
var ui = OpenUI();
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;
var comUI = OpenComprasionUI();
var newPos = GetComprasionPos(comUI.self, pos);
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");
var (gold, sliver, coin) = GetCoinFormat(equipBase.Price);
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);
foreach (var item in itemDescList)
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipBaseAtrribute(wornEquipData.Equip, equipBase, itemDescList);
foreach (var item in itemDescList)
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquipAdditionalAtrribute(wornEquipData.Equip, itemDescList);
foreach (var item in itemDescList)
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
foreach (var item in wornEquipData.Equip.gemList)
{
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)
{
foreach (var suit in suitArr)
{
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)}");
}
foreach (var manulequipId in equip.randomAttributes)
{
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)
{
foreach (var affixId in equip.addtionalAttributes)
{
if (affixId== 0) continue;
EquipAffixConfig equipAffixConfig = EquipAffixConfigCategory.Instance.Get(affixId);
if (equipAffixConfig != null)
{
foreach (var affix in equipAffixConfig.AffixArr)
{
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)
{
var itemBase = BagHelper.GetItemBase(itemId);
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");
var (gold, sliver, coin) = GetCoinFormat(equipBase.Price);
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);
foreach (var item in itemDescList)
{
sb.AppendFormat($"[color=#99bf88]{item}[/color]\n");
}
sb.AppendLine("[size=3] [/size]");
itemDescList.Clear();
GetEquiBaseAtrribute(equipBase, itemDescList);
foreach (var item in itemDescList)
{
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");
var (gold, sliver, coin) = GetCoinFormat(goodsBase.Price);
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");
var (gold, sliver, coin) = GetCoinFormat(materialBase.Price);
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}");
var ui = OpenUI();
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.isBuff ? "" : "")}】");
sb.AppendLine($"{stateBuffInfo.iconDesc}");
sb.AppendLine($"持续时间时间:{stateBuffInfo.time / 1000f:f1} s");
var ui = OpenUI();
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:
{
var (gold, sliver, coin) = GetCoinFormat(shopBase.Price);
sb.Append($"\n售价: {gold}{Gold} {sliver}{Sliver} {coin}{Coin}");
}
break;
}
return sb.ToString();
}
public static void OpenEquipForgeUI(int itemId, List<EquipForgeMaterialInfo> needMaterialInfoList)
{
var itemBase = BagHelper.GetItemBase(itemId);
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);
foreach (var item in itemDescList)
{
sb.Append($"[color=#99bf88]{item}[/color]\n");
}
sb.Append($"[color=#FFE148]-----------------所需素材-----------------[/color]");
foreach (var item in needMaterialInfoList)
{
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;
}
var ui = OpenUI();
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)}");
var castType = (SkillCastType)skillLogicConfig.CastType;
switch (castType)
{
case SkillCastType.:
sb.AppendLine($"{castType}");
break;
case SkillCastType.:
case SkillCastType.:
sb.AppendLine($"{castType}{skillLogicConfig.CastValue:p2}");
break;
default:
break;
}
var skillConfig_Level = DataTableHelper.Get<SkillConfig>(skillLogicConfig.Id + level);
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";
var skillConfig_EachLevel = DataTableHelper.Get<SkillConfig>(skillLogicConfig.Id + i);
sb.AppendLine($" [color={descColor}]{skillConfig_EachLevel.Desc}[/color]");
}
var ui = OpenUI();
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;
}
}
}
}