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 { // 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 itemList = new List(); //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() { itemList[0]}, OnItemSelect); } private void UpdateMarketSysItems(GC_UPDATE_SHOP_SYS_ITEM packet) { if (packet.shopItemsList.Count == 1) { var packetItem = packet.GetShopItems(0); _ItemContainer.ForeachActiveItem((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 expBookItems = new List(); List selectItems = new List(); 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 selectItems = new List(); 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 containerItems = new List(); 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() { 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 }