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

169 lines
5.7 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00

using ET;
using FairyGUI;
using System;
using System.Collections.Generic;
namespace ET
{
public class ShopUIAwakeSyatem : AwakeSystem<ShopUI>
{
public override void Awake(ShopUI self)
{
self.Awake();
}
}
public class ShopUIDestroySyatem : DestroySystem<ShopUI>
{
public override void Destroy(ShopUI self)
{
self.Destroy();
}
}
public class ShopUI : Entity
{
public FUI_ShopUI ui;
public void Awake()
{
ui = GetParent<FUI_ShopUI>();
AwakeAsync().Coroutine();
}
private async ETVoid AwakeAsync()
{
ui.m_pageList.selectedIndex = 0;
ShowItems(0);
ui.m_pageList.onClickItem.Set1(concent =>
{
ShowItems(ui.m_pageList.selectedIndex);
});
//!拖拽进
ui.m_slotList.onDrop.Set1(context =>
{
SellItem(context).Coroutine();
});
//!+展示Shop中的Item
void ShowItems(int pageIndex)
{
ui.m_slotList.RemoveChildrenToPool();
var list = ShopComponent.GetShopBase(this.ui.ZoneScene(),pageIndex);
if (list == null) return;
int index = 0;
foreach (var shopBase in list)
{
int temp = index++;
GButton btn = ui.m_slotList.AddItemFromPool().asButton;
btn.icon = UIPackage.GetItemURL(FUIPackage.Bag, BagHelper.GetIconName(shopBase.ItemId).Item2);
//!显示页签
#if UNITY_STANDALONE
btn.onRollOver.Set(() => TabHelper.OpenUI(shopBase.ItemId, TabHelper.GetAdditionalPrice(shopBase)));
//!隐藏页签
btn.onRollOut.Set(TabHelper.HideUI);
#endif
//!双击购买
btn.onClick.Set1(async content =>
{
if (content.inputEvent.isDoubleClick)
{
#if UNITY_STANDALONE
if (!content.inputEvent.ctrl)
{
await SendBuyProto(1);
return;
}
var tipUI = TipHelper.OpenUI("请输入您想购买的数量:", tipType: TipType.DoubleInput);
tipUI.m_btnYes.self.onClick.Clear();
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;
await SendBuyProto(count);
}
}
#else
await SendBuyProto(1);
#endif
async ETTask SendBuyProto(int count)
{
var ret = await SessionComponent.Instance.Call<M2C_BuyInShop>(new C2M_BuyInShop { PageIndex = ui.m_pageList.selectedIndex, SlotIndex = temp, Count = count });
if (!ret.Message.IsNullOrEmpty())
{
TipHelper.OpenUI(ret.Message);
return;
}
Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI
{
list=ret.BagMapList
});
}
}
#if !UNITY_STANDALONE
else
{
TabHelper.OpenUI(shopBase.ItemId, TabHelper.GetAdditionalPrice(shopBase));
}
#endif
});
}
}
await ETTask.CompletedTask;
}
public static async ETVoid SellItem(EventContext context)
{
if (!(context.data is UIDragArgs args)) return;
if (args.uiType != UIDragArgs.UIType.Bag) return;
var bagIndex = args.index;
args.Release();
#if UNITY_STANDALONE
if (!context.inputEvent.ctrl)
{
await SendPutProto(bagIndex,1);
return;
}
var tipUI = TipHelper.OpenUI("请输入您要出售的数量:", tipType: TipType.DoubleInput);
tipUI.m_btnYes.self.onClick.Clear();
tipUI.m_btnYes.self.onClick.Add(TipYesCallBack);
tipUI.AddEventCallBack(TipYesCallBack);
async void TipYesCallBack()
{
if (int.TryParse(tipUI.m_IptTxt.text, out int count))
{
if (count <= 0) return;
await SendPutProto(bagIndex,count);
}
}
#else
await SendPutProto(bagIndex,1);
#endif
}
public static async ETTask SendPutProto(int bagIndex,int count)
{
var ret = await SessionComponent.Instance.Call<M2C_SellItem>(new C2M_SellItem { SlotIndex = bagIndex, Count = count });
if (!ret.Message.IsNullOrEmpty())
{
TipHelper.OpenUI(ret.Message);
return;
}
Game.EventSystem.Publish_Sync(new ET.EventType.UpdateBagUI
{
list = ret.BagMapList
});
}
public void Destroy()
{
}
}
}