源战役客户端
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.2 KiB

  1. EmpowerExchangeView = EmpowerExchangeView or BaseClass(BaseItem)
  2. local EmpowerExchangeView = EmpowerExchangeView
  3. function EmpowerExchangeView:__init()
  4. self.base_file = "empower"
  5. self.layout_file = "EmpowerExchangeView"
  6. self.emExchange_item_list ={}
  7. self.model = EmpowerModel:GetInstance()
  8. self:Load()
  9. end
  10. function EmpowerExchangeView:Load_callback()
  11. self.nodes = {
  12. "des:tmp", "icon_bg/icon:img", "icon_bg/add_btn:obj",
  13. "icon_bg/count:tmp", "icon_bg"
  14. }
  15. self:GetChildren(self.nodes)
  16. self.itemCon = self:GetChild("ScrollView/Viewport/Content")
  17. self.girlIcon = self:GetChild("girlIcon"):GetComponent("Image")
  18. -- lua_resM:setOutsideImageSprite(self, self.girlIcon, GameResPath.GetRoleBg("empower_shop_girl"), false)
  19. --self.freshBtn = self:GetChild("freshBtn").gameObject
  20. self.num_txt = self:GetChild("moneyBg/num"):GetComponent("TextMeshProUGUI")
  21. self.des_tmp.text = string.format('%s可兑换为%s升品石', HtmlColorTxt( "万能升品石", ColorUtil.PURPLE_DARK), HtmlColorTxt( "任意部位", ColorUtil.GREEN_DARK))
  22. SetAnchoredPositionX(self.des, -210)
  23. SetAnchoredPositionX(self.icon_bg, 235)
  24. self:AddEvents()
  25. if self.need_refreshData then
  26. self:UpdateView()
  27. end
  28. end
  29. function EmpowerExchangeView:AddEvents( )
  30. local on_click = function ( click_obj )
  31. if self.add_btn_obj == click_obj then
  32. local empower_coin_good_id = self.model:GetEmpowerCoinGoodId()
  33. UIToolTipMgr:getInstance():AppendGoodsTips(empower_coin_good_id,
  34. nil, nil,nil,nil,nil,nil,true)
  35. end
  36. end
  37. AddClickEvent(self.add_btn_obj, on_click)
  38. -- 监听材料数目变化
  39. local function onBagChange()
  40. self:UpdateGoodsCount( )
  41. end
  42. self.bag_change_event_id = GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST, onBagChange)
  43. -- 监听界面刷事件
  44. local function update_view_func()
  45. self:UpdateView( )
  46. end
  47. self:BindEvent(self.model, EmpowerConst.UPDATE_EXCHANGE_VIEW, update_view_func)
  48. end
  49. function EmpowerExchangeView:UpdateView( )
  50. local exchangeReward = self.model:GetConfigMarbleKvVal("exchange_reward")
  51. local list = ErlangParser:GetInstance():Parse(exchangeReward)
  52. local good_id,cost_num = self:GetExchangeGoodId()
  53. for k,v in pairs(list) do
  54. local item = self.emExchange_item_list[k]
  55. if item == nil then
  56. item = EmpowerShopItem.New(self.itemCon)
  57. self.emExchange_item_list[k] = item
  58. end
  59. local data = {}
  60. data.goods_id = v[2]
  61. data.num = v[3]
  62. data.price = cost_num
  63. data.discount = 0
  64. data.is_pay = false
  65. data.money_type = EmpowerConst.EmpowerMoneyId
  66. if v.state == 1 then
  67. data.is_gray = true
  68. else
  69. data.is_gray = false
  70. end
  71. if v[1] == 100 then
  72. data.bind = true
  73. else
  74. data.bind = false
  75. end
  76. self.emExchange_item_list[k]:SetData(data,k,true)
  77. end
  78. -- 当前持有的数目
  79. local asset, source = WordManager:GetCommonMoneyIcon(EmpowerConst.EmpowerMoneyId)
  80. self.icon.sizeDelta = co.TableXY(26,21)
  81. lua_resM:setImageSprite(self, self.icon_img, asset, source)
  82. --exchange_cost
  83. self:UpdateGoodsCount( )
  84. end
  85. -- 更新材料数目
  86. function EmpowerExchangeView:UpdateGoodsCount( )
  87. local empower_coin_good_id = self.model:GetEmpowerCoinGoodId()
  88. local num = GoodsModel:getInstance():GetTypeGoodsNum(empower_coin_good_id)
  89. self.count_tmp.text = num
  90. self.model:Fire(EmpowerConst.UPDATA_EMTREASURE_COIN_NUM,num)
  91. end
  92. function EmpowerExchangeView:SetData( data )
  93. self.data = data
  94. if self.is_loaded then
  95. self.need_refreshData = false
  96. self:UpdateView()
  97. else
  98. self.need_refreshData = true
  99. end
  100. end
  101. function EmpowerExchangeView:GetExchangeGoodId( )
  102. local exchange_cost = self.model:GetConfigMarbleKvVal("exchange_cost")
  103. local exchange_cost_list = ErlangParser:GetInstance():Parse(exchange_cost)[1]
  104. self.exchangePropId = exchange_cost_list[2]
  105. local exchangePropNum = exchange_cost_list[3]
  106. return self.exchangePropId,exchangePropNum
  107. end
  108. function EmpowerExchangeView:__delete( )
  109. for i, v in ipairs(self.emExchange_item_list) do
  110. v:DeleteMe()
  111. v = nil
  112. end
  113. self.emExchange_item_list = {}
  114. if self.bag_change_event_id then
  115. GoodsModel:getInstance():UnBind(self.bag_change_event_id)
  116. self.bag_change_event_id = nil
  117. end
  118. end