源战役客户端
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.

307 rivejä
10 KiB

4 viikkoa sitten
  1. -- <*
  2. -- @Author: huangcong
  3. -- @Description: 装备橙色套装界面
  4. -- *>
  5. BagEquipOrangeSuitView = BagEquipOrangeSuitView or BaseClass(BaseView)
  6. local BagEquipOrangeSuitView = BagEquipOrangeSuitView
  7. function BagEquipOrangeSuitView:__init()
  8. self.base_file = "bag"
  9. self.layout_file = "BagEquipOrangeSuitView"
  10. self.layer_name = "Activity"
  11. self.destroy_imm = true
  12. self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
  13. self.is_set_zdepth = true
  14. self.model = EquipModel:getInstance()
  15. self.attr_item_list = {}
  16. self.attr_item_list2 = {}
  17. self.tab_list = {}
  18. self.look_suit_cache = {}--查看的套装换成 等会这里面的属性都要换成已查看
  19. self.max_item_num = 1
  20. self.load_callback = function ()
  21. self:LoadSuccess()
  22. self:AddEvent()
  23. end
  24. self.open_callback = function ( )
  25. self:UpdateView()
  26. end
  27. self.destroy_callback = function ( )
  28. self:DestroySuccess()
  29. end
  30. end
  31. function BagEquipOrangeSuitView:Open(suit_num)
  32. self.suit_num = suit_num or 1
  33. BaseView.Open(self)
  34. end
  35. function BagEquipOrangeSuitView:LoadSuccess()
  36. local nodes = {
  37. "bg:raw", "rightBtn:obj", "leftBtn:obj", "closeBtn:obj", "tabScroll/Viewport/tabCon", "tabScroll",
  38. --装备套件
  39. "fightText1:txt", "attrCon1", "suitNumText1:tmp", "fightTitleText1:tmp", "suitText1:tmp",
  40. --饰品套件
  41. "fightText2:txt", "attrCon2", "suitNumText2:tmp", "fightTitleText2:tmp", "suitText2:tmp",
  42. "leftRedDot:obj", "rightRedDot:obj",
  43. }
  44. self:GetChildren(nodes)
  45. self.fightTitleText1_tmp.text = "全集齐战力:"
  46. self.fightTitleText2_tmp.text = "全集齐战力:"
  47. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("equip_bag_suit_bg"), false)
  48. if self.need_refreshData then
  49. self:UpdateView()
  50. end
  51. end
  52. function BagEquipOrangeSuitView:AddEvent()
  53. local function click_event(target)
  54. if target == self.closeBtn_obj then
  55. self:Close()
  56. elseif target == self.leftBtn_obj then -- 左
  57. self.suit_num = self.suit_num - 1
  58. if self.suit_num < 1 then
  59. Message.show("到最左边啦!","fault")
  60. self.suit_num = 1
  61. return
  62. end
  63. self:RefreshView()
  64. self:MoveTabItem()
  65. elseif target == self.rightBtn_obj then -- 右
  66. self.suit_num = self.suit_num + 1
  67. if self.suit_num > self.max_item_num then
  68. Message.show("到最右边啦!","fault")
  69. self.suit_num = self.max_item_num
  70. return
  71. end
  72. self:RefreshView()
  73. self:MoveTabItem()
  74. end
  75. end
  76. AddClickEvent(self.closeBtn_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  77. AddClickEvent(self.leftBtn_obj, click_event)
  78. AddClickEvent(self.rightBtn_obj, click_event)
  79. local function updateRedDotBool( ... )
  80. self:UpdateRedBool()
  81. end
  82. self:BindEvent(GlobalEventSystem,EventName.UPDATE_BAG_RED,updateRedDotBool)
  83. end
  84. function BagEquipOrangeSuitView:UpdateView()
  85. if self.is_loaded then
  86. self.need_refreshData = false
  87. else
  88. self.need_refreshData = true
  89. return
  90. end
  91. self:UpdateTabList()
  92. end
  93. --更新页签
  94. function BagEquipOrangeSuitView:UpdateTabList( )
  95. local tab_len = EquipModel.getInstance():GetCurrentOpenSuitSeries() or 1
  96. local function callback( index )
  97. if not index then return end
  98. self.suit_num = index
  99. self:RefreshView()
  100. end
  101. self.max_item_num = tab_len
  102. local offer_x = 65
  103. local offer_y = 0
  104. local x = 0
  105. local y = 0
  106. for i=1,tab_len do
  107. local item = self.tab_list[i]
  108. if item == nil then
  109. item = BagEquipOrangeSuitTab.New(self.tabCon, nil, self.layer_name)
  110. self.tab_list[i] = item
  111. x = (BagEquipOrangeSuitTab.Width + offer_x)* (i-1) + 1
  112. y = -3
  113. item:SetPosition(x,y)
  114. item:SetCallBackFunc(callback)
  115. end
  116. item:SetData(i,i)
  117. end
  118. callback(self.suit_num)
  119. SetSizeDeltaX(self.tabCon,(BagEquipOrangeSuitTab.Width + offer_x)*tab_len)
  120. local sum_x = (BagEquipOrangeSuitTab.Width + offer_x)*tab_len - offer_x
  121. local size_x = 596--y66
  122. if sum_x < size_x then
  123. local offer_x = (size_x - sum_x)/2
  124. for i,v in ipairs(self.tab_list) do
  125. local pos = v:GetPosition()
  126. v:SetPosition(pos.x+offer_x,pos.y)
  127. end
  128. end
  129. self:MoveTabItem()
  130. end
  131. function BagEquipOrangeSuitView:MoveTabItem( )
  132. local offer_x = 65
  133. if not self.is_first_open then
  134. self.is_first_open = true
  135. if self.suit_num > 3 then--大于三套就移动一下位置吧
  136. local offer_index = self.suit_num - 3
  137. SetAnchoredPositionX(self.tabCon,-offer_index*(BagEquipOrangeSuitTab.Width + offer_x))
  138. end
  139. else
  140. if self.suit_num > 3 then--大于三套就移动一下位置吧
  141. local offer_index = self.suit_num - 3
  142. SetAnchoredPositionX(self.tabCon,-offer_index*(BagEquipOrangeSuitTab.Width + offer_x))
  143. else
  144. SetAnchoredPositionX(self.tabCon,0)
  145. end
  146. end
  147. end
  148. function BagEquipOrangeSuitView:RefreshView( )
  149. local active_list = EquipModel:getInstance().suit_attr_active_list[self.suit_num]
  150. if active_list then
  151. for k,v in pairs(active_list) do
  152. for ii,vv in ipairs(v) do
  153. for ii,vvv in ipairs(vv) do
  154. vv[2] = false
  155. end
  156. end
  157. end
  158. end
  159. self.model:UpdateNewSuitAttrActive(false)--更新红点
  160. self.look_suit_cache[self.suit_num] = true
  161. for k,v in pairs(self.tab_list) do
  162. v:SetChoose(self.suit_num)
  163. end
  164. self.suitText1_tmp.text = string.format("%s代",self.suit_num)
  165. self.suitText2_tmp.text = string.format("%s代",self.suit_num)
  166. local cur = GoodsModel:getInstance():GetEquipCurSuitOrangeNum(self.suit_num,1)
  167. local max = 7
  168. self.suitNumText1_tmp.text = string.format("收集进度 <color=%s>%s/%s</color>",ColorUtil.GREEN_DARK,cur,max)
  169. local cur2 = GoodsModel:getInstance():GetEquipCurSuitOrangeNum(self.suit_num,2)
  170. local max2 = 3
  171. self.suitNumText2_tmp.text = string.format("收集进度 <color=%s>%s/%s</color>",ColorUtil.GREEN_DARK,cur2,max2)
  172. self:UpdateAttrItemList()
  173. self:UpdateAttrItemList2()
  174. end
  175. --更新红点
  176. function BagEquipOrangeSuitView:UpdateRedBool( )
  177. local leftBool = false
  178. if self.suit_num > 1 then
  179. for i=1,self.suit_num - 1 do
  180. leftBool = self.model.suit_attr_active_red_series_list[i] or leftBool
  181. end
  182. end
  183. self.leftRedDot_obj:SetActive(leftBool)
  184. local rightBool = false
  185. if self.suit_num < self.max_item_num then
  186. for i=self.suit_num + 1,self.max_item_num do
  187. rightBool = self.model.suit_attr_active_red_series_list[i] or rightBool
  188. end
  189. end
  190. self.rightRedDot_obj:SetActive(rightBool)
  191. for k,v in pairs(self.tab_list) do
  192. v:UpdateRedBool()
  193. end
  194. end
  195. --更新装备属性列表
  196. function BagEquipOrangeSuitView:UpdateAttrItemList( )
  197. for k,v in pairs(self.attr_item_list) do
  198. v:SetVisible(false)
  199. end
  200. local suit_cfg_list = self.model:GetEquipmentSuitCfg(self.suit_num,1)
  201. local cur_suit_id_num,suit_equip_pos_list = GoodsModel:getInstance():GetEquipSuitNum(self.suit_num,1)
  202. if not suit_cfg_list or TableSize(suit_cfg_list) == 0 then return end
  203. local anim_power_cfg = suit_cfg_list[#suit_cfg_list]
  204. local power = anim_power_cfg and self.model:MathGreatAttrFighting(anim_power_cfg.attr,anim_power_cfg.suit_num <= cur_suit_id_num) or 0
  205. self.fightText1_txt.text = power
  206. local item_list = suit_cfg_list
  207. local y_list = {0,-97,-200}
  208. local offer_x = 0
  209. local offer_y = 17
  210. local x = 0
  211. local y = 0
  212. for i, v in ipairs(item_list) do
  213. local item = self.attr_item_list[i]
  214. if item == nil then
  215. item = BagEquipOrangeSuitAttrItem.New(self.attrCon1,nil,self.layer_name)
  216. self.attr_item_list[i] = item
  217. end
  218. item:SetData(v,i,cur_suit_id_num)
  219. item:SetVisible(true)
  220. item:SetPosition(0,y_list[i])
  221. end
  222. end
  223. --更新饰品属性列表
  224. function BagEquipOrangeSuitView:UpdateAttrItemList2( )
  225. for k,v in pairs(self.attr_item_list2) do
  226. v:SetVisible(false)
  227. end
  228. local suit_cfg_list = self.model:GetEquipmentSuitCfg(self.suit_num,2)
  229. local cur_suit_id_num,suit_equip_pos_list = GoodsModel:getInstance():GetEquipSuitNum(self.suit_num,2)
  230. if not suit_cfg_list or TableSize(suit_cfg_list) == 0 then return end
  231. local anim_power_cfg = suit_cfg_list[#suit_cfg_list]
  232. local power = anim_power_cfg and self.model:MathGreatAttrFighting(anim_power_cfg.attr,anim_power_cfg.suit_num <= cur_suit_id_num) or 0
  233. self.fightText2_txt.text = power
  234. local item_list = suit_cfg_list
  235. local offer_x = 0
  236. local offer_y = 11
  237. local x = 0
  238. local y = 0
  239. for i, v in ipairs(item_list) do
  240. local item = self.attr_item_list2[i]
  241. if item == nil then
  242. item = BagEquipOrangeSuitAttrItem.New(self.attrCon2,nil,self.layer_name)
  243. self.attr_item_list2[i] = item
  244. end
  245. item:SetData(v,i,cur_suit_id_num)
  246. item:SetVisible(true)
  247. item:SetPosition(0,-(BagEquipOrangeSuitAttrItem.Height+offer_y)*(i - 1))
  248. end
  249. end
  250. function BagEquipOrangeSuitView:DestroySuccess( )
  251. for k,v in pairs(self.tab_list) do
  252. v:DeleteMe()
  253. v = nil
  254. end
  255. self.tab_list = {}
  256. for i,v in ipairs(self.attr_item_list) do
  257. v:DeleteMe()
  258. v = nil
  259. end
  260. self.attr_item_list = {}
  261. for i,v in ipairs(self.attr_item_list2) do
  262. v:DeleteMe()
  263. v = nil
  264. end
  265. self.attr_item_list2 = {}
  266. for series,v in pairs(self.look_suit_cache) do--缓存列表的套装全部换成已查看属性
  267. local active_list = EquipModel:getInstance().suit_attr_active_list[series]
  268. if active_list then
  269. for kk,vv in pairs(active_list) do
  270. for kkk,vvv in ipairs(vv) do
  271. vvv[3] = true
  272. end
  273. end
  274. end
  275. end
  276. end