源战役客户端
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 rivejä
3.5 KiB

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