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()
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
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;
|
2021-04-20 00:25:04 +08:00
|
|
|
|
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()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|