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

244 行
6.4 KiB

  1. PetShareLookView = PetShareLookView or BaseClass(BaseView)
  2. local PetShareLookView = PetShareLookView
  3. function PetShareLookView:__init()
  4. self.base_file = "pet"
  5. self.layout_file = "PetShareLookView"
  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. --16311
  34. function PetShareLookView:Open(vo)
  35. self.data = vo
  36. self.data.pet_stage = math.ceil((vo.pet_star-0.5)/5)
  37. BaseView.Open(self)
  38. end
  39. function PetShareLookView:LoadSuccess()
  40. local nodes = {
  41. "modelCon",
  42. "sexFlag:img",
  43. "raceIcon:img",
  44. "skillCon",
  45. "attrScrollView/Viewport/Content", "attrScrollView",
  46. "playerHeadCon",
  47. "playerVipCon",
  48. "petName:tmp",
  49. "petPower:txt",
  50. "playerPower:tmp",
  51. "playerName:tmp",
  52. "petPowerLabel",
  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,nil,nil,nil)
  60. self.tabWindowComponent:SetBackgroundRes("pet_share_look_bg")
  61. self.tabWindowComponent:SetTitleText("宠物分享")
  62. -- local function bg_back_func( ... )
  63. -- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
  64. -- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
  65. -- end
  66. -- self:MoveUIToBack(self.tabWindowComponent.win_bg)
  67. -- end
  68. -- if self.background_wnd then
  69. -- bg_back_func()
  70. -- else
  71. -- self.bg_back_func = bg_back_func
  72. -- end
  73. self.star = {}--星级
  74. for i=1,5 do
  75. self.star[i] = self:GetChild("starCon/star"..i):GetComponent("Image")
  76. end
  77. self.roleItem = HeadRoleItem.New(self.playerHeadCon)
  78. self.roleItem:SetItemSize(84,84)
  79. self.vipItem = RoleVipItem.New(self.playerVipCon)
  80. end
  81. function PetShareLookView:AddEvent()
  82. end
  83. function PetShareLookView:OpenSuccess()
  84. local pet_cfg = self.model:GetPetCfg(self.data.pet_id, self.data.pet_star)
  85. --星级
  86. local max_star = self.model:GetMaxStarInStage(self.data.pet_id,self.data.pet_star)
  87. local show_star = self.model:GetNowShowPetStar(self.data.pet_star)
  88. for i=1,show_star do
  89. lua_resM:setImageSprite(self, self.star[i], "pet_asset", PetConst.stage_message[self.data.pet_stage].star_res,true)
  90. self.star[i].gameObject:SetActive(true)
  91. end
  92. for i=show_star+1,max_star do
  93. self.star[i].gameObject:SetActive(false)
  94. end
  95. --名字
  96. self.petName_tmp.text = Trim(pet_cfg.pet_name)
  97. SetAnchoredPositionX(self.raceIcon,-176-self.petName_tmp.preferredWidth/2-20)
  98. --种族
  99. lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..pet_cfg.pet_race,true)
  100. --战力
  101. self.petPower_txt.text = self.data.pet_power
  102. SetAnchoredPositionX(self.petPowerLabel,265-self.petPower_txt.preferredWidth/2-56)
  103. --属性栏 先把data转换为我们可用的data
  104. local attr_data = {}
  105. for i,v in ipairs(self.data.attr_list) do
  106. attr_data[i] = {v.attr_id,v.attr_value}
  107. end
  108. self:UpdateAttrList(attr_data)
  109. --技能栏
  110. self:UpdateSkillList()
  111. --宠物模型展示
  112. local res_data = {
  113. layer_name = "Activity",
  114. father_node = self,
  115. transform = self.modelCon,
  116. fashion_type = FuncOpenModel.TypeId.Pet,
  117. figure_id = pet_cfg.figure_id,
  118. position = Vector3(0,-160,-500),
  119. ui_model_type = UIModelCommon.ModelType.Model,
  120. }
  121. FuncOpenModel:getInstance():SetModelRes(res_data)
  122. --玩家数据
  123. local head_data = {
  124. vo = {
  125. id = self.data.role_id,
  126. server_id = self.data.ser_id,
  127. career = self.data.career,
  128. sex = self.data.sex,
  129. turn = self.data.turn,
  130. picture_ver = self.data.picture_ver,
  131. picture = self.data.picture,
  132. profile_photo_id = self.data.profile_photo_id,
  133. dress_board_id = self.data.dress_id,
  134. level = self.data.level,
  135. }
  136. }
  137. self.roleItem:SetData(head_data)
  138. self.playerName_tmp.text = self.data.name
  139. self.playerPower_tmp.text = self.data.fighting
  140. self.vipItem:SetData(self.data.vip_flag,self.data.sup_vip_type)
  141. if self.data.sex==1 then
  142. lua_resM:setImageSprite(self,self.sexFlag_img,"common_asset","com_boy",true)
  143. elseif self.data.sex==2 then
  144. lua_resM:setImageSprite(self,self.sexFlag_img,"common_asset","com_girl",true)
  145. end
  146. SetAnchoredPositionX(self.sexFlag,870+self.playerName_tmp.preferredWidth+3)
  147. end
  148. function PetShareLookView:UpdateAttrList(attr_list)
  149. if not self.attr_list_com then
  150. self.attr_list_com = self:AddUIComponent(UI.ItemListCreator)
  151. end
  152. local info = {
  153. data_list = attr_list,
  154. item_con = self.Content,
  155. item_class = PetShareAttrItem,
  156. -- item_width = 193,
  157. item_height = 49,
  158. space_x = -7,
  159. space_y = 0,
  160. start_x = 1,
  161. start_y = 0,
  162. scroll_view = self.attrScrollView,
  163. create_frequency = 0.01,
  164. on_update_item = function(item, i, v)
  165. item:SetData(i,v,true)
  166. end,
  167. }
  168. self.attr_list_com:UpdateItems(info)
  169. end
  170. function PetShareLookView:UpdateSkillList( )
  171. local skill_table = {}
  172. for i=1,4 do
  173. local data = self.model:GetPetSkillCfg(self.data.pet_id,i,self.data.is_awaken==1)--通过id和槽位获取技能配置
  174. if data then
  175. table.insert(skill_table,data)
  176. end
  177. end
  178. for k,v in pairs(self.skill_item_list) do
  179. v:SetVisible(false)
  180. end
  181. for i,v in ipairs(skill_table) do
  182. local item = self.skill_item_list[i]
  183. if not item then
  184. item = PetShareSkillItem.New(self.skillCon)
  185. self.skill_item_list[i] = item
  186. end
  187. item:SetVisible(true)
  188. item:SetData(v,self.data.pet_id,self.data)
  189. item:SetPosition(21+82*(i-1),12)
  190. end
  191. end
  192. function PetShareLookView:DestroySuccess( )
  193. if self.roleItem then
  194. self.roleItem:DeleteMe()
  195. self.roleItem = nil
  196. end
  197. if self.vipItem then
  198. self.vipItem:DeleteMe()
  199. self.vipItem = nil
  200. end
  201. for i, v in ipairs(self.skill_item_list) do
  202. v:DeleteMe()
  203. end
  204. self.skill_item_list = {}
  205. if self.tabWindowComponent then
  206. self.tabWindowComponent:DeleteMe()
  207. self.tabWindowComponent = nil
  208. end
  209. end