202 lines
7.6 KiB
C#
202 lines
7.6 KiB
C#
|
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()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|