483 lines
16 KiB
C#
483 lines
16 KiB
C#
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
|
|
|
|
|
|
}
|