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

153 lines
4.1 KiB

преди 4 седмици
  1. PetAwakeItem = PetAwakeItem or BaseClass(BaseItem)
  2. local PetAwakeItem = PetAwakeItem
  3. function PetAwakeItem:__init()
  4. self.base_file = "pet"
  5. self.layout_file = "PetAwakeItem"
  6. self.model = PetModel:getInstance()
  7. self:Load()
  8. end
  9. function PetAwakeItem:Load_callback()
  10. self.nodes = {
  11. "petIcon:img", "rareBg:img:obj",
  12. "selectBg:obj",
  13. "redDot:obj",
  14. "con_star/star1:img", "con_star/star3:img", "con_star/star4:img", "con_star/star5:img", "con_star/star2:img",
  15. "lv:tmp",
  16. "di:obj",
  17. "awakeFlag:obj",
  18. }
  19. self:GetChildren(self.nodes)
  20. self.star = {
  21. [1] = self.star1_img,
  22. [2] = self.star2_img,
  23. [3] = self.star3_img,
  24. [4] = self.star4_img,
  25. [5] = self.star5_img
  26. }
  27. self:AddEvents()
  28. if self.need_refreshData then
  29. self:UpdateView()
  30. end
  31. if self.need_refreshClick then
  32. self:OnClick(self.click_id)
  33. end
  34. end
  35. function PetAwakeItem:AddEvents( )
  36. local on_click = function ( click_obj )
  37. if self.di_obj == click_obj then
  38. self.model:Fire(PetConst.CLICK_AWAKE_PET_ITEM,self.item_id)--刷新主界面宠物信息显示
  39. end
  40. end
  41. AddClickEvent(self.di_obj, on_click)
  42. --事件绑定:点击自身item处理
  43. local click_func = function(id)
  44. self:OnClick(id)
  45. end
  46. self:BindEvent(self.model, PetConst.CLICK_AWAKE_PET_ITEM, click_func)
  47. --宠物进化之后刷新item的状态
  48. local pet_evolve = function(pet_id)
  49. if not self.is_loaded then return end
  50. if pet_id == self.data.pet_id then
  51. self:UpdateView()
  52. end
  53. end
  54. self:BindEvent(self.model, PetConst.PET_EVOLVE, pet_evolve)
  55. --宠物喂养升级之后刷新等级
  56. local pet_feed = function(vo)
  57. if not self.is_loaded then return end
  58. if vo.pet_id == self.data.pet_id then
  59. self.lv_tmp.text = vo.pet_lv
  60. end
  61. end
  62. self:BindEvent(self.model, PetConst.PET_FEED, pet_feed)
  63. --红点更新
  64. local function on_ans_update_red_dot(tab_id)
  65. if not self.data or self.data.pet_id == 0 or not self.is_loaded then return end
  66. if tab_id == PetConst.RED_DOT_TYPE.Awake then
  67. self:RefreshPetItemRed()
  68. end
  69. end
  70. self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, on_ans_update_red_dot)
  71. end
  72. --点击自己
  73. function PetAwakeItem:OnClick(click_id,just_update)
  74. self.click_id = click_id
  75. if self.is_loaded then
  76. if self.click_id == self.item_id then--判断是否点击中了自己
  77. if not just_update then
  78. self.click_callback(self.data.pet_id)
  79. end
  80. self.selectBg_obj:SetActive(true)
  81. else
  82. self.selectBg_obj:SetActive(false)
  83. end
  84. else
  85. self.need_refreshClick = true
  86. end
  87. end
  88. function PetAwakeItem:UpdateView( )
  89. self.pet_cfg = self.model:GetPetCfg(self.data.pet_id, self.data.pet_star)
  90. if not self.pet_cfg then
  91. Message.show("没找到相关配置","fault")
  92. return
  93. end
  94. lua_resM:setImageSprite(self,self.rareBg_img,"pet_asset","pet_rare_"..self.pet_cfg.rare_degree)--稀有度背景
  95. lua_resM:setOutsideImageSprite(self, self.petIcon_img, GameResPath.GetPetImage("pet_"..self.data.pet_id.."_"..self.data.pet_stage),false)--宠物icon
  96. self.lv_tmp.text = "LV."..self.data.pet_lv
  97. local max_star = self.model:GetMaxStarInStage(self.data.pet_id,self.data.pet_star)
  98. local show_star = self.model:GetNowShowPetStar(self.data.pet_star)
  99. for i=1,show_star do
  100. lua_resM:setImageSprite(self,self.star[i],"pet_asset","pet_star_"..self.data.pet_stage,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. self.awakeFlag_obj:SetActive(self.data.is_awaken == 1)
  107. self:RefreshPetItemRed()
  108. end
  109. function PetAwakeItem:SetData(item_id,data,click_callback)
  110. self.item_id = item_id
  111. self.data = data
  112. self.click_callback = click_callback
  113. -- self.pet_awake_cfg = self.model:GetPetAwakeCfg(self.data.pet_id)
  114. if self.is_loaded then
  115. self.need_refreshData = false
  116. self:UpdateView()
  117. self:OnClick(self.click_id,true)
  118. else
  119. self.need_refreshData = true
  120. end
  121. end
  122. function PetAwakeItem:RefreshPetItemRed( )
  123. local red = self.model:GetPetAwakeRedDot(self.data.pet_id)
  124. self.redDot_obj:SetActive(red)
  125. self.data = self.model:GetPetListById(self.data.pet_id)
  126. self.awakeFlag_obj:SetActive(self.data.is_awaken == 1)
  127. end
  128. function PetAwakeItem:__delete( )
  129. end