源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 lines
6.3 KiB

  1. --自选礼包
  2. GiftOptionalView = GiftOptionalView or BaseClass(BaseView)
  3. function GiftOptionalView:__init()
  4. self.base_file = "gift"
  5. self.layout_file = "GiftOptionalView"
  6. self.layer_name = "UI"
  7. self.destroy_imm = true
  8. self.is_set_zdepth = true
  9. self.use_background = true
  10. self.close_mode = CloseMode.CloseDestroy
  11. self.model = GiftModel:getInstance()
  12. -- self.append_to_ctl_queue = true --是否要添加进界面堆栈
  13. self:AddPreLoadList("gift", {"GiftOptionalItem"})
  14. self.background_alpha = 0.85
  15. self.reward_item_list = {}
  16. self.now_choice_list = {}
  17. self.load_callback = function ()
  18. self:LoadSuccess()
  19. self:addEvents()
  20. end
  21. self.open_callback = function ()
  22. self:setData()
  23. end
  24. self.close_callback = function ()
  25. end
  26. self.destroy_callback = function ()
  27. self:DestroySuccess()
  28. end
  29. end
  30. function GiftOptionalView:Open(goods_vo)
  31. self.goods_vo = goods_vo
  32. self.max_num = goods_vo.goods_num
  33. BaseView.Open(self)
  34. end
  35. function GiftOptionalView:DestroySuccess()
  36. if self.choice_event then
  37. self.model:UnBind(self.choice_event)
  38. self.choice_event = nil
  39. end
  40. for k,v in pairs(self.reward_item_list) do
  41. v:DeleteMe()
  42. end
  43. self.reward_item_list = {}
  44. -- if self.tabWindowComponent then
  45. -- self.tabWindowComponent:DeleteMe()
  46. -- self.tabWindowComponent = nil
  47. -- end
  48. end
  49. function GiftOptionalView:LoadSuccess()
  50. local nodes = {
  51. -- "Window:raw","Window/windowCloseBtn:obj",
  52. "tips_text:tmp",--"Window/windowTitleCon/windowTitleText:txt",
  53. "sure_btn:obj", "ScrollView/Viewport/Content",
  54. "bg:raw", "btn_close:obj",
  55. }
  56. self:GetChildren(nodes)
  57. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg('gift_optiona_bg'), false)
  58. -- local closeWin_callback = function()
  59. -- self:Close()
  60. -- end
  61. -- self.tabWindowComponent = UITabWindow.New(self.transform,{},nil,closeWin_callback,self.background_wnd,self.transform, UITabWindow.SizeSmallNoTab, false,nil,true)
  62. -- self.tabWindowComponent:SetBackgroundRes("gift_optiona_bg_945_536")
  63. -- self.tabWindowComponent:SetTitleText("自选礼包")
  64. -- self.tabWindowComponent:ChangeShowFlag("Empower", 270013)
  65. -- lua_resM:setOutsideRawImage(self, self.Window_raw, GameResPath.GetViewBigBg("gift_optiona_bg_945_536"))
  66. end
  67. function GiftOptionalView:addEvents()
  68. local function click_func(target)
  69. if target == self.btn_close_obj then
  70. self:Close()
  71. elseif target == self.sure_btn_obj then
  72. local num = self:GetMaxNum()
  73. if num >= self.max_num then
  74. Message.show("您还没选择领取的物品哦~")
  75. else
  76. local goods_id = self.goods_vo.goods_id
  77. local type_id = self.goods_vo.type_id
  78. -- local num = GoodsModel:getInstance():GetTypeGoodsNum(type_id)
  79. local chose_num = 0
  80. local list = {}
  81. local sum_chosen_num = 0
  82. for k,v in pairs(self.now_choice_list) do
  83. if v > 0 then
  84. sum_chosen_num = sum_chosen_num + v
  85. local temp = {seqno = self.optional_info.goods_list[k].id, seqnum = v}
  86. table.insert(list, temp)
  87. end
  88. end
  89. if sum_chosen_num % self:GetOptionalNum(type_id) ~= 0 then
  90. Message.show("有剩余选择次数未使用")
  91. return
  92. end
  93. chose_num = sum_chosen_num/self:GetOptionalNum(type_id)
  94. self.model:Fire(GiftModel.PROTO_CCMD_EVENT, 15086, goods_id, type_id, chose_num, list)
  95. end
  96. end
  97. end
  98. AddClickEvent(self.sure_btn_obj, click_func)
  99. AddClickEvent(self.btn_close_obj, click_func)
  100. local function choice_func(index,count)
  101. self:handleOneChoice(index,count)
  102. end
  103. self.choice_event = self.model:Bind(GiftModel.CHOICE_ONE_ITEM, choice_func)
  104. end
  105. function GiftOptionalView:GetOptionalNum( type_id )
  106. for k,v in pairs(Config.Optionalgift) do
  107. if v.goods_id == type_id then
  108. return v.optional_num
  109. end
  110. end
  111. return 0
  112. end
  113. function GiftOptionalView:setData()
  114. local goods_base = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
  115. local str_color = WordManager.GetGoodsColor(goods_base.color)
  116. local kind, list = self.model:getOptionalConfig(self.goods_vo.type_id)
  117. local optional_num = self:GetOptionalNum(self.goods_vo.type_id)
  118. self.max_num = self.goods_vo.goods_num * optional_num --GoodsModel:getInstance():GetTypeGoodsNum(self.goods_vo.type_id)
  119. self.optional_info = list
  120. local color = tonumber(self.max_num) == 0 and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
  121. self.tips_text_tmp.text = string.format("剩余可选数量:%s个", HtmlColorTxt( self.max_num, color))
  122. function get_func( )
  123. return self:GetMaxNum()
  124. end
  125. for i,v in ipairs(self.optional_info.goods_list) do
  126. local item = self.reward_item_list[i]
  127. if not item then
  128. item = GiftOptionalItem.New(self.Content, nil, self.layer_name)
  129. -- item:SetPosition(110*(i-1), 0)
  130. item.GetMaxNum = get_func
  131. self.reward_item_list[i] = item
  132. end
  133. item:setData(i, v)
  134. end
  135. end
  136. function GiftOptionalView:GetMaxNum( )
  137. local num = 0
  138. for k,v in pairs(self.now_choice_list) do
  139. num = num + v
  140. end
  141. if self.max_num >= num then
  142. return self.max_num - num
  143. else
  144. return 0
  145. end
  146. end
  147. function GiftOptionalView:handleOneChoice(index,count)
  148. self.now_choice_list[index] = count
  149. local num = 0
  150. for k,v in pairs(self.now_choice_list) do
  151. num = num + v
  152. end
  153. local rest_num = self.max_num - num
  154. local color = tonumber(rest_num) == 0 and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
  155. self.tips_text_tmp.text = string.format("剩余可选数量:%s个", HtmlColorTxt( rest_num, color))
  156. end
  157. function GiftOptionalView:checkBoolEnough()
  158. local now_count = 0
  159. for k,v in pairs(self.now_choice_list) do
  160. now_count = now_count + 1
  161. end
  162. if now_count == self.optional_info.can_count then
  163. return 1
  164. elseif now_count > self.optional_info.can_count then
  165. return 2
  166. else
  167. return 3
  168. end
  169. end