zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Unity/Assets/HotfixView/UI/UpgradeUI/UpgradeUI.cs

202 lines
7.6 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 Cal.DataTable;
using ET;
using FairyGUI;
using System;
using System.Collections.Generic;
namespace ET
{
public class UpgradeUIAwakeSyatem : AwakeSystem<UpgradeUI>
{
public override void Awake(UpgradeUI self)
{
self.Awake();
}
}
public class UpgradeUIDestroySyatem : DestroySystem<UpgradeUI>
{
public override void Destroy(UpgradeUI self)
{
self.Destroy();
}
}
public class UpgradeUI : Entity
{
public FUI_UpgradeUI ui;
public void Awake()
{
ui = GetParent<FUI_UpgradeUI>();
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
//!临时变量
ItemUpgrade itemUpgrade = null;
ui.m_txtMaterial.text = null;
int upgradeIndex = 0;
//!放入事件
ui.m_btnItem.self.onDrop.Set1(concent =>
{
if (concent.data is UIDragArgs args)
{
int index = args.index;
args.Release();
if (ClientItemDataComponent.Instance.ItemDic.TryGetValueByKey1(index, out var data))
{
string icon = BagHelper.GetIconName(data.ItemId).Item2;
ui.m_btnItem.self.icon = UIPackage.GetItemURL(FUIPackage.Bag, icon);
//!寻找下一个装备
itemUpgrade = DataTableHelper.Get<ItemUpgrade>(data.ItemId);
if (itemUpgrade == null)
{
TipHelper.OpenUI("此物品不能进化!");
return;
}
upgradeIndex = index;
icon = BagHelper.GetIconName(itemUpgrade.UpgradeItemId).Item2;
ui.m_btnFinalItem.self.icon = UIPackage.GetItemURL(FUIPackage.Bag, icon);
icon = null;
var bagDic = ClientItemDataComponent.Instance.ItemDic;
//!判断材料
for (int i = itemUpgrade.UpgradeNeedMaterialArr.Length - 1; i >= 0; i--)
{
int materialCount = 0;
var needMaterial = itemUpgrade.UpgradeNeedMaterialArr[i];
int count = needMaterial.UpgradeNeedMaterial_Count;
if (data.ItemId == needMaterial.UpgradeNeedMaterial_Id)
count++;
if (!bagDic.TryGetValueByKey2(needMaterial.UpgradeNeedMaterial_Id, out var itemList) || itemList.Count == 0)
{ }
else
{
foreach (var item in itemList)
materialCount += item.Count;
}
string name = BagHelper.GetIconName(needMaterial.UpgradeNeedMaterial_Id).Item1;
string color = count > materialCount ? "FF0000" : "FFFFFF";
icon += $"[color=#{color}]{name} x{count}(持有{materialCount}[/color]\n";
}
ui.m_txtMaterial.text = icon;
ui.m_btnUpgrade.self.title = $"进化{(itemUpgrade.SucceefulRate==1?"":$"({itemUpgrade.SucceefulRate:p0})")}";
}
}
});
//!显示页签
ui.m_btnItem.self.onClick.Clear();
ui.m_btnFinalItem.self.onClick.Clear();
TabHelper.SetTab(ui.m_btnItem.self, () =>
{
if (itemUpgrade == null) return;
TabHelper.OpenUI((int)itemUpgrade.Id);
});
TabHelper.SetTab(ui.m_btnFinalItem.self, () =>
{
if (itemUpgrade == null) return;
TabHelper.OpenUI(itemUpgrade.UpgradeItemId);
});
//!进化树
ui.m_btnTree.self.onClick.Set(() =>
{
OpenTreeUI(itemUpgrade);
});
//!开始进化
ui.m_btnUpgrade.self.onClick.Set(async () =>
{
if (upgradeIndex == 0)
{
TipHelper.OpenUI("请拖拽能进化物品到格子中!");
return;
}
var ret = await SessionComponent.Instance.Call<M2C_Upgrade>(new C2M_Upgrade { Index = upgradeIndex });
if (!ret.Message.IsNullOrEmpty())
{
TipHelper.OpenUI(ret.Message);
return;
}
Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI
{
list=ret.BagMapList
});
//!清空
Clear();
});
void Clear()
{
ui.m_txtMaterial.text = null;
ui.m_btnFinalItem.self.icon = null;
ui.m_btnItem.self.icon = null;
}
await ETTask.CompletedTask;
}
private static Dictionary<int, int> itemKVDic;
private void OpenTreeUI(ItemUpgrade itemUpgrade)
{
if (itemKVDic == null)
{
itemKVDic = new Dictionary<int, int>();
var arr = DataTableHelper.GetAll<ItemUpgrade>();
foreach (ItemUpgrade item in arr)
{
itemKVDic.Add((int)item.Id, item.UpgradeItemId);
}
}
if (itemUpgrade == null) return;
if (!(FUIComponent.Instance.Get(FUIPackage.Bag_UpgradeTreeUI) is FUI_UpgradeTreeUI ui))
{
ui = FUI_UpgradeTreeUI.CreateInstance(this.ui);
ui.Name = FUIPackage.Bag_UpgradeTreeUI;
FUIComponent.Instance.Add(ui, true);
}
var window = ui.GetOrAddComponent<FUIWindowComponent>();
if (!window.IsShowing)
{
window.Show();
ui.m_Effect.Play();
window.Window.Left();
}
if (!itemKVDic.TryGetValue((int)itemUpgrade.Id, out int nextId))
{
TipHelper.OpenUI("当前物品以及进化到顶级了!");
return;
}
ui.m_itemList.RemoveChildrenToPool();
GLabel label;
int nextNextId = nextId;
nextId = (int)itemUpgrade.Id;
label = ui.m_itemList.AddItemFromPool().asLabel;
label.onClick.Clear();
label.GetControllerAt(0).selectedIndex = 0;
label.icon = UIPackage.GetItemURL(FUIPackage.Bag, BagHelper.GetIconName(nextId).Item2);
do
{
//!显示页签
int _temp = nextId;
TabHelper.SetTab(label, () =>
{
TabHelper.OpenUI(_temp);
});
label = ui.m_itemList.AddItemFromPool().asLabel;
label.onClick.Clear();
label.GetControllerAt(0).selectedIndex = 0;
label.icon = UIPackage.GetItemURL(FUIPackage.Bag, BagHelper.GetIconName(nextNextId).Item2);
nextId = nextNextId;
} while (itemKVDic.TryGetValue(nextId, out nextNextId));
//!显示页签
int temp = nextId;
TabHelper.SetTab(label, () =>
{
TabHelper.OpenUI(temp);
});
label.GetControllerAt(0).selectedIndex = 1;
}
public void Destroy()
{
}
}
}