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

208 lines
8.0 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;
private bool isLock;
public void Awake()
{
zoneScene = this.ZoneScene();
ui = GetParent<FUI_UpgradeUI>();
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
//!临时变量
isLock = false;
ItemUpgrade itemUpgrade = null;
ui.m_txtMaterial.text = null;
int upgradeIndex = 0;
this.ui.m_btnLock.self.onClick.Set(()=>isLock=this.ui.m_btnLock.self.selected);
//!放入事件
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 ClientItemData 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;
ItemUpgrade.UpgradeNeedMaterial 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 (ClientItemData 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;
}
M2C_Upgrade ret = await zoneScene.GetComponent<SessionComponent>().Call<M2C_Upgrade>(new C2M_Upgrade { Index = upgradeIndex ,isLock = this.isLock});
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 Scene zoneScene;
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);
}
FUIWindowComponent 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()
{
}
}
}