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

163 行
5.2 KiB

  1. PetSupportASItem = PetSupportASItem or BaseClass(BaseItem)
  2. local PetSupportASItem = PetSupportASItem
  3. function PetSupportASItem:__init()
  4. self.base_file = "pet"
  5. self.layout_file = "PetSupportASItem"
  6. self.model = PetModel:getInstance()
  7. self:Load()
  8. end
  9. function PetSupportASItem:Load_callback()
  10. self.nodes = {
  11. "raceIcon:img:obj",
  12. "modelCon:obj",
  13. "petStarBg:obj",
  14. "petStarBg/star4:img","petStarBg/star1:img","petStarBg/star5:img","petStarBg/star2:img","petStarBg/star3:img",
  15. "name:tmp",
  16. "emptyClick:obj",
  17. "nameBg:obj",
  18. "standBg:img",
  19. "typeFlag:obj:img",
  20. "addImg:obj",
  21. }
  22. self:GetChildren(self.nodes)
  23. lua_resM:setImageSprite(self, self.standBg_img, "petExtra_asset","pet_support_model_di")
  24. SetLocalScale(self.addImg,0.8,0.8,0.8)
  25. SetAnchoredPositionY(self.addImg,-50)
  26. self.star = {
  27. [1] = self.star1_img,
  28. [2] = self.star2_img,
  29. [3] = self.star3_img,
  30. [4] = self.star4_img,
  31. [5] = self.star5_img
  32. }
  33. self:AddEvents()
  34. if self.need_refreshData then
  35. self:UpdateView()
  36. end
  37. end
  38. function PetSupportASItem:AddEvents( )
  39. local on_click = function ( click_obj )
  40. if self.emptyClick_obj == click_obj then--自身的点击按钮,打开上阵选择界面
  41. if self.is_slot_unlocked then
  42. self.model:Fire(PetConst.OPEN_PET_SUPPORT_CHOOSE_VIEW,self.support_slot)
  43. else--还没解锁这个槽位
  44. --弹出解锁提示框
  45. self.model:Fire(PetConst.OPEN_SUPPORT_UNLOCK_VIEW,self.support_slot)
  46. end
  47. end
  48. end
  49. AddClickEvent(self.emptyClick_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
  50. --上阵操作后刷新
  51. local on_update_item = function(support_slot)
  52. if self.support_slot == support_slot then
  53. local new_data = self.model:GetPetSupportDataBySlot(support_slot)
  54. self.data = new_data or 0
  55. local need_play_effect = true
  56. self:UpdateView(need_play_effect)
  57. end
  58. end
  59. self:BindEvent(self.model, PetConst.UPDATE_SUPPORT_ITEM, on_update_item)
  60. end
  61. function PetSupportASItem:UpdateView(need_play_effect)
  62. if not self.data or self.data == 0 then--无上阵
  63. self.nameBg_obj:SetActive(false)
  64. self.typeFlag_obj:SetActive(false)
  65. self.raceIcon_obj:SetActive(false)
  66. self.name_tmp.text = ""
  67. self.petStarBg_obj:SetActive(false)
  68. self.modelCon_obj:SetActive(false)
  69. --判断是否已解锁这个位置
  70. local support_slot_cfg = self.model:GetPetSupportSlotCfg(self.support_slot)
  71. local sum_stars = self.model:CountPetStars()
  72. if sum_stars >= support_slot_cfg.open_sum_star then--已解锁
  73. self.is_slot_unlocked = true--标记为已解锁
  74. else
  75. self.is_slot_unlocked = false
  76. end
  77. self.addImg_obj:SetActive(true)
  78. else--有上阵
  79. self.addImg_obj:SetActive(false)
  80. self.nameBg_obj:SetActive(true)
  81. self.typeFlag_obj:SetActive(true)
  82. self.is_slot_unlocked = true--标记为已解锁
  83. --获取宠物相关数据
  84. local pet_data = self.model:GetPetListById(self.data.pet_id)
  85. local pet_cfg = self.model:GetPetCfg(pet_data.pet_id, pet_data.pet_star)
  86. --设置种族icon
  87. self.raceIcon_obj:SetActive(true)
  88. lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..pet_cfg.pet_race,true)
  89. --名字等级
  90. self.name_tmp.text = Trim(pet_cfg.pet_name).." LV."..pet_data.pet_lv
  91. SetAnchoredPositionX(self.raceIcon,-11-self.name_tmp.preferredWidth/2-20)
  92. local type_flag_res = self.support_slot == 1 and "pet_support_1" or "pet_support_2"
  93. lua_resM:setImageSprite(self, self.typeFlag_img, "pet_asset", type_flag_res, true)
  94. SetAnchoredPositionX(self.typeFlag,-11+self.name_tmp.preferredWidth/2+35)
  95. --星星
  96. self.petStarBg_obj:SetActive(true)
  97. local max_star = self.model:GetMaxStarInStage(pet_data.pet_id,pet_data.pet_star)
  98. local show_star = self.model:GetNowShowPetStar(pet_data.pet_star)
  99. for i=1,show_star do
  100. lua_resM:setImageSprite(self, self.star[i], "pet_asset", PetConst.stage_message[pet_data.pet_stage].star_res,true)
  101. self.star[i].gameObject:SetActive(true)
  102. end
  103. for i=show_star+1,max_star do
  104. self.star[i].gameObject:SetActive(false)
  105. end
  106. --形象
  107. self.modelCon_obj:SetActive(true)
  108. local pos_x = 0
  109. if self.support_slot == 2 then
  110. pos_x = -25
  111. elseif self.support_slot == 3 then
  112. pos_x = 25
  113. end
  114. local pokemon_diamond_effect = self.model:GetPokemonDiamondEffectRes(self.data.pet_id)
  115. local res_data = {
  116. father_node = self,
  117. father_node = self,
  118. transform = self.modelCon,
  119. fashion_type = FuncOpenModel.TypeId.Pet,
  120. figure_id = pet_cfg.figure_id,
  121. scale = PetConst.ModelShowConfig[pet_cfg.figure_id] and PetConst.ModelShowConfig[pet_cfg.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8,
  122. -- position = Vector3(0,-160,-500),--Model
  123. position = Vector3(pos_x,82,0),
  124. ui_model_type = UIModelCommon.ModelType.BackModel,
  125. pokemon_diamond_effect = pokemon_diamond_effect,
  126. }
  127. FuncOpenModel:getInstance():SetModelRes(res_data)
  128. -- if need_play_effect then--暂时不要了
  129. -- self:AddUIEffect("ui_hunliqiudianliang", self.emptyClick, "UI", nil, 4, false, nil, false)
  130. -- end
  131. end
  132. end
  133. function PetSupportASItem:SetData(support_slot,data)
  134. self.support_slot = support_slot
  135. self.data = data
  136. if self.is_loaded then
  137. self.need_refreshData = false
  138. self:UpdateView()
  139. else
  140. self.need_refreshData = true
  141. end
  142. end
  143. function PetSupportASItem:__delete( )
  144. self:ClearUIEffect(self.emptyClick)
  145. end