Files
JJBB/Assets/Project/Script/GUI/Market/MarketSystemLogic.cs

483 lines
16 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using Games.Item;
using System.Collections.Generic;
using GCGame.Table;
using Module.Log;
public class MarketSystemLogic : UIControllerBase<MarketSystemLogic>
{
// Use this for initialization
void OnEnable ()
{
SetInstance(this);
//_TagPanel.ShowPage(0);
//OnTabPage(0);
GUIData.delMoneyChanged += UpdateOwnMoney;
UpdateOwnMoney();
}
void OnDisable()
{
SetInstance(null);
GUIData.delMoneyChanged -= UpdateOwnMoney;
}
void Awake()
{
InitBuyPage();
}
public void CloseWindow()
{
UIManager.CloseUI(UIInfo.MarketRoot);
}
public void OnTabPage(int page)
{
switch (page)
{
case 0:
_OwnMoney.ShowOwnCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
//InitBuyPage();
break;
case 1:
InitSell();
break;
}
}
public void UpdateMarketItems(GC_UPDATE_SHOP_SYS_ITEM packet)
{
switch (_TagPanel.GetShowingPage())
{
case 0:
UpdateMarketSysItems(packet);
break;
case 1:
UpdateSellItem(packet);
break;
}
}
public void UpdateBackPackItems()
{
switch (_TagPanel.GetShowingPage())
{
case 0:
UpdateBuyBackPackItems();
break;
case 1:
UpdateSellBackPackItems();
break;
}
}
public void ShowSeletcedSell(GameItem sellItem)
{
_TagPanel.ShowPage(1);
_DefaultSellItem = sellItem;
UpdateSellBackPackItems();
}
public UITagPanel _TagPanel;
#region buy page
public UISubScollMenu _SubMenu;
public UICurrencyItem _OwnMoney;
public UINumBoardInput _BuyNum;
public UIContainerSelect _ItemContainer;
public Text _ItemOwnCnt;
private ExchangeShopItem _SelectedItem;
private int _DefaultSelectedItem = -1;
private Market.MarketItemClass _SelectedClass;
private GameItem _DefaultSellItem;
public void InitBuyPage()
{
_SubMenu.PushMenu(new Market.MarketItemClass(3, 2));
//_SubMenu.PushMenu(new Market.MarketItemClass(3, 1));
//_SubMenu.PushMenu(Market.GetMarketClassName(4, -1), new Market.MarketItemClass[2] { new Market.MarketItemClass(4, 1), new Market.MarketItemClass(4, 2) });
//_SubMenu.PushMenu(new Market.MarketItemClass(5, -1));
//_SubMenu.ShowDefaultFirst();
//_OwnMoney.ShowOwnCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
}
public void UpdateOwnMoney()
{
//_OwnMoney.ShowOwnCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
_SellOwnMoney.ShowOwnCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
}
public void OnMenuSelect(int classType, int subClassType, int defaultSelectedItem = -1)
{
//CG_ASK_SHOP_SYS_ITEM packet = (CG_ASK_SHOP_SYS_ITEM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_SHOP_SYS_ITEM);
//packet.ItemClassId = classType;
//packet.ItemSubClassId = subClassType;
//packet.DataId = -1;
//packet.SendPacket();
_DefaultSelectedItem = defaultSelectedItem;
foreach (var menuObj in _SubMenu.SubBtns)
{
if (menuObj.Value.Count > 0)
{
foreach (var menuSubObj in menuObj.Value)
{
Market.MarketItemClass marketClass = menuSubObj.MenuObj as Market.MarketItemClass;
if (marketClass.ItemClass == classType && marketClass.ItemSubClass == subClassType)
{
_SubMenu.ShowMenu(menuObj.Key.MenuObj, menuSubObj.MenuObj);
}
}
}
else
{
Market.MarketItemClass marketClass = menuObj.Key.MenuObj as Market.MarketItemClass;
if (marketClass.ItemClass == classType && marketClass.ItemSubClass == subClassType)
{
_SubMenu.ShowMenu(menuObj.Key.MenuObj);
}
}
}
}
public void OnMenuSelect(object menuObj)
{
_SelectedClass = menuObj as Market.MarketItemClass;
if (_SelectedClass == null)
return;
CG_ASK_SHOP_SYS_ITEM packet = (CG_ASK_SHOP_SYS_ITEM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_SHOP_SYS_ITEM);
packet.ItemClassId = _SelectedClass.ItemClass;
packet.ItemSubClassId = _SelectedClass.ItemSubClass;
packet.DataId = -1;
packet.SendPacket();
LogModule.DebugLog(menuObj.ToString());
//List<ExchangeShopItem> itemList = new List<ExchangeShopItem>();
//itemList.Add(new ExchangeShopItem() { DataId = 1201, CurPrice = 40, NewPrice = 42, HadBuyNum = 4});
//itemList.Add(new ExchangeShopItem() { DataId = 1202, CurPrice = 40, NewPrice = 38, HadBuyNum = 3 });
//itemList.Add(new ExchangeShopItem() { DataId = 1203, CurPrice = 40, NewPrice = 45, HadBuyNum = 2 });
//itemList.Add(new ExchangeShopItem() { DataId = 1204, CurPrice = 40, NewPrice = 30, HadBuyNum = 1 });
//itemList.Add(new ExchangeShopItem() { DataId = 1205, CurPrice = 40, NewPrice = 42, HadBuyNum = 4 });
//itemList.Add(new ExchangeShopItem() { DataId = 1206, CurPrice = 40, NewPrice = 42, HadBuyNum = 4 });
//itemList.Add(new ExchangeShopItem() { DataId = 1207, CurPrice = 40, NewPrice = 42, HadBuyNum = 4 });
//itemList.Add(new ExchangeShopItem() { DataId = 1208, CurPrice = 40, NewPrice = 42, HadBuyNum = 4 });
//itemList.Add(new ExchangeShopItem() { DataId = 1209, CurPrice = 40, NewPrice = 42, HadBuyNum = 4 });
//itemList.Add(new ExchangeShopItem() { DataId = 1210, CurPrice = 40, NewPrice = 42, HadBuyNum = 4 });
//_ItemContainer.InitSelectContent(itemList, new List<ExchangeShopItem>() { itemList[0]}, OnItemSelect);
}
private void UpdateMarketSysItems(GC_UPDATE_SHOP_SYS_ITEM packet)
{
if (packet.shopItemsList.Count == 1)
{
var packetItem = packet.GetShopItems(0);
_ItemContainer.ForeachActiveItem<MarketSystemItem>((shopItem) =>
{
if (shopItem.ShowMarketItem.DataId == packetItem.DataId)
{
shopItem.UpdateMarketItem(packetItem);
OnItemSelect(packetItem);
}
});
return;
}
for (int i = 0; i < packet.shopItemsList.Count; ++i)
{
LogModule.DebugLog("packet shop item:" + packet.shopItemsList[i].DataId);
}
if (_SelectedClass != null && _SelectedClass.ItemClass == 5)
{
List<ExchangeShopItem> expBookItems = new List<ExchangeShopItem>();
List<ExchangeShopItem> selectItems = new List<ExchangeShopItem>();
var shopItemTabs = TableManager.GetExchangeMarket().Values;
foreach (var shopItem in shopItemTabs)
{
if (shopItem.ClassType == 5)
{
ExchangeShopItem expBook = null;
for (int i = 0; i < packet.shopItemsList.Count; ++i)
{
if (packet.shopItemsList[i].DataId == shopItem.Id)
{
expBook = packet.shopItemsList[i];
break;
}
}
if (expBook == null)
{
expBook = new ExchangeShopItem();
expBook.DataId = shopItem.Id;
expBook.CurPrice = -1;
expBook.HadBuyNum = -1;
}
expBookItems.Add(expBook);
if (shopItem.Id == _DefaultSelectedItem)
{
selectItems.Add(expBook);
}
}
}
if (selectItems.Count == 0)
{
selectItems.Add(expBookItems[0]);
}
_ItemContainer.InitSelectContent(expBookItems, selectItems, OnItemSelect);
}
else
{
List<ExchangeShopItem> selectItems = new List<ExchangeShopItem>();
if (_DefaultSelectedItem > 0)
{
for (int i = 0; i < packet.shopItemsList.Count; ++i)
{
if (packet.shopItemsList[i].DataId == _DefaultSelectedItem)
{
selectItems.Add(packet.shopItemsList[i]);
break;
}
}
}
else
{
if (packet.shopItemsList.Count != 0)
{
selectItems.Add(packet.shopItemsList[0]);
}
else
{
LogModule.ErrorLog("packet.shopItemsList length is 0!!!");
}
}
_ItemContainer.InitSelectContent(packet.shopItemsList, selectItems, OnItemSelect);
}
}
private void UpdateBuyBackPackItems()
{
if (_SelectedItem != null)
{
var ownItemCnt = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(_SelectedItem.DataId);
_ItemOwnCnt.text = StrDictionary.GetClientDictionaryString("#{9301}", ownItemCnt);
RefreshBuyNum();
}
//_OwnMoney.ShowOwnCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
}
private void OnItemSelect(object selectItem)
{
_SelectedItem = selectItem as ExchangeShopItem;
var ownItemCnt = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(_SelectedItem.DataId);
_ItemOwnCnt.text = StrDictionary.GetClientDictionaryString("#{9301}", ownItemCnt);
RefreshBuyNum();
}
private void RefreshBuyNum()
{
if (_SelectedItem == null)
return;
var ownvalue = GameManager.gameManager.PlayerDataPool.GetLongPropty((int)CONSUM_TYPE.MONEY, (int)MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
int canBuyNum = (int)(ownvalue / _SelectedItem.CurPrice);
var marketItemTab = TableManager.GetExchangeMarketByID(_SelectedItem.DataId, 0);
int limitBuyCnt = canBuyNum;
if (marketItemTab.LimitNum > 0)
{
int limitCnt = marketItemTab.LimitNum - _SelectedItem.HadBuyNum;
limitBuyCnt = Mathf.Min(canBuyNum, limitCnt);
}
if (marketItemTab.ClassType == 5)
{
limitBuyCnt = 1;
}
limitBuyCnt = Mathf.Clamp(limitBuyCnt, 1, 999);
_BuyNum.Init(1, 1, limitBuyCnt);
}
public void OnBtnBuy()
{
if (_SelectedItem == null)
return;
CG_SHOP_SYS_HANDDLE packet = (CG_SHOP_SYS_HANDDLE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_SHOP_SYS_HANDDLE);
packet.HanddleType = 1;
packet.ItemDataId = _SelectedItem.DataId;
packet.ItemNum = _BuyNum.Value;
packet.SendPacket();
LogModule.DebugLog("OnBtnBuy:" + _SelectedItem.DataId);
//CG_ASK_SHOP_SYS_ITEM shopItemPacket = (CG_ASK_SHOP_SYS_ITEM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_SHOP_SYS_ITEM);
//shopItemPacket.ItemClassId = -1;
//shopItemPacket.ItemSubClassId = -1;
//shopItemPacket.DataId = _SelectedItem.DataId;
//packet.SendPacket();
}
#endregion
#region sell page
public UIContainerSelect _SellItems;
public UIDynamicText _ItemDesc;
public Text _Name;
public Text _Num;
public Text _SellPriceUp;
public Text _SellPriceDown;
public UINumBoardInput _SellNum;
public UICurrencyItem _TotleMoney;
public UICurrencyItem _SellOwnMoney;
public GameObject _InfoGO;
private ExchangeShopItem _SellItemInfo;
private GameItem _SelectedSellItem;
public void InitSell()
{
UpdateSellBackPackItems();
}
private void OnSelectSellItem(object selectGO)
{
_InfoGO.SetActive(true);
_SelectedSellItem = selectGO as GameItem;
var commonItem = TableManager.GetCommonItemByID(_SelectedSellItem.DataID, 0);
_ItemDesc.SetText(StrDictionary.GetClientString_WithNameSex(commonItem.Tips));
_Name.text = commonItem.Name;
_Num.text = _SelectedSellItem.StackCount.ToString();
//_SellOwnMoney.ShowOwnCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
UpdateOwnMoney();
_SellNum.Init(1, 1, _SelectedSellItem.StackCount);
CG_ASK_SHOP_SYS_ITEM packet = (CG_ASK_SHOP_SYS_ITEM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_SHOP_SYS_ITEM);
packet.ItemClassId = -1;
packet.ItemSubClassId = -1;
packet.DataId = _SelectedSellItem.DataID;
packet.SendPacket();
}
private void UpdateSellItem(GC_UPDATE_SHOP_SYS_ITEM packet)
{
if (packet.shopItemsCount > 0)
{
_SellItemInfo = packet.GetShopItems(0);
_TotleMoney.ShowCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND, _SellItemInfo.NewPrice * _SellNum.Value);
float delta = (_SellItemInfo.NewPrice - _SellItemInfo.CurPrice) / ((float)_SellItemInfo.CurPrice) * 100.0f;
if (delta > 0)
{
_SellPriceUp.gameObject.SetActive(true);
_SellPriceDown.gameObject.SetActive(false);
_SellPriceUp.text = string.Format("{0:0.00}", delta) + "%";
}
else if (delta < 0)
{
_SellPriceUp.gameObject.SetActive(false);
_SellPriceDown.gameObject.SetActive(true);
_SellPriceDown.text = string.Format("{0:0.00}", delta) + "%";
}
else
{
_SellPriceUp.gameObject.SetActive(false);
_SellPriceDown.gameObject.SetActive(false);
}
}
}
private void UpdateSellBackPackItems()
{
_SellPriceUp.gameObject.SetActive(false);
_SellPriceDown.gameObject.SetActive(false);
var itemList = GameManager.gameManager.PlayerDataPool.BackPack.GetList();
List<GameItem> containerItems = new List<GameItem>();
foreach (var ownItem in itemList)
{
if (!ownItem.IsValid())
continue;
if (ownItem.BindFlag == true)
continue;
var marketItemTab = TableManager.GetExchangeMarketByID(ownItem.DataID, 0);
if (marketItemTab == null)
continue;
containerItems.Add(ownItem);
}
if (containerItems.Count > 0)
{
var selectedItem = _SelectedSellItem;
if (_DefaultSellItem != null)
{
selectedItem = _DefaultSellItem;
}
if (!containerItems.Contains(selectedItem))
{
selectedItem = containerItems[0];
}
_SellItems.InitSelectContent(containerItems, new List<GameItem>() { selectedItem }, OnSelectSellItem);
_DefaultSellItem = null;
}
else
{
_InfoGO.SetActive(false);
_SellItems.InitSelectContent(containerItems, null, OnSelectSellItem);
_ItemDesc.SetText("");
_Name.text = "";
_Num.text = "";
_TotleMoney.ShowCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND, 0);
_SellNum.Init(0, 0, 0);
}
//_SellOwnMoney.ShowOwnCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
UpdateOwnMoney();
}
public void OnSellNumChange()
{
if (_SellItemInfo != null)
{
_TotleMoney.ShowCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND, _SellItemInfo.NewPrice * _SellNum.Value);
}
else
{
_TotleMoney.ShowCurrency(MONEYTYPE.MONEYTYPE_YUANBAO_BIND, 0);
}
}
public void OnBtnSell()
{
if (_SelectedSellItem == null)
return;
CG_SHOP_SYS_HANDDLE packet = (CG_SHOP_SYS_HANDDLE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_SHOP_SYS_HANDDLE);
packet.HanddleType = 2;
packet.ItemDataId = _SelectedSellItem.DataID;
packet.ItemNum = _SellNum.Value;
packet.SendPacket();
LogModule.DebugLog("Sell:" + _SelectedSellItem.DataID + " Num:" + _SellNum.Value);
}
#endregion
}