ItemExchangeView.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. using System;
  2. using ET;
  3. using FairyGUI;
  4. using UI.CommonGame;
  5. namespace GFGGame
  6. {
  7. public class ItemExchangeView : BaseWindow
  8. {
  9. private UI_ItemExchangeUI _ui;
  10. private ShopCfg _shopCfg;
  11. private int _goodIds;
  12. private long _buyCount = 0;
  13. private long _maxCanBuy = 0;
  14. public override void Dispose()
  15. {
  16. if (_ui != null)
  17. {
  18. _ui.Dispose();
  19. }
  20. _ui = null;
  21. base.Dispose();
  22. }
  23. protected override void OnHide()
  24. {
  25. base.OnHide();
  26. }
  27. protected override void OnInit()
  28. {
  29. base.OnInit();
  30. packageName = UI_ItemExchangeUI.PACKAGE_NAME;
  31. _ui = UI_ItemExchangeUI.Create();
  32. this.viewCom = _ui.target;
  33. this.viewCom.Center();
  34. this.modal = true;
  35. viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
  36. _ui.m_btnAdd.target.onClick.Add(OnBtnPlusClick);
  37. _ui.m_btnMinus.target.onClick.Add(OnBtnMinusClick);
  38. _ui.m_btnMax.target.onClick.Add(OnBtnAllClick);
  39. _ui.m_btnConfirm.onClick.Add(OnBtnExchangeClick);
  40. _ui.m_btnCancle.onClick.Add(this.Hide);
  41. _ui.m_listItem.itemRenderer = ListItemRenderer;
  42. }
  43. protected override void OnShown()
  44. {
  45. base.OnShown();
  46. _goodIds = (int)this.viewData;
  47. _shopCfg = ShopCfgArray.Instance.GetCfg(_goodIds);
  48. _buyCount = 1;
  49. if (_shopCfg.costType == CostType.RMB)
  50. {
  51. _maxCanBuy = 1;
  52. }
  53. else
  54. {
  55. long curMoneyCanBuy = ItemDataManager.GetItemNum(_shopCfg.costId) / _shopCfg.price;
  56. if (_shopCfg.maxBuyNum == 0)
  57. {
  58. _maxCanBuy = Math.Min(curMoneyCanBuy, GameConst.MAX_COUNT_TO_BUY_ITEMS);
  59. }
  60. else
  61. {
  62. int lastBuyCount = _shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(_shopCfg.id);//剩余购买次数
  63. _maxCanBuy = Math.Min(curMoneyCanBuy, lastBuyCount);
  64. }
  65. }
  66. _maxCanBuy = Math.Max(1, _maxCanBuy);
  67. _ui.m_txtExchangeCount.visible = true;
  68. _ui.m_comCost.target.visible = true;
  69. UpdateStaticView();
  70. UpdateView();
  71. }
  72. private void UpdateStaticView()
  73. {
  74. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_shopCfg.itemId);
  75. _ui.m_txtName.text = itemCfg.name;
  76. _ui.m_txtDesc.text = string.IsNullOrEmpty(itemCfg.desc) ? "暂无描述" : itemCfg.desc;
  77. _ui.m_txtOwned.SetVar("count", ItemDataManager.GetItemNum(_shopCfg.itemId).ToString()).FlushVars();
  78. _ui.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg);
  79. _ui.m_loaRarity.visible = false;
  80. if (ItemUtilCS.IsDressUpItem(_shopCfg.itemId))
  81. {
  82. _ui.m_loaRarity.visible = true;
  83. RarityIconController.UpdateRarityIcon(_ui.m_loaRarity, _shopCfg.itemId, false);
  84. }
  85. _ui.m_listItem.numItems = itemCfg.itemsArr.Length;
  86. _ui.m_listItem.visible = itemCfg.itemsArr.Length > 0;
  87. }
  88. private void ListItemRenderer(int index, GObject obj)
  89. {
  90. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_shopCfg.itemId);
  91. ItemData itemData = ItemUtil.createItemData(itemCfg.itemsArr[index]);
  92. if (obj.data == null)
  93. {
  94. obj.data = new ItemView(obj as GComponent);
  95. }
  96. (obj.data as ItemView).SetData(itemData);
  97. (obj.data as ItemView).ChangeTxtCountStyle();
  98. }
  99. private void UpdateView()
  100. {
  101. _ui.m_txtExchangeCount.text = string.Format("x{0}", _shopCfg.itemNum * _buyCount);
  102. ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_shopCfg.itemId);
  103. _ui.m_txtCostCount.text = _buyCount.ToString();
  104. _ui.m_btnMinus.m_c1.selectedIndex = _buyCount == 1 ? 1 : 0;
  105. _ui.m_btnMinus.target.touchable = _buyCount == 1 ? false : true;
  106. // int hasCount = ItemDataManager.GetItemNum(cfg.itemId);
  107. _ui.m_btnAdd.m_c1.selectedIndex = _buyCount == _maxCanBuy ? 1 : 0;
  108. _ui.m_btnAdd.target.touchable = _buyCount == _maxCanBuy ? false : true;
  109. _ui.m_btnMax.m_c1.selectedIndex = _buyCount == _maxCanBuy ? 1 : 0;
  110. _ui.m_btnMax.target.touchable = _buyCount == _maxCanBuy ? false : true;
  111. _ui.m_txtShow.text = "选择购买数量";
  112. _ui.m_txtTips.text = string.Format("确定购买{0}个{1}?", _buyCount, itemCfg.name);
  113. ItemUtil.UpdateItemNeedNum(_ui.m_comCost.target, _shopCfg.costId, (int)_buyCount * _shopCfg.price);
  114. }
  115. private void OnBtnPlusClick()
  116. {
  117. _buyCount++;
  118. _buyCount = Math.Min(_buyCount, _maxCanBuy);
  119. UpdateView();
  120. }
  121. private void OnBtnMinusClick()
  122. {
  123. // if (_buyCount == 1)
  124. // {
  125. // PromptController.Instance.ShowFloatTextPrompt("已经是最小数量了");
  126. // return;
  127. // }
  128. _buyCount--;
  129. _buyCount = Math.Max(1, _buyCount);
  130. UpdateView();
  131. }
  132. private void OnBtnAllClick()
  133. {
  134. _buyCount = Math.Max(1, _maxCanBuy);
  135. UpdateView();
  136. }
  137. private async void OnBtnExchangeClick()
  138. {
  139. ShopExchangeCfg cfg = ShopExchangeCfgArray.Instance.GetCfg(_goodIds);
  140. if (ItemDataManager.GetItemNum(cfg.costId) < cfg.costNum)
  141. {
  142. PromptController.Instance.ShowFloatTextPrompt("道具不足");
  143. return;
  144. }
  145. bool result = await ShopSProxy.ReqShopBuy(_goodIds, _buyCount);
  146. if (result)
  147. {
  148. LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.SHANG_CHENG, 2);
  149. this.Hide();
  150. }
  151. }
  152. }
  153. }