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

136 line
3.5 KiB

  1. PetSkillPanel = PetSkillPanel or BaseClass(BaseItem)
  2. local PetSkillPanel = PetSkillPanel
  3. function PetSkillPanel:__init()
  4. self.base_file = "pet"
  5. self.layout_file = "PetSkillPanel"
  6. self.model = PetModel:getInstance()
  7. self.skill_item_list = {}
  8. self.diamond_item_list = {}
  9. self:Load()
  10. end
  11. function PetSkillPanel:Load_callback()
  12. self.nodes = {
  13. "con_skill",--技能栏
  14. "con_gem",--宝石栏
  15. "composeBtn/composeRed:obj", "composeBtn:obj",
  16. }
  17. self:GetChildren(self.nodes)
  18. self:AddEvents()
  19. if self.need_refreshData then
  20. self:UpdateView()
  21. end
  22. end
  23. function PetSkillPanel:AddEvents( )
  24. local on_click = function ( click_obj )
  25. if self.composeBtn_obj == click_obj then
  26. self.model:Fire(PetConst.OPEN_PET_DIAMOND_COMPOSE_VIEW)
  27. end
  28. end
  29. AddClickEvent(self.composeBtn_obj, on_click)
  30. --刷新技能石的展示
  31. local update_diamond_con = function(pet_id,play_effect_diamond_slot)
  32. if self.data.pet_id == pet_id then
  33. self:UpdateDiamondCon(play_effect_diamond_slot)
  34. end
  35. end
  36. self:BindEvent(self.model, PetConst.UPDATE_PET_DIAMOND_CON, update_diamond_con)
  37. --宠物进化成功之后的刷新
  38. local pet_evolve = function(pet_id)
  39. if not self.is_loaded then return end
  40. if pet_id == self.data.pet_id then
  41. self:UpdateSkillCon()
  42. end
  43. end
  44. self:BindEvent(self.model, PetConst.PET_EVOLVE, pet_evolve)
  45. local function onRefreshRed(red_type)
  46. if not self.is_loaded then return end
  47. if red_type == PetConst.RED_DOT_TYPE.DiamondCompose then
  48. local diamond_compose_red = self.model:GetPetRedDotByType(PetConst.RED_DOT_TYPE.DiamondCompose)
  49. self.composeRed_obj:SetActive(skill_red or diamond_compose_red)
  50. end
  51. end
  52. self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, onRefreshRed)
  53. end
  54. function PetSkillPanel:UpdateView( )
  55. self:UpdateSkillCon()
  56. self:UpdateDiamondCon()
  57. local diamond_compose_red = self.model:GetPetRedDotByType(PetConst.RED_DOT_TYPE.DiamondCompose)
  58. self.composeRed_obj:SetActive(skill_red or diamond_compose_red)
  59. end
  60. --技能展示
  61. function PetSkillPanel:UpdateSkillCon( )
  62. local skill_table = {}
  63. for i=1,4 do
  64. local data = self.model:GetPetSkillCfg(self.data.pet_id,i,self.data.is_awaken==1)--通过id和槽位获取技能配置
  65. if data then
  66. table.insert(skill_table,data)
  67. end
  68. end
  69. for k,v in pairs(self.skill_item_list) do
  70. v:SetVisible(false)
  71. end
  72. for i,v in ipairs(skill_table) do
  73. local item = self.skill_item_list[i]
  74. if not item then
  75. item = PetSkillItem.New(self.con_skill)
  76. self.skill_item_list[i] = item
  77. end
  78. item:SetVisible(true)
  79. item:SetData(v,self.data.pet_id,1,self.data.is_awaken==1)
  80. item:SetPosition(91*(i-1)+20,-10)
  81. end
  82. end
  83. --宝石展示
  84. function PetSkillPanel:UpdateDiamondCon(play_effect_diamond_slot)
  85. local diamondItemType = 2
  86. for k,v in pairs(self.diamond_item_list) do
  87. v:SetVisible(false,true)
  88. end
  89. for i=1,4 do
  90. local item = self.diamond_item_list[i]
  91. if not item then
  92. item = PetDiamondItem.New(self.con_gem)
  93. self.diamond_item_list[i] = item
  94. end
  95. item:SetVisible(true,true)
  96. item:SetData(diamondItemType,i,self.data.pet_id,nil,nil,play_effect_diamond_slot)
  97. item:SetPosition(10+96*(i-1),-42.5)
  98. end
  99. end
  100. function PetSkillPanel:SetData(data)
  101. self.data = data
  102. if self.is_loaded then
  103. self.need_refreshData = false
  104. self:UpdateView()
  105. else
  106. self.need_refreshData = true
  107. end
  108. end
  109. function PetSkillPanel:__delete( )
  110. for i, v in ipairs(self.skill_item_list) do
  111. v:DeleteMe()
  112. end
  113. self.skill_item_list = {}
  114. for i, v in ipairs(self.diamond_item_list) do
  115. v:DeleteMe()
  116. end
  117. self.diamond_item_list = {}
  118. end