240 lines
5.8 KiB
Plaintext
240 lines
5.8 KiB
Plaintext
autoImport("SkillProfessData")
|
|
autoImport("SkillBeingData")
|
|
autoImport("BeingInfoData")
|
|
autoImport("ShortCutData")
|
|
|
|
SkillSaveData = class("SkillSaveData")
|
|
|
|
function SkillSaveData:ctor(serverSkillData)
|
|
self.professionSkillList = {}
|
|
self.beingSkillList = {}
|
|
self.equipedSkills = {}
|
|
self.equipedAutoSkills = {}
|
|
|
|
self.beinginfo = {}
|
|
|
|
self.left_point = serverSkillData.left_point
|
|
|
|
self.skillShortCut = ShortCutData.new()
|
|
|
|
local length = 0
|
|
|
|
if serverSkillData.beings then
|
|
length = #serverSkillData.beings
|
|
local data,skillBeingData,skill
|
|
for i=1,length do
|
|
data = serverSkillData.beings[i]
|
|
skillBeingData = SkillBeingData.new(data.id,Table_Being[data.id],0,0)
|
|
self.beingSkillList[data.id] = skillBeingData
|
|
|
|
skillBeingData:UpdatePoints(data.usedpoint)
|
|
skillBeingData:SetLeftPoint(data.leftpoint)
|
|
skillBeingData:Server_UpdateDynamicSkillInfos(data)
|
|
for j=1,#data.items do
|
|
skill = data.items[j]
|
|
skillBeingData:UpdateSkill(skill)
|
|
end
|
|
skillBeingData:ResetSimulateDatas()
|
|
end
|
|
self:GetBeingsArray()
|
|
end
|
|
|
|
if serverSkillData.datas then
|
|
length = #serverSkillData.datas
|
|
for i=1,length do
|
|
self:AddProfessSkill(self:CreateProfessSkill(serverSkillData.datas[i]))
|
|
end
|
|
|
|
end
|
|
|
|
if serverSkillData.curbeingid then
|
|
self.curBeingID = serverSkillData.curbeingid
|
|
end
|
|
|
|
if serverSkillData.beinginfos then
|
|
length = #serverSkillData.beinginfos
|
|
local temp,beingInfo
|
|
for i=1,length do
|
|
temp = serverSkillData.beinginfos[i]
|
|
beingInfo = BeingInfoData.new();
|
|
self.beinginfo[temp.beingid] = beingInfo
|
|
beingInfo:Server_SetData(temp)
|
|
end
|
|
end
|
|
if serverSkillData.shortcut then
|
|
self.skillShortCut:ResetSkillShortCuts()
|
|
local shortcuts = serverSkillData.shortcut.shortcuts
|
|
for i=1,#shortcuts do
|
|
local shortcut = shortcuts[i]
|
|
self.skillShortCut:UnLockSkillShortCuts(shortcut)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
function SkillSaveData:GetProfessionSkill()
|
|
return self.professionSkillList
|
|
end
|
|
|
|
function SkillSaveData:GetBeingSkill()
|
|
return self.beingSkillList
|
|
end
|
|
|
|
function SkillSaveData:GetBeingInfo(beingid)
|
|
return self.beinginfo[beingid]
|
|
end
|
|
|
|
function SkillSaveData:GetUnusedSkillPoint()
|
|
return self.left_point
|
|
end
|
|
|
|
function SkillSaveData:GetCurrentBeing()
|
|
return self.curBeingID
|
|
end
|
|
|
|
function SkillSaveData:GetEquipedSkills()
|
|
return self.equipedSkills
|
|
end
|
|
|
|
function SkillSaveData:GetEquipedAutoSkills()
|
|
return self.equipedAutoSkills
|
|
end
|
|
|
|
function SkillSaveData:CreateProfessSkill(serverSkillData)
|
|
local data
|
|
local skill
|
|
local professSkill = SkillProfessData.new(serverSkillData.profession,serverSkillData.usedpoint)
|
|
local shortCutAuto = ShortCutProxy.SkillShortCut.Auto
|
|
for j=1,#serverSkillData.items do
|
|
data = serverSkillData.items[j]
|
|
skill = professSkill:UpdateSkill(data)
|
|
if self:_CheckPosInShortCut(skill) then
|
|
table.insert(self.equipedSkills,skill)
|
|
end
|
|
if skill:GetPosInShortCutGroup(shortCutAuto) > 0 then
|
|
table.insert(self.equipedAutoSkills,skill)
|
|
end
|
|
if skill.learned then
|
|
self:LearnedSkill(skill)
|
|
end
|
|
end
|
|
professSkill:SortSkills()
|
|
return professSkill
|
|
end
|
|
|
|
function SkillSaveData:_CheckPosInShortCut(skill)
|
|
if skill ~= nil then
|
|
local _ShortCutEnum = ShortCutProxy.ShortCutEnum
|
|
for k,v in pairs(_ShortCutEnum) do
|
|
if skill:GetPosInShortCutGroup(v) > 0 then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function SkillSaveData:AddProfessSkill(professSkill)
|
|
self.professionSkillList[#self.professionSkillList + 1] = professSkill
|
|
table.sort(self.professionSkillList,function (l,r)
|
|
return l.profession < r.profession
|
|
end)
|
|
end
|
|
|
|
function SkillSaveData:GetBeingsArray()
|
|
local arrays = {}
|
|
local hasSelect = false
|
|
for k,v in pairs(self.beingSkillList) do
|
|
arrays[#arrays+1] = v
|
|
if(v.isSelect) then
|
|
hasSelect = true
|
|
end
|
|
end
|
|
|
|
table.sort(arrays ,function ( l,r )
|
|
return l.profession < r.profession
|
|
end)
|
|
if(hasSelect==false and #arrays>0) then
|
|
arrays[1]:SetSelect(true)
|
|
end
|
|
return arrays
|
|
end
|
|
|
|
function SkillSaveData:LearnedSkill(skillItemData)
|
|
local beings = self:GetSummonBeings(skillItemData.staticData)
|
|
if(beings and #beings>0) then
|
|
self:SetEnableBeings(beings,true)
|
|
end
|
|
end
|
|
|
|
function SkillSaveData:GetSummonBeings(staticData)
|
|
local Logic_Param = staticData.Logic_Param
|
|
if(Logic_Param) then
|
|
return Logic_Param.being_ids
|
|
end
|
|
end
|
|
|
|
function SkillSaveData:SetEnableBeings(beingIDs,val)
|
|
if(beingIDs) then
|
|
for i=1,#beingIDs do
|
|
local being = self:GetSkillBeingData(beingIDs[i])
|
|
if(being) then
|
|
being.isEnabled = val
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function SkillSaveData:GetSkillBeingData(creatureID)
|
|
return self.beingSkillList[creatureID]
|
|
end
|
|
|
|
function SkillSaveData:GetUsedPoints()
|
|
self.totalUsedPoint = 0
|
|
for i=1,#self.professionSkillList do
|
|
if(self.professionSkillList[i].points) then
|
|
self.totalUsedPoint = self.totalUsedPoint + self.professionSkillList[i].points
|
|
end
|
|
end
|
|
return self.totalUsedPoint
|
|
end
|
|
|
|
--手動技能快捷欄數據,autoFill是否補全空欄上的數據,id技能快捷欄id
|
|
function SkillSaveData:GetCurrentEquipedSkillData( autoFill ,shortCutID)
|
|
if(shortCutID==nil) then
|
|
shortCutID = ShortCutProxy.ShortCutEnum.ID1
|
|
end
|
|
if(autoFill) then
|
|
local equipedSkillData = {}
|
|
|
|
for i=1,ShortCutData.CONFIGSKILLNUM do
|
|
local item = SkillItemData.new(0,i,nil,nil,nil,i)
|
|
equipedSkillData[i] = item
|
|
end
|
|
|
|
local pos
|
|
for k,v in pairs(self.equipedSkills) do
|
|
if(autoFill)then
|
|
pos = v:GetPosInShortCutGroup(shortCutID)
|
|
if(pos~=nil and pos ~=0) then
|
|
equipedSkillData[pos] = v
|
|
end
|
|
elseif(not v.shadow) then
|
|
table.insert(equipedSkillData,v)
|
|
end
|
|
end
|
|
return equipedSkillData
|
|
end
|
|
end
|
|
|
|
function SkillSaveData:ShortCutListIsEnable(id)
|
|
return self.skillShortCut:ShortCutListIsEnable(id)
|
|
end
|
|
|
|
function SkillSaveData:SkillIsLocked(index,id)
|
|
return self.skillShortCut:SkillIsLocked(index,id)
|
|
end
|
|
|
|
function SkillSaveData:AutoSkillIsLocked(index)
|
|
return self.skillShortCut:AutoSkillIsLocked(index)
|
|
end |