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

238 行
7.8 KiB

  1. PetEvolvePreView = PetEvolvePreView or BaseClass(BaseView)
  2. local PetEvolvePreView = PetEvolvePreView
  3. function PetEvolvePreView:__init()
  4. self.base_file = "pet"
  5. self.layout_file = "PetEvolvePreView"
  6. self.layer_name = "Activity"
  7. self.destroy_imm = true
  8. self.use_background = true
  9. self.change_scene_close = true
  10. self.hide_maincancas = true
  11. -- self.append_to_ctl_queue = true --是否要添加进界面堆栈
  12. self.need_show_money = false --是否要显示顶部的金钱栏
  13. self.is_set_zdepth = true
  14. self.click_bg_toClose = false
  15. self.close_fog = true
  16. self.click_bg_toClose = true
  17. self.blur_activity_bg = true
  18. -- self.use_show_anim = true
  19. -- self.use_hide_anim = true
  20. self.model = PetModel:getInstance()
  21. self.skill_item_list = {}
  22. self.load_callback = function ()
  23. self:LoadSuccess()
  24. self:AddEvent()
  25. end
  26. self.open_callback = function ( )
  27. self:OpenSuccess()
  28. end
  29. self.destroy_callback = function ( )
  30. self:DestroySuccess()
  31. end
  32. end
  33. function PetEvolvePreView:Open(pet_id)
  34. self.pet_id = pet_id
  35. BaseView.Open(self)
  36. end
  37. function PetEvolvePreView:LoadSuccess()
  38. local nodes = {
  39. "skillCon",--技能图标容器
  40. "modelCon1","modelCon2","modelCon3",--形象容器
  41. "desCon/Text_2:tmp", "desCon/Text_4:tmp",
  42. "confirmBtn:obj",
  43. "name:tmp", "raceIcon:img",
  44. }
  45. self:GetChildren(nodes)
  46. local close_callback = function()
  47. self:Close()
  48. end
  49. self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, close_callback, self.background_wnd,
  50. self.transform,UITabWindow.SizeSmallNoTab,nil,nil,nil)
  51. self.tabWindowComponent:SetBackgroundRes("pet_preview_bg")
  52. self.tabWindowComponent:SetTitleText("进化预览")
  53. -- local function bg_back_func( ... )
  54. -- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
  55. -- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
  56. -- end
  57. -- self:MoveUIToBack(self.tabWindowComponent.win_bg)
  58. -- end
  59. -- if self.background_wnd then
  60. -- bg_back_func()
  61. -- else
  62. -- self.bg_back_func = bg_back_func
  63. -- end
  64. end
  65. function PetEvolvePreView:AddEvent()
  66. local on_click = function ( click_obj )
  67. if self.confirmBtn_obj == click_obj then
  68. self:Close()
  69. end
  70. end
  71. AddClickEvent(self.confirmBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
  72. end
  73. function PetEvolvePreView:OpenSuccess()
  74. self:UpdateView()
  75. end
  76. function PetEvolvePreView:UpdateView()
  77. self:UpdateFigure()
  78. self:UpdateSkillCon()
  79. local star_1 = self.model:GetStarCanUnlockFigure(self.pet_id,2)
  80. local star_2 = self.model:GetStarCanUnlockFigure(self.pet_id,3)
  81. self.Text_2_tmp.text = star_1
  82. self.Text_4_tmp.text = star_2
  83. local pet_cfg = self.model:GetPetCfg(self.pet_id, 1)
  84. lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..pet_cfg.pet_race,true)
  85. self.name_tmp.text = Trim(pet_cfg.pet_name)
  86. SetAnchoredPositionX(self.raceIcon,7-self.name_tmp.preferredWidth/2-20)
  87. end
  88. --模型展示
  89. function PetEvolvePreView:UpdateFigure( )
  90. local pet_cfg_1 = self.model:GetPetCfg(self.pet_id, 1)
  91. local pet_cfg_2 = self.model:GetPetCfg(self.pet_id, 6)
  92. local pet_cfg_3 = self.model:GetPetCfg(self.pet_id, 11)
  93. -- 发行绿幕特殊处理
  94. -- 由于进化预览界面有可能出现在图鉴界面上,加之这是三个模型的展示,需要特殊处理
  95. local loaded_model_num = 0
  96. local function green_screen_callback()
  97. if LoginModel.ENABLE_GREEN_SCREEN then
  98. loaded_model_num = loaded_model_num + 1
  99. if loaded_model_num >= 3 then -- 当前是3个模型,完全加载完后再开启绿屏
  100. local function delay_method( )
  101. CheatModel:getInstance():SetupGreenScreenEffect(
  102. true,
  103. {
  104. lua_resM:GetPartModel(self, self.modelCon1),
  105. lua_resM:GetPartModel(self, self.modelCon2),
  106. lua_resM:GetPartModel(self, self.modelCon3)
  107. },
  108. 2, true
  109. )
  110. end
  111. if self.gs_delay_id then
  112. GlobalTimerQuest:CancelQuest(self.gs_delay_id)
  113. self.gs_delay_id = nil
  114. end
  115. self.gs_delay_id = setTimeout(delay_method, 0.02)
  116. end
  117. end
  118. end
  119. local res_data = {
  120. layer_name = "Activity",
  121. father_node = self,
  122. transform = self.modelCon1,
  123. fashion_type = FuncOpenModel.TypeId.Pet,
  124. figure_id = pet_cfg_1.figure_id,
  125. scale = PetConst.ModelShowConfig[pet_cfg_1.figure_id] and PetConst.ModelShowConfig[pet_cfg_1.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8,
  126. position = Vector3(0,-160,-500),
  127. -- position = Vector3(-15,90,0),
  128. raycast_size = Vector2(200,260),
  129. ui_model_type = UIModelCommon.ModelType.Model,
  130. callBack = green_screen_callback,
  131. }
  132. FuncOpenModel:getInstance():SetModelRes(res_data)
  133. local res_data = {
  134. layer_name = "Activity",
  135. father_node = self,
  136. transform = self.modelCon2,
  137. fashion_type = FuncOpenModel.TypeId.Pet,
  138. figure_id = pet_cfg_2.figure_id,
  139. scale = PetConst.ModelShowConfig[pet_cfg_2.figure_id] and PetConst.ModelShowConfig[pet_cfg_2.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8,
  140. position = Vector3(0,-160,-500),
  141. -- position = Vector3(0,90,0),
  142. raycast_size = Vector2(200,260),
  143. ui_model_type = UIModelCommon.ModelType.Model,
  144. callBack = green_screen_callback,
  145. }
  146. FuncOpenModel:getInstance():SetModelRes(res_data)
  147. local res_data = {
  148. layer_name = "Activity",
  149. father_node = self,
  150. transform = self.modelCon3,
  151. fashion_type = FuncOpenModel.TypeId.Pet,
  152. figure_id = pet_cfg_3.figure_id,
  153. scale = PetConst.ModelShowConfig[pet_cfg_3.figure_id] and PetConst.ModelShowConfig[pet_cfg_3.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8,
  154. position = Vector3(0,-160,-500),
  155. -- position = Vector3(25,90,0),
  156. raycast_size = Vector2(200,260),
  157. ui_model_type = UIModelCommon.ModelType.Model,
  158. callBack = green_screen_callback,
  159. }
  160. FuncOpenModel:getInstance():SetModelRes(res_data)
  161. end
  162. --技能展示
  163. function PetEvolvePreView:UpdateSkillCon( )
  164. local skill_table = {}
  165. for i=1,4 do
  166. local data = self.model:GetPetSkillCfg(self.pet_id,i)--通过id和槽位获取技能配置
  167. if data then
  168. table.insert(skill_table,data)
  169. end
  170. end
  171. local pet_data = self.model:GetPetListById(self.pet_id)
  172. local pet_stage = pet_data and pet_data.pet_stage or 0
  173. local pet_star = pet_data and pet_data.pet_star or 0
  174. for k,v in pairs(self.skill_item_list) do
  175. v:SetVisible(false)
  176. end
  177. for i,v in ipairs(skill_table) do
  178. local item = self.skill_item_list[i]
  179. if not item then
  180. item = PetSkillItem.New(self.skillCon)
  181. self.skill_item_list[i] = item
  182. end
  183. item:SetVisible(true)
  184. item:SetData(v,self.pet_id,2)
  185. item:SetPosition(7+83*(i-1),1)
  186. end
  187. end
  188. function PetEvolvePreView:DestroySuccess( )
  189. for i, v in ipairs(self.skill_item_list) do
  190. v:DeleteMe()
  191. end
  192. self.skill_item_list = {}
  193. if self.tabWindowComponent then
  194. self.tabWindowComponent:DeleteMe()
  195. self.tabWindowComponent = nil
  196. end
  197. -- 复原绿屏,同样要特殊处理
  198. if LoginModel.ENABLE_GREEN_SCREEN then
  199. if self.gs_delay_id then
  200. GlobalTimerQuest:CancelQuest(self.gs_delay_id)
  201. self.gs_delay_id = nil
  202. end
  203. if PetController.Instance.pet_base_view
  204. and PetController.Instance.pet_base_view:HasOpen() then -- 存在绿屏的主界面
  205. CheatModel:getInstance():DisabledGreenScreenEffect(true)
  206. LoginModel.ENABLE_GREEN_SCREEN = true
  207. -- 重新加载界面
  208. PetController.Instance.pet_base_view:SwitchTab(PetController.Instance.pet_base_view.current_index)
  209. else
  210. CheatModel:getInstance():DisabledGreenScreenEffect()
  211. end
  212. end
  213. end