2025-06-04 05:02:57 +08:00

96 lines
2.5 KiB
Plaintext

EquipedSkills = class("EquipedSkills")
function EquipedSkills:ctor(posParam)
self._skills = {}
self.posParam = posParam
self.dirty = false
end
function EquipedSkills:GetSkills()
if(self.dirty) then
self.dirty = false
local param = self.posParam or "pos"
table.sort(self._skills,function(l,r)
return l[param] < r[param]
end)
end
return self._skills
end
function EquipedSkills:IsEmpty()
return #self._skills == 0
end
function EquipedSkills:GetAutoFillSkills(totalNum)
end
function EquipedSkills:AddSkill(skillItemData)
local index = TableUtility.ArrayFindIndex(self._skills, skillItemData)
if(index<=0) then
self.dirty = true
self._skills[#self._skills+1] = skillItemData
end
end
function EquipedSkills:RemoveSkill(skillItemData)
TableUtility.ArrayRemove(self._skills, skillItemData)
end
function EquipedSkills:RemoveSkillAt(index)
if(index>0 and index <= #self._skills) then
table.remove(self._skills,index)
end
end
TransformedEquipSkills = class("TransformedEquipSkills",EquipedSkills)
function TransformedEquipSkills:RefreshServerSkills(serverDatas)
local currentNum = #self._skills
local newNum = 0
if(serverDatas~=nil)then
newNum = #serverDatas
end
local delta = newNum - currentNum
if(delta>0) then
for i=1,delta do
self:_CreateSkillItemData()
end
elseif(delta<0)then
for i=1,-delta do
self:RemoveSkillAt(#self._skills)
end
end
for i=1,newNum do
self:UpdateServerSkill(i,serverDatas[i])
end
self.dirty = true
end
function TransformedEquipSkills:_CreateSkillItemData()
local skill = SkillItemData.new(0,0,0,0,0)
self._skills[#self._skills+1] = skill
end
function TransformedEquipSkills:UpdateServerSkill(index,serverSkillItem)
if(index>0 and index <= #self._skills) then
local skill = self._skills[index]
skill:Reset(serverSkillItem.id,serverSkillItem.pos,serverSkillItem.autopos,serverSkillItem.cd,serverSkillItem.sourceid,serverSkillItem.extendpos,serverSkillItem.shortcuts)
self:UpdateSingleSkill(skill,serverSkillItem)
end
end
function TransformedEquipSkills:UpdateSingleSkill(skillItemData,serverSkillItem)
if(skillItemData) then
skillItemData:SetActive(serverSkillItem.active)
skillItemData:SetLearned(serverSkillItem.learn)
skillItemData:SetSource(serverSkillItem.source)
skillItemData:SetShadow(serverSkillItem.shadow)
skillItemData:SetSpecialID(serverSkillItem.runespecid)
skillItemData:SetReplaceID(serverSkillItem.replaceid)
skillItemData:SetEnableSpecialEffect(serverSkillItem.selectswitch)
skillItemData:SetExtraLevel(serverSkillItem.extralv)
end
end