源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

241 行
8.6 KiB

  1. CSMainMilitaryRanksDetailsView = CSMainMilitaryRanksDetailsView or BaseClass(BaseItem)
  2. local CSMainMilitaryRanksDetailsView = CSMainMilitaryRanksDetailsView
  3. function CSMainMilitaryRanksDetailsView:__init()
  4. self.base_file = "csMain"
  5. self.layout_file = "CSMainMilitaryRanksDetailsView"
  6. self.model = CSMainModel:getInstance()
  7. self.is_show_next = false
  8. self:Load()
  9. end
  10. function CSMainMilitaryRanksDetailsView:Load_callback()
  11. self.nodes = {
  12. "advanceBtn:obj:img", "advanceBtn/advanceRed:obj", "advanceBtn/advanceText:tmp",
  13. "awardCon:obj", "conditionCon1:obj",
  14. "noneTip:tmp",
  15. "conditionCon1/conditionDes1:tmp", "conditionCon1/conditionDot1:img",
  16. "conditionCon2/conditionDes2:tmp", "conditionCon2:obj", "conditionCon2/conditionDot2:obj:img",
  17. "militaryCon1/militaryRanksIcon1:img", "militaryCon1/fight1:txt",
  18. "militaryCon1/attrScrollView1/Viewport/attrContent1", "militaryCon1/attrScrollView1",
  19. "militaryCon2/militaryRanksIcon2:img", "militaryCon2/fight2:txt",
  20. "militaryCon2/attrScrollView2/Viewport/attrContent2", "militaryCon2/attrScrollView2",
  21. }
  22. self:GetChildren(self.nodes)
  23. self.cost_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.awardCon)
  24. self.cost_item:SetItemSize(78,78)
  25. self.cost_item:SetAnchoredPosition(0,0)
  26. self:AddEvents()
  27. if self.need_refreshData then
  28. self:UpdateView()
  29. end
  30. end
  31. function CSMainMilitaryRanksDetailsView:AddEvents( )
  32. local on_click = function ( click_obj )
  33. if self.advanceBtn_obj == click_obj then
  34. if self.can_evolve_state then
  35. self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60305)
  36. else
  37. if self.is_show_next then
  38. Message.show("条件未达成")
  39. else
  40. Message.show("已升至满阶")
  41. end
  42. end
  43. end
  44. end
  45. AddClickEvent(self.advanceBtn_obj, on_click)
  46. --军衔进阶成功
  47. local function on_update_military_details()
  48. self:UpdateView()
  49. end
  50. self:BindEvent(self.model, CSMainConst.CS_MAIN_MILITARY_ADVANCE_SUCCESE, on_update_military_details)
  51. --晋升令刷新
  52. local function update_cs_main_goods_num()
  53. local military_ranks = self.model:GetCSMainMilitaryRanks()
  54. local next_military_cfg = self.model:GetCSMainLegionMilitaryRanksCfg(military_ranks+1)
  55. if next_military_cfg then
  56. self:UpdateEvolveState()
  57. end
  58. end
  59. self:BindEvent(self.model, CSMainConst.UPDATE_CS_MAIN_GOODS_NUM,update_cs_main_goods_num)
  60. local function update_power_change()
  61. self:UpdateEvolveState()
  62. end
  63. self.update_power_change_id = RoleManager.Instance.mainRoleInfo:BindOne("fighting", update_power_change)
  64. end
  65. function CSMainMilitaryRanksDetailsView:UpdateView( )
  66. local military_ranks = self.model:GetCSMainMilitaryRanks()
  67. local next_military_ranks = military_ranks + 1
  68. local now_military_cfg = self.model:GetCSMainLegionMilitaryRanksCfg(military_ranks)
  69. if not now_military_cfg then return end
  70. local next_military_cfg = self.model:GetCSMainLegionMilitaryRanksCfg(military_ranks+1)
  71. local have_next = next_military_cfg and true or false
  72. --左侧
  73. lua_resM:setOutsideImageSprite(self, self.militaryRanksIcon1_img, GameResPath.GetMilitaryImage("military_ranks_"..military_ranks), true)
  74. local attr_data_left = stringtotable(now_military_cfg.attr)
  75. self.fight1_txt.text = "f"..GetFighting(attr_data_left)
  76. if not self.item_list_com_1 then
  77. self.item_list_com_1 = self:AddUIComponent(UI.ItemListCreator)
  78. end
  79. local info = {
  80. data_list = attr_data_left,
  81. item_con = self.attrContent1,
  82. item_class = CSMainMilitaryRanksAttrItem,
  83. item_width = 160,
  84. item_height = 30,
  85. -- space_x = 0,
  86. -- space_y = 0,
  87. start_x = 6,
  88. start_y = -5,
  89. scroll_view = self.attrScrollView1,
  90. create_frequency = 0.01,
  91. on_update_item = function(item, i, v)
  92. item:SetData(v)
  93. end,
  94. }
  95. self.item_list_com_1:UpdateItems(info)
  96. --右侧
  97. if not next_military_cfg then--表示满级了,右侧也显示成当前军衔
  98. next_military_cfg = now_military_cfg
  99. next_military_ranks = military_ranks
  100. self.is_show_next = false
  101. else
  102. self.is_show_next = true
  103. end
  104. lua_resM:setOutsideImageSprite(self, self.militaryRanksIcon2_img, GameResPath.GetMilitaryImage("military_ranks_"..next_military_ranks), true)
  105. local attr_data_right = stringtotable(next_military_cfg.attr)
  106. self.fight2_txt.text = "f"..GetFighting(attr_data_right)
  107. if not self.item_list_com_2 then
  108. self.item_list_com_2 = self:AddUIComponent(UI.ItemListCreator)
  109. end
  110. local info = {
  111. data_list = attr_data_right,
  112. item_con = self.attrContent2,
  113. item_class = CSMainMilitaryRanksAttrItem,
  114. item_width = 160,
  115. item_height = 30,
  116. -- space_x = 0,
  117. -- space_y = 0,
  118. start_x = 6,
  119. start_y = -5,
  120. scroll_view = self.attrScrollView2,
  121. create_frequency = 0.01,
  122. on_update_item = function(item, i, v)
  123. item:SetData(v,self.is_show_next)
  124. end,
  125. }
  126. self.item_list_com_2:UpdateItems(info)
  127. if have_next then
  128. self.conditionCon1_obj:SetActive(true)
  129. self.conditionCon2_obj:SetActive(true)
  130. self.noneTip_tmp.text = ""
  131. self.awardCon_obj:SetActive(true)
  132. self:UpdateEvolveState()
  133. else
  134. self.conditionCon1_obj:SetActive(false)
  135. self.conditionCon2_obj:SetActive(false)
  136. self.noneTip_tmp.text = "已升至满阶\n后续敬请期待"
  137. self.awardCon_obj:SetActive(false)
  138. SetImageGray(self.advanceBtn_img,true)
  139. SetTMPSharedMaterial(self.advanceText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  140. self.advanceRed_obj:SetActive(false)
  141. end
  142. end
  143. function CSMainMilitaryRanksDetailsView:UpdateEvolveState( )
  144. local military_ranks = self.model:GetCSMainMilitaryRanks()
  145. local now_military_cfg = self.model:GetCSMainLegionMilitaryRanksCfg(military_ranks)
  146. if not now_military_cfg then return end
  147. --战力需达标
  148. local enough_power = RoleManager.Instance.mainRoleInfo.fighting >= now_military_cfg.need
  149. if enough_power then
  150. lua_resM:setImageSprite(self, self.conditionDot2_img, "csMain_asset", "cs_main_condition_dot_true")
  151. self.conditionDes2_tmp.text = string.format("战力达到 <#2CF86F>%s</color><#a9c1e1>/</color><#fdffc2>%s</color>", CalUnitNumWithMaxNum(RoleManager.Instance.mainRoleInfo.fighting), CalUnitNumWithMaxNum(now_military_cfg.need))
  152. else
  153. lua_resM:setImageSprite(self, self.conditionDot2_img, "csMain_asset", "cs_main_condition_dot_false")
  154. self.conditionDes2_tmp.text = string.format("战力达到 <#ff203a>%s</color><#a9c1e1>/</color><#fdffc2>%s</color>", CalUnitNumWithMaxNum(RoleManager.Instance.mainRoleInfo.fighting), CalUnitNumWithMaxNum(now_military_cfg.need))
  155. end
  156. --晋升令
  157. local cost_goods_data = stringtotable(now_military_cfg.cost)
  158. local no_need_cost = false
  159. if not cost_goods_data[1] or (cost_goods_data[1] and cost_goods_data[1][3] == 0)then
  160. cost_goods_data[1] = {0,100019,0}
  161. no_need_cost = true
  162. end
  163. if no_need_cost then
  164. self.conditionCon1_obj:SetActive(false)
  165. self.awardCon_obj:SetActive(false)
  166. else
  167. self.conditionCon1_obj:SetActive(true)
  168. self.awardCon_obj:SetActive(true)
  169. end
  170. local goods_type_id = cost_goods_data[1][2]
  171. local cost_need_num = cost_goods_data[1][3]
  172. local cost_have_num = GoodsModel:getInstance():GetTypeGoodsNum(goods_type_id)
  173. local enough_cost = cost_have_num >= cost_need_num
  174. local cost_color = enough_cost and ColorUtil.GREEN_TIPS or ColorUtil.RED_DARK
  175. self.conditionDes1_tmp.text = string.format("持有晋升指令%s个<#a9c1e1>(<%s>%s</color>/%s)</color>",cost_need_num,cost_color,cost_have_num,cost_need_num)
  176. local cost_dot_res = enough_cost and "cs_main_condition_dot_true" or "cs_main_condition_dot_false"
  177. lua_resM:setImageSprite(self, self.conditionDot1_img, "csMain_asset",cost_dot_res)
  178. self.can_evolve_state = enough_power and enough_cost
  179. if self.cost_item then
  180. self.cost_item:SetData(goods_type_id)
  181. local num_str = HtmlColorTxt(cost_have_num, cost_have_num < cost_need_num and ColorUtil.RED_DARK or ColorUtil.GREEN_TIPS).."/".. cost_need_num
  182. self.cost_item:IsGetGoods(true,num_str,false)
  183. end
  184. if self.can_evolve_state then
  185. SetImageGray(self.advanceBtn_img,false)
  186. self.advanceRed_obj:SetActive(true)
  187. SetTMPSharedMaterial(self.advanceText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  188. else
  189. SetImageGray(self.advanceBtn_img,true)
  190. self.advanceRed_obj:SetActive(false)
  191. SetTMPSharedMaterial(self.advanceText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  192. end
  193. end
  194. function CSMainMilitaryRanksDetailsView:SetData( data )
  195. self.data = data
  196. if self.is_loaded then
  197. self.need_refreshData = false
  198. self:UpdateView()
  199. else
  200. self.need_refreshData = true
  201. end
  202. end
  203. function CSMainMilitaryRanksDetailsView:__delete( )
  204. if self.cost_item then
  205. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem,self.cost_item)
  206. self.cost_item = nil
  207. end
  208. if self.update_power_change_id then
  209. RoleManager.Instance.mainRoleInfo:UnBind(self.update_power_change_id)
  210. self.update_power_change_id = nil
  211. end
  212. end