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

180 line
7.2 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 圣物系统魂环装备界面
  4. -- *>
  5. PsionicEffectEquipView = PsionicEffectEquipView or BaseClass(BaseView)
  6. local PsionicEffectEquipView = PsionicEffectEquipView
  7. function PsionicEffectEquipView:__init()
  8. self.base_file = "psionic"
  9. self.layout_file = "PsionicEffectEquipView"
  10. self.layer_name = "Activity"
  11. self.destroy_imm = true
  12. self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
  13. self.model = PsionicModel:getInstance()
  14. self.load_callback = function ()
  15. self:LoadSuccess()
  16. self:AddEvent()
  17. end
  18. self.open_callback = function ( )
  19. self:UpdateView()
  20. end
  21. self.destroy_callback = function ( )
  22. self:DestroySuccess()
  23. end
  24. end
  25. function PsionicEffectEquipView:Open( )
  26. --self.data = data
  27. BaseView.Open(self)
  28. end
  29. function PsionicEffectEquipView:LoadSuccess()
  30. local nodes = {
  31. "content",
  32. -- 魂环1
  33. "content/node1",
  34. "content/node1/role_con1",
  35. "content/node1/equip_btn1:obj:img", "content/node1/equip_btn1/equip_btn1_lb:tmp", "content/node1/equip_btn1/equip_btn1_red:obj",
  36. "content/node1/cond_bg1:img",
  37. "content/node1/equip_cond1:tmp",
  38. "content/node1/effect_name1:tmp",
  39. -- 魂环2
  40. "content/node2",
  41. "content/node2/role_con2",
  42. "content/node2/equip_btn2:obj:img", "content/node2/equip_btn2/equip_btn2_lb:tmp", "content/node2/equip_btn2/equip_btn2_red:obj",
  43. "content/node2/cond_bg2:img",
  44. "content/node2/equip_cond2:tmp",
  45. "content/node2/effect_name2:tmp",
  46. -- 魂环3
  47. "content/node3",
  48. "content/node3/role_con3",
  49. "content/node3/equip_btn3:obj:img", "content/node3/equip_btn3/equip_btn3_lb:tmp", "content/node3/equip_btn3/equip_btn3_red:obj",
  50. "content/node3/cond_bg3:img",
  51. "content/node3/equip_cond3:tmp",
  52. "content/node3/effect_name3:tmp",
  53. }
  54. self:GetChildren(nodes)
  55. local close_callback = function()
  56. self:Close()
  57. end
  58. self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, close_callback, self.background_wnd,
  59. self.transform, UITabWindow.SizeSmallNoTab)
  60. self.tabWindowComponent:SetBackgroundRes("ps_effect_equip_bg")
  61. self.tabWindowComponent:SetTitleText("圣环激活")
  62. end
  63. function PsionicEffectEquipView:AddEvent()
  64. local function click_event(target)
  65. if target == self.equip_btn1_obj then
  66. self:OnEquipEffectBtnClick(1)
  67. elseif target == self.equip_btn2_obj then
  68. self:OnEquipEffectBtnClick(2)
  69. elseif target == self.equip_btn3_obj then
  70. self:OnEquipEffectBtnClick(3)
  71. end
  72. end
  73. AddClickEvent(self.equip_btn1_obj, click_event)
  74. AddClickEvent(self.equip_btn2_obj, click_event)
  75. AddClickEvent(self.equip_btn3_obj, click_event)
  76. local function update_effect_status()
  77. self:UpdateEffectStatus()
  78. end
  79. self:BindEvent(self.model, PsionicConst.UPDATE_PSIONIC_EFFECT, update_effect_status)
  80. local function update_btns_red(tab_id)
  81. if tab_id and tab_id == PsionicConst.TabId.PArmor then
  82. self:UpdateBtnsRed()
  83. end
  84. end
  85. self:BindEvent(self.model, PsionicConst.UPDATE_RED_BY_TABID, update_btns_red)
  86. end
  87. function PsionicEffectEquipView:UpdateView()
  88. self:UpdateBasicData()
  89. self:UpdateEffectStatus()
  90. self:UpdateBtnsRed()
  91. end
  92. function PsionicEffectEquipView:UpdateBasicData( )
  93. -- 加载模型
  94. local function create_role_model(index)
  95. local res_data = {
  96. father_node = self,
  97. layer_name = self.layer_name,
  98. transform = self["role_con" .. index],
  99. fashion_type = FuncOpenModel.TypeId.Clothes,
  100. size = Vector2(720,720),
  101. raycast_size = Vector2(240, 380),
  102. scale = 160,
  103. position = Vector3(-10, 10, -500),
  104. ui_model_type = UIModelCommon.ModelType.Model,
  105. psionic_effect = "effect_hunhuan_00" .. index,
  106. }
  107. FuncOpenModel:getInstance():SetModelRes(res_data)
  108. end
  109. create_role_model(1)
  110. create_role_model(2)
  111. create_role_model(3)
  112. -- 加载名称
  113. self.effect_name1_tmp.text = PsionicConst.EffectName[1]
  114. self.effect_name2_tmp.text = PsionicConst.EffectName[2]
  115. self.effect_name3_tmp.text = PsionicConst.EffectName[3]
  116. end
  117. -- 更新圣环当前状态
  118. function PsionicEffectEquipView:UpdateEffectStatus( )
  119. local stage, color_list = self.model:GetPsionicEffectStage()
  120. local status_cookie = self.model:GetPsionicEffectShowStatus()
  121. local cur_effect_index = status_cookie and status_cookie[1] or 0
  122. local function update_status(index)
  123. if stage >= index then -- 可以佩戴
  124. self["cond_bg" .. index .. "_img"].enabled = false
  125. self["equip_cond" .. index .. "_tmp"].text = ""
  126. self["equip_btn" .. index .. "_obj"]:SetActive(true)
  127. self["equip_btn" .. index .. "_lb_tmp"].text = cur_effect_index == index and "卸下" or "穿戴"
  128. SetTMPSharedMaterial(self["equip_btn" .. index .. "_lb_tmp"], cur_effect_index == index and
  129. ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn or
  130. ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  131. lua_resM:setImageSprite(self, self["equip_btn" .. index .."_img"], "alphaCommon_asset", cur_effect_index == index and
  132. "tyui_middlel_btn1" or "tyui_middlel_btn2")
  133. else -- 装备品质达不到要求
  134. local condition = PsionicConst.EffectCondition[index]
  135. self["cond_bg" .. index .. "_img"].enabled = true
  136. self["equip_cond" .. index .. "_tmp"].text =
  137. string.format("穿戴<color=%s>%s</color>/<color=#ffffff>4</color>件<color=%s>%s圣物</color>可激活",
  138. ColorUtil.RED_DARK, color_list[condition.color], condition.color_hex, condition.str)
  139. self["equip_btn" .. index .. "_obj"]:SetActive(false)
  140. end
  141. end
  142. update_status(1)
  143. update_status(2)
  144. update_status(3)
  145. end
  146. function PsionicEffectEquipView:UpdateBtnsRed( )
  147. local status_cookie = self.model:GetPsionicEffectShowStatus()
  148. local red_list = status_cookie and status_cookie[3] or {}
  149. self.equip_btn1_red_obj:SetActive(red_list[1] and true or false)
  150. self.equip_btn2_red_obj:SetActive(red_list[2] and true or false)
  151. self.equip_btn3_red_obj:SetActive(red_list[3] and true or false)
  152. end
  153. function PsionicEffectEquipView:OnEquipEffectBtnClick(index)
  154. local status_cookie = self.model:GetPsionicEffectShowStatus()
  155. local cur_effect_index = status_cookie and status_cookie[1] or 0
  156. if status_cookie and status_cookie[3] and status_cookie[3][index] then -- 存在红点,则需要消除红点并存储缓存
  157. self.model:SavePsionicEffectStatusRed(index, false, true)
  158. end
  159. self.model:SavePsionicEffectShowStatus(cur_effect_index == index and 0 or index)
  160. Message.show(cur_effect_index == index and "卸下成功" or "穿戴成功", "success")
  161. end
  162. function PsionicEffectEquipView:DestroySuccess( )
  163. if self.tabWindowComponent then
  164. self.tabWindowComponent:DeleteMe()
  165. self.tabWindowComponent = nil
  166. end
  167. end