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

326 regels
11 KiB

4 weken geleden
  1. EquipExamUpgradeView = EquipExamUpgradeView or BaseClass(BaseItem)
  2. local EquipExamUpgradeView = EquipExamUpgradeView
  3. local table_insert = table.insert
  4. local SCROLLITEM_OFFSET = {
  5. [0] = 5 - 130,
  6. [1] = 5 + 500,
  7. [2] = 5 + 300,
  8. [3] = 5 + 200,
  9. [4] = 5,
  10. }
  11. function EquipExamUpgradeView:__init()
  12. self.base_file = "equipCollect"
  13. self.layout_file = "EquipExamUpgradeView"
  14. self.model = EquipCollectModel:GetInstance()
  15. self.equip_model = EquipModel:getInstance()
  16. self.cur_select_index = 1
  17. -- self.cur_select_skill = 1
  18. self:Load()
  19. end
  20. function EquipExamUpgradeView:Load_callback()
  21. self.nodes = {
  22. "bg:raw", "item_scroll", "item_scroll/Viewport/item_con", "btn:obj:imgex", "power_text:txt", "btn/btn_text:tmp",
  23. "btn/btn_red:obj", "skill_con/skill_title_text:tmp", "attr_btn:obj",
  24. "attr_text1:tmp", "attr_text2:tmp", "light_image:obj", "condition_text:tmp",
  25. "skill_con:obj", "skill_con/click_con1:obj", "skill_con/skill_image1:img:obj", "skill_con/skill_image2:img:obj",
  26. "skill_con/select_image1:obj", "skill_con/select_image2:obj", "skill_con/click_con2:obj", "skill_con/skill_text:tmp",
  27. }
  28. self:GetChildren(self.nodes)
  29. lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("equipExam_upgrade_bg"),false)
  30. self:AddEvents()
  31. if self.need_refreshData then
  32. self:UpdateView()
  33. end
  34. end
  35. function EquipExamUpgradeView:AddEvents( )
  36. --更新星级套装红点
  37. local function equipStarRedFunc( ... )
  38. self:UpdateView(true)
  39. end
  40. self:BindEvent(EquipModel:getInstance(), EquipModel.INFO_UPDATE, equipStarRedFunc)
  41. local function on_click( target )
  42. if target == self.click_con1_obj then
  43. if self.is_choice then
  44. return
  45. end
  46. self:SwitchSkill(1)
  47. elseif target == self.click_con2_obj then
  48. if self.is_choice then
  49. return
  50. end
  51. self:SwitchSkill(2)
  52. elseif target == self.btn_obj then
  53. if self.can_click then
  54. EquipModel:getInstance():Fire(EquipModel.REQUEST_CCMD_EVENT, 15206, self.cur_select_skill or 0)
  55. else
  56. if self.is_active then
  57. Message.show("当前星级已经激活")
  58. else
  59. Message.show("之前还存在未激活的星级,请先激活")
  60. end
  61. end
  62. elseif target == self.attr_btn_obj then
  63. if self.real_star and self.real_star > 0 then
  64. self.model:Fire(EquipCollectConst.OPEN_EC_UPGRADE_ATTR_VIEW)
  65. else
  66. Message.show("还没激活任何属性哦~")
  67. end
  68. end
  69. end
  70. AddClickEvent(self.click_con1_obj, on_click)
  71. AddClickEvent(self.click_con2_obj, on_click)
  72. AddClickEvent(self.btn_obj, on_click)
  73. AddClickEvent(self.attr_btn_obj, on_click)
  74. end
  75. function EquipExamUpgradeView:UpdateView(need_scroll_to )
  76. local cfg_list = Config.Equipmentstartotal
  77. local list_index = 0
  78. for k,v in pairsByKeys(cfg_list) do
  79. list_index = list_index + 1
  80. v.list_index = list_index
  81. end
  82. self.real_star = EquipModel:getInstance().equip_activie_stars--当前激活星级
  83. self.sum_star = EquipModel:getInstance().equip_sum_stars--可以激活的星级
  84. self.server_data = self.model:GetEquipExamSkillInfo()
  85. self.cur_star_lv = 3
  86. for k,v in pairsByKeys(cfg_list) do
  87. if v.stars <= self.real_star then
  88. self.cur_star_lv = v.stars
  89. else
  90. break
  91. end
  92. end
  93. --总属性
  94. if self.real_star == 0 then
  95. self.power_text_txt.text = 0
  96. else
  97. local total_attr = stringtotable(cfg_list[self.cur_star_lv].attr)
  98. local power = GetFighting(total_attr)
  99. --以下是算技能战力
  100. local skill_attr = {}
  101. for k,v in pairs(self.server_data) do
  102. if cfg_list[v.id] then
  103. local skill_data = stringtotable(cfg_list[v.id].branch)
  104. power = power + GetFighting(skill_data[v.choice][2])
  105. end
  106. end
  107. self.power_text_txt.text = power
  108. end
  109. local next_star = 0
  110. self.cur_select_data = nil
  111. self.is_max = false
  112. for k,v in pairsByKeys(cfg_list) do
  113. if v.stars > self.real_star then--配置星级大于激活星级并且小于装备总星级
  114. next_star = v.stars
  115. self.cur_select_data = v
  116. break
  117. end
  118. end
  119. if not self.cur_select_data then
  120. self.next_star = self.equip_model.equip_cfg_max_star
  121. self.cur_select_data = cfg_list[self.next_star]
  122. self.cur_select_skill = nil--已经激活
  123. self.is_max = true
  124. else
  125. self.next_star = next_star
  126. end
  127. self.cur_select_index = self.next_star
  128. local len = TableSize(cfg_list)
  129. local item_data = {}
  130. local count = 1
  131. for i,v in pairsByKeys(cfg_list) do
  132. if not item_data[count] then
  133. item_data[count] = {}
  134. end
  135. table_insert(item_data[count], v)
  136. if v.list_index % 5 == 0 then
  137. count = count + 1
  138. end
  139. end
  140. local function on_click( index, data )
  141. self:SetSelectItem(index,data)
  142. end
  143. self.item_list_creator = self.item_list_creator or self:AddUIComponent(UI.ItemListCreator)
  144. local info = {
  145. data_list = item_data,
  146. item_con = self.item_con,
  147. scroll_view = self.item_scroll,
  148. item_class = EquipExamUpgradeItem,
  149. item_width = 784,
  150. start_x = 0,
  151. start_y = 0,
  152. space_x = 0,
  153. create_frequency = 0.01,
  154. reuse_item_num = 3,
  155. on_update_item = function(item, i, v)
  156. self.last_index = self.cur_index
  157. self.cur_index = i
  158. item:SetData(v, i, self.last_index, self.cur_index, len, self.real_star, self.sum_star)
  159. item:SetCallBackFunc(on_click)
  160. item:SetSelect(self.cur_select_index)
  161. end,
  162. final_callback = function()
  163. local unit = self.cur_select_data.list_index % 5
  164. local offset = SCROLLITEM_OFFSET[unit] or 5
  165. self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_data.list_index/5), offset, {duration = 0.5})
  166. end,
  167. }
  168. self.item_list_creator:UpdateItems(info)
  169. self:SetSelectItem(self.cur_select_index, self.cur_select_data)
  170. --[[ local _, unit = math.modf(self.real_star/5)
  171. if need_scroll_to then
  172. if unit == 0 then
  173. print('====a[149] ===111====', data)
  174. self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5 + 300)
  175. else
  176. print('====a[152] =====222==', data)
  177. self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5)
  178. end
  179. -- elseif unit == 0 then
  180. -- print('====a[156] ===333====', data)
  181. -- self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5 + 300)
  182. -- elseif unit == 2 then
  183. -- print('====a[156] ===4444====', data)
  184. -- self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5)
  185. end--]]
  186. end
  187. function EquipExamUpgradeView:SetSelectItem(index, data)
  188. if self.cur_select_data.list_index % 5 ~= 0 then
  189. self.cur_select_skill = nil
  190. end
  191. self.cur_select_index = index
  192. self.cur_select_data = data
  193. self.item_list_creator:IterateItems(function ( item )
  194. item:SetSelect(self.cur_select_index)
  195. end)
  196. if self.cur_select_data.list_index % 5 == 0 then
  197. self:SwitchSkill(self.cur_select_skill)
  198. else
  199. self:UpdateBottomInfo()
  200. end
  201. end
  202. function EquipExamUpgradeView:SwitchSkill( index )
  203. self.cur_select_skill = index
  204. for i=1,2 do
  205. self["select_image"..i.."_obj"]:SetActive(i == self.cur_select_skill and not self.is_max)
  206. end
  207. self:UpdateBottomInfo()
  208. end
  209. function EquipExamUpgradeView:UpdateBottomInfo( )
  210. local is_skill_node = self.cur_select_data.list_index % 5 == 0
  211. local attr_data = is_skill_node and stringtotable(self.cur_select_data.branch) or stringtotable(self.cur_select_data.stage_attr)
  212. self.skill_con_obj:SetActive(is_skill_node and not self.is_max)
  213. if is_skill_node then
  214. local data = self.model:GetEquipExamSkillInfo()
  215. if data[self.cur_select_data.stars] then--如果是已经激活了的
  216. self.is_choice = true
  217. self.cur_select_skill = data[self.cur_select_data.stars].choice
  218. local skill_data = attr_data[self.cur_select_skill]
  219. for i=1,2 do
  220. lua_resM:setImageSprite(self,self["skill_image"..i.."_img"], "equipExam_asset", attr_data[i][3])
  221. self["skill_image"..i.."_obj"]:SetActive(true)
  222. self["select_image"..i.."_obj"]:SetActive(i == self.cur_select_skill)
  223. end
  224. for i=1,2 do
  225. if attr_data[self.cur_select_skill][2][i] then
  226. local attr_name = WordManager:GetProperties(skill_data[2][i][1])
  227. local attr_value = WordManager:GetPropertyValue(skill_data[2][i][1],skill_data[2][i][2])
  228. self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
  229. self.skill_text_tmp.text = string.format("%s:%s", attr_name, attr_value)
  230. else
  231. self["attr_text"..i.."_tmp"].text = ""
  232. end
  233. end
  234. self.skill_title_text_tmp.text = "已选择技能"
  235. else
  236. self.is_choice = false
  237. for i=1,2 do
  238. lua_resM:setImageSprite(self,self["skill_image"..i.."_img"], "equipExam_asset", attr_data[i][3])
  239. self["skill_image"..i.."_obj"]:SetActive(true)
  240. end
  241. if self.cur_select_skill then
  242. local skill_data = attr_data[self.cur_select_skill]
  243. for i=1,2 do
  244. if attr_data[self.cur_select_skill][2][i] then
  245. local attr_name = WordManager:GetProperties(skill_data[2][i][1])
  246. local attr_value = WordManager:GetPropertyValue(skill_data[2][i][1],skill_data[2][i][2])
  247. self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
  248. self.skill_text_tmp.text = string.format("%s:%s", attr_name, attr_value)
  249. else
  250. self["attr_text"..i.."_tmp"].text = ""
  251. end
  252. end
  253. else
  254. self.attr_text1_tmp.text = ""
  255. self.attr_text2_tmp.text = ""
  256. self.skill_text_tmp.text = "选择后查看属性"
  257. end
  258. self.skill_title_text_tmp.text = "请选择技能"
  259. end
  260. else
  261. for i=1,2 do
  262. if attr_data[i] then
  263. local attr_name = WordManager:GetProperties(attr_data[i][1])
  264. local attr_value = WordManager:GetPropertyValue(attr_data[i][1],attr_data[i][2])
  265. self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
  266. else
  267. self["attr_text"..i.."_tmp"].text = ""
  268. end
  269. self["skill_image"..i.."_obj"]:SetActive(false)
  270. self["select_image"..i.."_obj"]:SetActive(false)
  271. end
  272. end
  273. local color_str = ColorUtil.RED_DARK
  274. if self.sum_star >= self.cur_select_data.stars then
  275. color_str = ColorUtil.GREEN_DARK
  276. end
  277. local str = string.format("穿戴装备累计 %s 星共鸣(%s/%s)", self.cur_select_data.stars, HtmlColorTxt(self.sum_star, color_str), self.cur_select_data.stars)
  278. self.condition_text_tmp.text = str
  279. self.can_click = self.cur_select_index == self.next_star and not self.is_max
  280. self.is_active = self.cur_select_index < self.next_star or self.is_max
  281. if self.cur_select_index == self.next_star and not self.is_max then--可操作激活
  282. self.btn_red_obj:SetActive(self.sum_star >= self.cur_select_data.stars)
  283. self.btn_imgex.gray = self.sum_star < self.cur_select_data.stars
  284. self.btn_text_tmp.text = "激活"
  285. SetTMPSharedMaterial(self.btn_text_tmp, self.sum_star >= self.cur_select_data.stars and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  286. elseif self.cur_select_index < self.next_star or self.is_max then--已激活
  287. self.btn_text_tmp.text = "已激活"
  288. SetTMPSharedMaterial(self.btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  289. self.btn_imgex.gray = true
  290. self.btn_red_obj:SetActive(false)
  291. else
  292. self.btn_text_tmp.text = "激活"
  293. SetTMPSharedMaterial(self.btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  294. self.btn_imgex.gray = true
  295. self.btn_red_obj:SetActive(false)
  296. end
  297. end
  298. function EquipExamUpgradeView:SetData( data )
  299. self.data = data
  300. if self.is_loaded then
  301. self.need_refreshData = false
  302. self:UpdateView()
  303. else
  304. self.need_refreshData = true
  305. end
  306. end
  307. function EquipExamUpgradeView:__delete( )
  308. end