ro-table/Asstes/Resources/Script/Com/Data/Skill/SkillProfessData.txt
2025-06-04 05:02:57 +08:00

153 lines
4.6 KiB
Plaintext

SkillProfessData = class("SkillProfessData")
function SkillProfessData:ctor(profession,points)
-- print("add skill profession "..profession)
self.skills = {}
self.profession = profession
self.basePoints = 0
self:UpdatePoints(points)
end
function SkillProfessData:UpdatePoints(points)
-- print("點數",points)
self.points = points
end
function SkillProfessData:UpdateBasePoints(points)
self.basePoints = points
-- --for test
-- local skill
-- local breakpoints = 0
-- for i=1,#self.skills do
-- skill = self.skills[i]
-- if(skill.learned) then
-- breakpoints = breakpoints + skill:GetBreakLevel()
-- end
-- end
-- self.basePoints = self.points - breakpoints
-- --for test
end
function SkillProfessData:UpdateSkill(serverSkillItem)
local skill = self:FindSkillByIdAndSource(serverSkillItem.id,serverSkillItem.sourceid)
if(skill) then
skill:Reset(serverSkillItem.id,serverSkillItem.pos,serverSkillItem.autopos,serverSkillItem.cd,serverSkillItem.sourceid,serverSkillItem.extendpos,serverSkillItem.shortcuts)
self:UpdateSingleSkill(skill,serverSkillItem)
else
skill = self:AddSkill(serverSkillItem)
end
return skill
end
function SkillProfessData:UpdateSingleSkill(skillItemData,serverSkillItem)
if(skillItemData) then
AstrolabeProxy.Instance:SkillSetSpecialEnable(skillItemData:GetSpecialID(),nil)
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)
skillItemData:SetOwnerId(serverSkillItem.ownerid)
AstrolabeProxy.Instance:SkillSetSpecialEnable(serverSkillItem.runespecid,serverSkillItem.selectswitch)
-- print(skillItemData.id,serverSkillItem.shadow,serverSkillItem.pos)
local consume = serverSkillItem.consume
if(consume) then
skillItemData:ResetUseTimes(consume.curvalue,consume.maxvalue,consume.nexttime)
end
end
end
function SkillProfessData:AutoFillAdd(id,sourceid)
sourceid = sourceid or 0
local skill = self:FindSkillByIdAndSource(id,sourceid)
if(skill == nil) then
local skillItemData = SkillItemData.new(id,0,0,self.profession,sourceid)
self.skills[#self.skills + 1] =skillItemData
end
end
function SkillProfessData:AddSkill(serverSkillItem)
-- print(self.profession,"add skill",serverSkillItem.id,serverSkillItem.sourceid,serverSkillItem.pos)
local skillItemData = SkillItemData.new(serverSkillItem.id,serverSkillItem.pos,serverSkillItem.autopos,self.profession,serverSkillItem.sourceid,serverSkillItem.extendpos,serverSkillItem.shortcuts)
self:UpdateSingleSkill(skillItemData,serverSkillItem)
self.skills[#self.skills + 1] =skillItemData
return skillItemData
end
function SkillProfessData:RemoveSkill(serverSkillItem)
-- print("remove skill",serverSkillItem.id,serverSkillItem.sourceid)
local skill,index = self:FindSkillByIdAndSource(serverSkillItem.id,serverSkillItem.sourceid)
if(skill) then
table.remove(self.skills, index)
end
return skill
end
function SkillProfessData:FindSkillByIdAndSource(id,source)
for i=1,#self.skills do
if(id == self.skills[i].id and (source == nil or self.skills[i].sourceId == source)) then
return self.skills[i],i
end
end
end
function SkillProfessData:FindSkillById(id)
for i=1,#self.skills do
if(id == self.skills[i]:GetID()) then
return self.skills[i],i
end
end
end
function SkillProfessData:SortSkills()
-- print("排序技能")
if self.profession ~= ProfessionProxy.Instance.rootProfession.id then
table.sort(self.skills,function (l,r)
if(l.id == r.id) then
return l.sourceId < r.sourceId
else
return l.id < r.id
end
end)
else
table.sort(self.skills, function (l,r)
local lstaticData = l.staticData
local rstaticData = r.staticData
local passiveType = GameConfig.SkillType.Passive.type
if lstaticData.SkillType ~= rstaticData.SkillType then
if lstaticData.SkillType == passiveType then
return false
end
if rstaticData.SkillType == passiveType then
return true
end
end
if lstaticData.Contidion.riskid ~= rstaticData.Contidion.riskid then
if lstaticData.Contidion.riskid == nil then
return true
end
if rstaticData.Contidion.riskid == nil then
return false
end
end
if l.id == r.id then
return l.sourceId < r.sourceId
else
return l.id < r.id
end
end)
end
-- local t = ""
-- for i=1,#self.skills do
-- t = t..self.skills[i].id.." "..self.skills[i].staticData.NameZh.."\n"
-- end
-- print(t)
end