PetSkillPanel = PetSkillPanel or BaseClass(BaseItem)
|
|
local PetSkillPanel = PetSkillPanel
|
|
|
|
function PetSkillPanel:__init()
|
|
self.base_file = "pet"
|
|
self.layout_file = "PetSkillPanel"
|
|
self.model = PetModel:getInstance()
|
|
|
|
self.skill_item_list = {}
|
|
self.diamond_item_list = {}
|
|
|
|
self:Load()
|
|
end
|
|
|
|
function PetSkillPanel:Load_callback()
|
|
self.nodes = {
|
|
"con_skill",--技能栏
|
|
"con_gem",--宝石栏
|
|
"composeBtn/composeRed:obj", "composeBtn:obj",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
|
|
|
|
self:AddEvents()
|
|
if self.need_refreshData then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
|
|
function PetSkillPanel:AddEvents( )
|
|
local on_click = function ( click_obj )
|
|
if self.composeBtn_obj == click_obj then
|
|
self.model:Fire(PetConst.OPEN_PET_DIAMOND_COMPOSE_VIEW)
|
|
end
|
|
end
|
|
AddClickEvent(self.composeBtn_obj, on_click)
|
|
|
|
|
|
--刷新技能石的展示
|
|
local update_diamond_con = function(pet_id,play_effect_diamond_slot)
|
|
if self.data.pet_id == pet_id then
|
|
self:UpdateDiamondCon(play_effect_diamond_slot)
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PetConst.UPDATE_PET_DIAMOND_CON, update_diamond_con)
|
|
|
|
--宠物进化成功之后的刷新
|
|
local pet_evolve = function(pet_id)
|
|
if not self.is_loaded then return end
|
|
if pet_id == self.data.pet_id then
|
|
self:UpdateSkillCon()
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PetConst.PET_EVOLVE, pet_evolve)
|
|
|
|
local function onRefreshRed(red_type)
|
|
if not self.is_loaded then return end
|
|
if red_type == PetConst.RED_DOT_TYPE.DiamondCompose then
|
|
local diamond_compose_red = self.model:GetPetRedDotByType(PetConst.RED_DOT_TYPE.DiamondCompose)
|
|
self.composeRed_obj:SetActive(skill_red or diamond_compose_red)
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, onRefreshRed)
|
|
end
|
|
|
|
function PetSkillPanel:UpdateView( )
|
|
self:UpdateSkillCon()
|
|
self:UpdateDiamondCon()
|
|
|
|
local diamond_compose_red = self.model:GetPetRedDotByType(PetConst.RED_DOT_TYPE.DiamondCompose)
|
|
self.composeRed_obj:SetActive(skill_red or diamond_compose_red)
|
|
end
|
|
|
|
--技能展示
|
|
function PetSkillPanel:UpdateSkillCon( )
|
|
local skill_table = {}
|
|
for i=1,4 do
|
|
local data = self.model:GetPetSkillCfg(self.data.pet_id,i,self.data.is_awaken==1)--通过id和槽位获取技能配置
|
|
if data then
|
|
table.insert(skill_table,data)
|
|
end
|
|
end
|
|
|
|
for k,v in pairs(self.skill_item_list) do
|
|
v:SetVisible(false)
|
|
end
|
|
for i,v in ipairs(skill_table) do
|
|
local item = self.skill_item_list[i]
|
|
if not item then
|
|
item = PetSkillItem.New(self.con_skill)
|
|
self.skill_item_list[i] = item
|
|
end
|
|
item:SetVisible(true)
|
|
item:SetData(v,self.data.pet_id,1,self.data.is_awaken==1)
|
|
item:SetPosition(91*(i-1)+20,-10)
|
|
end
|
|
end
|
|
|
|
--宝石展示
|
|
function PetSkillPanel:UpdateDiamondCon(play_effect_diamond_slot)
|
|
local diamondItemType = 2
|
|
for k,v in pairs(self.diamond_item_list) do
|
|
v:SetVisible(false,true)
|
|
end
|
|
for i=1,4 do
|
|
local item = self.diamond_item_list[i]
|
|
if not item then
|
|
item = PetDiamondItem.New(self.con_gem)
|
|
self.diamond_item_list[i] = item
|
|
end
|
|
item:SetVisible(true,true)
|
|
item:SetData(diamondItemType,i,self.data.pet_id,nil,nil,play_effect_diamond_slot)
|
|
item:SetPosition(10+96*(i-1),-42.5)
|
|
end
|
|
end
|
|
|
|
function PetSkillPanel:SetData(data)
|
|
self.data = data
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
self:UpdateView()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function PetSkillPanel:__delete( )
|
|
for i, v in ipairs(self.skill_item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.skill_item_list = {}
|
|
for i, v in ipairs(self.diamond_item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.diamond_item_list = {}
|
|
end
|