CTT/Unity/Assets/HotfixView/UI/UpgradeUI/UpgradeUI.cs

208 lines
8.0 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
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;
2021-05-05 13:36:19 +08:00
private bool isLock;
2021-04-08 20:09:59 +08:00
public void Awake()
{
zoneScene = this.ZoneScene();
2021-04-08 20:09:59 +08:00
ui = GetParent<FUI_UpgradeUI>();
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
//!临时变量
2021-05-05 13:36:19 +08:00
isLock = false;
2021-04-08 20:09:59 +08:00
ItemUpgrade itemUpgrade = null;
ui.m_txtMaterial.text = null;
int upgradeIndex = 0;
2021-05-05 13:36:19 +08:00
this.ui.m_btnLock.self.onClick.Set(()=>isLock=this.ui.m_btnLock.self.selected);
2021-04-08 20:09:59 +08:00
//!放入事件
ui.m_btnItem.self.onDrop.Set1(concent =>
{
if (concent.data is UIDragArgs args)
{
int index = args.index;
args.Release();
2021-04-11 19:50:39 +08:00
if (ClientItemDataComponent.Instance.ItemDic.TryGetValueByKey1(index, out ClientItemData data))
2021-04-08 20:09:59 +08:00
{
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;
2021-04-11 19:50:39 +08:00
ItemUpgrade.UpgradeNeedMaterial needMaterial = itemUpgrade.UpgradeNeedMaterialArr[i];
2021-04-08 20:09:59 +08:00
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
{
2021-04-11 19:50:39 +08:00
foreach (ClientItemData item in itemList)
2021-04-08 20:09:59 +08:00
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;
}
2021-05-05 13:36:19 +08:00
M2C_Upgrade ret = await zoneScene.GetComponent<SessionComponent>().Call<M2C_Upgrade>(new C2M_Upgrade { Index = upgradeIndex ,isLock = this.isLock});
2021-04-08 20:09:59 +08:00
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;
2021-04-08 20:09:59 +08:00
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);
}
2021-04-11 19:50:39 +08:00
FUIWindowComponent window = ui.GetOrAddComponent<FUIWindowComponent>();
2021-04-08 20:09:59 +08:00
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()
{
}
}
}