using ET; using FairyGUI; using System; using System.Collections.Generic; namespace ET { public class BagUIAwakeSyatem : AwakeSystem { public override void Awake(BagUI self) { self.Awake(); } } public class BagUIDestroySyatem : DestroySystem { public override void Destroy(BagUI self) { self.Destroy(); } } public class BagUI : Entity { public const int ExpId = 110201; public const int YuanBaoId = 110202; public const int CoinId = 110203; public const int VoucherId = 110204; public const int GemId = 110205; private FUI_BagUI bagUI; private int _dragIndex; private bool isSplit; public static bool isMulti; public void Awake() { bagUI = GetParent(); AwakeAsync().Coroutine(); } private async ETVoid AwakeAsync() { isSplit = bagUI.m_btnSlipt.self.selected; isMulti = bagUI.m_btnMulti.self.selected; //!+获取背包数据 { var m2cGetBag = await SessionComponent.Instance.Call(new C2M_GetBag()); if (!m2cGetBag.Message.IsNullOrEmpty()) { TipHelper.OpenUI(m2cGetBag.Message); return; } Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI { list = m2cGetBag.BagMapList }); } //!+添加事件 { int listCount = bagUI.m_slotList.numChildren; for (int index = 0; index < listCount; index++) { GButton btn = bagUI.m_slotList.GetChildAt(index).asButton; int temp = index; //!显示页签 #if UNITY_STANDALONE btn.onRollOver.Set(() => { if (ClientItemDataComponent.Instance.ItemDic.TryGetValueByKey1(temp, out var data)) { TabHelper.OpenUI(data); } }); //!隐藏页签 btn.onRollOut.Set(TabHelper.HideUI); #endif //!删除、拆分、使用 btn.onClick.Set1(async context => { #if UNITY_STANDALONE if (isSplit) { //!拆分 if (context.inputEvent.isDoubleClick) { var tipUI = TipHelper.OpenUI("请输入您要拆分走的数量:", tipType: TipType.DoubleInput); tipUI.m_btnYes.self.onClick.Set(TipYesCallBack); tipUI.AddEventCallBack(TipYesCallBack); async void TipYesCallBack() { if (int.TryParse(tipUI.m_IptTxt.text, out int count)) { if (count <= 0) return; var ret = await SessionComponent.Instance.Call(new C2M_SplitItem() { Index = temp, Count = count }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI { list = ret.BagMapList }); } } } } else #endif { //!双击使用 if (context.inputEvent.isDoubleClick) { if (UnitComponent.MyUnit.IsFight) { TipHelper.OpenUI("战斗中,不能使用!"); return; } if (ClientItemDataComponent.Instance.ItemDic.TryGetValueByKey1(temp, out var data)) { if (data.ItemType == ItemType.EquipItem) { var ret = await SessionComponent.Instance.Call(new C2M_PutOn() { Index = temp }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI { list = ret.BagMapList }); Game.EventSystem.Publish(new ET.EventType.UpdateWornEquipUI { list = ret.WornBagMapList }).Coroutine(); } else if (data.ItemType == ItemType.GoodsItem) { var ret = await SessionComponent.Instance.Call(new C2M_UseGoods() { Index = temp }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI { list = ret.BagMapList }); Game.EventSystem.Publish(new ET.EventType.UpdateMainUISlot { list = ret.MainUISlotList }).Coroutine(); } } } #if !UNITY_STANDALONE else { if (ClientItemDataComponent.Instance.ItemDic.TryGetValueByKey1(temp, out var data)) { TabHelper.OpenUI(data); } } #endif } }); #if UNITY_STANDALONE //!右键 btn.onRightClick.Set1(async context => { if (context.inputEvent.isDoubleClick) { if (UnitComponent.MyUnit.IsFight) { TipHelper.OpenUI("战斗中,不能使用!"); return; } if (ClientItemDataComponent.Instance.ItemDic.TryGetValueByKey1(temp, out var data)) { if (data.ItemType != ItemType.NoneItem) { StoreUI storeUI = FUIComponent.Instance.Get(FUIPackage.Bag_StoreUI)?.GetComponent(); if (storeUI != null) { if (isMulti) await storeUI.SendPutProto(temp, data.Count); else await storeUI.SendPutProto(temp, 1); } else { ShopUI shopUI = FUIComponent.Instance.Get(FUIPackage.Shop_ShopUI)?.GetComponent(); if (shopUI != null) await ShopUI.SendPutProto(temp, 1); else { MarketUI marketUI = FUIComponent.Instance.Get(FUIPackage.Shop_MarketUI)?.GetComponent(); if (marketUI != null) await ShopUI.SendPutProto(temp, 1); } } } } } }); #endif //!拖拽 btn.draggable = true; btn.onDragStart.Set1(context => { //防止直接拖动该组件 context.PreventDefault(); //if (!context.inputEvent.ctrl) return; DragDropManager.inst.StartDrag(btn, btn.icon, UIDragArgs.Create(UIDragArgs.UIType.Bag, temp));//控制拖拽加载器中的图标 _dragIndex = temp; }); //!Drop btn.onDrop.Set1(async context => { if (!(context.data is UIDragArgs args)) return; if (args.uiType == UIDragArgs.UIType.Bag) { args.Release(); if (!ClientItemDataComponent.Instance.ItemDic.TryGetValueByKey1(_dragIndex, out var data)) return; if (data.ItemType == ItemType.NoneItem) return; var ret = await SessionComponent.Instance.Call(new C2M_ChangeItemPos() { Pos1 = _dragIndex, Pos2 = temp }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI { list = ret.BagMapList }); } else if (args.uiType == UIDragArgs.UIType.Store) { var storeIndex = args.index; args.Release(); StoreUI storeUI = FUIComponent.Instance.Get(FUIPackage.Bag_StoreUI)?.GetComponent(); if (storeUI != null) await storeUI.PutOutStore(storeIndex); } }); } //!整理背包按钮事件 bagUI.m_btnSort.onClick.Set(async () => { var ret = await SessionComponent.Instance.Call(new C2M_SortBag()); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI { list = ret.BagMapList }); }); //!进化按钮 bagUI.m_btnUpgrade.onClick.Set(() => { Game.EventSystem.Publish(new ET.EventType.OpenUpgradeUI { zoneScene = bagUI.ZoneScene() }).Coroutine(); bagUI.GetComponent().Window.Right(); }); //!增加代金券 bagUI.m_btnAddVoucher.self.onClick.Set(() => { var tipUI = TipHelper.OpenUI("请输入您要兑换的元宝数量,元宝:代金券=1:2", tipType: TipType.DoubleInput); tipUI.m_btnYes.self.onClick.Set(TipYesCallBack); tipUI.AddEventCallBack(TipYesCallBack); async void TipYesCallBack() { if (int.TryParse(tipUI.m_IptTxt.text, out int count)) { if (count <= 0) return; var ret = await SessionComponent.Instance.Call(new C2M_ChargeVoucher() { YuanBao = count }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } } } }); //!增加金币 bagUI.m_btnAddCoin.self.onClick.Set(() => { var tipUI = TipHelper.OpenUI("请输入您要兑换的星币数量,星币:铜币=1:10", tipType: TipType.DoubleInput); tipUI.m_btnYes.self.onClick.Set(TipYesCallBack); tipUI.AddEventCallBack(TipYesCallBack); async void TipYesCallBack() { if (int.TryParse(tipUI.m_IptTxt.text, out int count)) { if (count <= 0) return; var ret = await SessionComponent.Instance.Call(new C2M_ChargeCoin() { Gem = count }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } } } }); bagUI.m_btnSlipt.self.onClick.Set(() => { isSplit = bagUI.m_btnSlipt.self.selected; }); bagUI.m_btnMulti.self.onClick.Set(() => { isMulti = bagUI.m_btnMulti.self.selected; }); //!money RefreshMoney(); } } private void RefreshMoney() { var num = UnitComponent.MyUnit.GetComponent(); bagUI.m_txtYunabao.text = $"元宝:{ num.GetAsInt(NumericType.YuanBao)}"; bagUI.m_txtDaijinquan.text = $"代金券:{ num.GetAsInt(NumericType.Voucher)}"; bagUI.m_txtGem.text = $"星币:{MathHelper.RoundToLong(num.Get(NumericType.Gem)):###,###}"; var coin = num.Get(NumericType.Coin); var (gold, sliver, cupper) = TabHelper.GetCoinFormat(MathHelper.RoundToLong(coin)); bagUI.m_txtGold.text = gold + string.Empty; bagUI.m_txtSliver.text = sliver + string.Empty; bagUI.m_txtCoin.text = cupper + string.Empty; } public void Destroy() { } } }