ro-table/Asstes/Resources/Script/FrameWork/Proxy/MultiProfessionSaveProxy.txt
2025-06-04 05:02:57 +08:00

282 lines
7.7 KiB
Plaintext

autoImport("UserSaveInfoData")
autoImport("UserSaveSlotData")
autoImport("AstrolMaterialData")
MultiProfessionSaveProxy = class('MultiProfessionSaveProxy', pm.Proxy)
MultiProfessionSaveProxy.Instance = nil
MultiProfessionSaveProxy.NAME = "MultiProfessionSaveProxy"
function MultiProfessionSaveProxy:ctor(proxyName, data)
self.proxyName = proxyName or MultiProfessionSaveProxy.NAME
if MultiProfessionSaveProxy.Instance == nil then
MultiProfessionSaveProxy.Instance = self
end
if data ~= nil then
self:setData(data)
end
self.slotDatas = {}
self.recordDatas = {}
end
function MultiProfessionSaveProxy:RecvUpdateRecordInfoUserCmd(serverdata)
local _records = serverdata.records
for i = 1,#_records do
local single = UserSaveInfoData.new(_records[i])
self.recordDatas[single.id] = single
local n = #self.slotDatas
for i=1,n do
if self.slotDatas[i].id == single.id then
self.slotDatas[i]:ResetRecordTime(single.recordtime)
self.slotDatas[i]:SetRecordName(single.recordname)
end
end
end
local _slots = serverdata.slots
local _delete = serverdata.delete_ids
local recordLength = #self.recordDatas
for i=1,#_delete do
for k,v in pairs(self.recordDatas) do
if _delete[i] == v.id then
self.recordDatas[k] = nil
end
end
local t = #self.slotDatas
for k=1,t do
if self.slotDatas[k].id == _delete[i] then
self.slotDatas[k]:ResetRecordTime(0)
end
end
end
if #self.slotDatas ==0 then
for i = 1,#_slots do
local temp = UserSaveSlotData.new(_slots[i])
self.slotDatas[i] = temp
if self.recordDatas[temp.id] then
self.slotDatas[i]:ResetRecordTime(self.recordDatas[i].recordtime)
self.slotDatas[i]:SetRecordName(self.recordDatas[i].recordname)
end
end
else
for i = 1,#_slots do
local temp = UserSaveSlotData.new(_slots[i])
for j = 1,#self.slotDatas do
if self.slotDatas[j] and self.slotDatas[j].id == temp.id then
self.slotDatas[j] = temp
if self.recordDatas[temp.id] then
self.slotDatas[j]:ResetRecordTime(self.recordDatas[temp.id].recordtime)
self.slotDatas[j]:SetRecordName(self.recordDatas[temp.id].recordname)
end
end
end
end
end
self.CardExpiration = serverdata.card_expiretime
self:CheckTimeValidation()
-- self:SortUserSave()
self.costMap = {}
if serverdata.astrol_data then
local l = #serverdata.astrol_data
local temp
for i=1,l do
temp = AstrolMaterialData.new(serverdata.astrol_data[i])
self.costMap[temp.charid] = temp
end
end
end
function MultiProfessionSaveProxy:CheckTimeValidation()
if self.slotDatas then
local n = #self.slotDatas
for i=1,n do
if self.slotDatas[i].Type == SceneUser2_pb.ESLOT_MONTH_CARD then
if self.slotDatas[i].status == 1 and self.CardExpiration == 0 then
self.slotDatas[i].status = 0
elseif self.slotDatas[i].status == 0 and self.CardExpiration > 0 then
self.slotDatas[i].status = 1
end
end
end
end
end
function MultiProfessionSaveProxy:GetCardExpiration()
return self.CardExpiration
end
function MultiProfessionSaveProxy:SortUserSave()
table.sort(self.slotDatas,function (l,r)
local l_status = l.status
local r_status = r.status
if l_status == r_status then -- Active 1, InActive 0
if l_status == 1 then
return l.recordTime > r.recordTime
elseif l_status == 0 then
if l.type == r.type then
return l.id < r.id
else
return l.type > r.type
end
end
else
return l_status > r_status
end
end)
end
function MultiProfessionSaveProxy:UpdateStatus(slotid,status)
for i=1,#self.slotDatas do
if self.slotDatas[i].id == slotid then
self.slotDatas[i]:UpdateSlotStatus(status)
end
end
end
function MultiProfessionSaveProxy:GetDefaultRecord()
return self.slotDatas[1].id
end
function MultiProfessionSaveProxy:GetCurrentSlotStatus(selectedID)
if self.slotDatas then
local n = #self.slotDatas
for i=1,n do
if self.slotDatas[i].id == selectedID then
return self.slotDatas[i].status
end
end
else
return 0
end
end
function MultiProfessionSaveProxy:GetProfession(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetProfession()
end
function MultiProfessionSaveProxy:GetRoleID(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id].roleid
end
function MultiProfessionSaveProxy:GetRoleName(id)
if not self.recordDatas[id] then
return nil
end
return self.recordDatas[id].rolename
end
function MultiProfessionSaveProxy:GetUnusedSkillPoint(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetUnusedSkillPoint()
end
function MultiProfessionSaveProxy:GetProfessionSkill(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetProfessionSkill()
end
function MultiProfessionSaveProxy:GetEquipedSkills(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetEquipedSkills()
end
function MultiProfessionSaveProxy:GetEquipedAutoSkills(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetEquipedAutoSkills()
end
function MultiProfessionSaveProxy:GetBeingSkill(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetBeingSkill()
end
function MultiProfessionSaveProxy:GetBeingInfo(id, beingid)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetBeingInfo(beingid)
end
function MultiProfessionSaveProxy:GetBeingsArray(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetBeingsArray()
end
function MultiProfessionSaveProxy:GetUsedPoints(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetUsedPoints()
end
function MultiProfessionSaveProxy:GetJobLevel(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetJobLevel()
end
function MultiProfessionSaveProxy:GetFixedJobLevel(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetFixedJobLevel()
end
function MultiProfessionSaveProxy:GetProfessionType(id)
if not self.recordDatas[id] then return nil end
local profession = self.recordDatas[id]:GetProfession()
profession = Table_Class[profession]
return profession and profession.Type or 0
end
function MultiProfessionSaveProxy:GetAstrobleByID(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetAstroble()
end
function MultiProfessionSaveProxy:GetActiveStars(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetActiveStars()
end
function MultiProfessionSaveProxy:GetUserDataByID(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetUserData()
end
function MultiProfessionSaveProxy:GetProps(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetProps()
end
function MultiProfessionSaveProxy:GetUsersaveData(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]
end
function MultiProfessionSaveProxy:CheckAstrolMaterial(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:CheckAstrolMaterial(self.costMap)
end
function MultiProfessionSaveProxy:GetContribute(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetContribute()
end
function MultiProfessionSaveProxy:GetGoldMedal(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetGoldMedal()
end
function MultiProfessionSaveProxy:GetSkillData(id)
if not self.recordDatas[id] then return nil end
return self.recordDatas[id]:GetSkillData()
end
function MultiProfessionSaveProxy:Clear()
if(self.slotDatas ~= nil)then
TableUtility.TableClear(self.slotDatas);
end
if(self.recordDatas ~= nil)then
TableUtility.TableClear(self.recordDatas);
end
end