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

255 lines
6.4 KiB
Plaintext

autoImport("CampHandler")
PlayerData = reusableClass("PlayerData",CreatureDataWithPropUserdata)
PlayerData.PoolSize = 80
local UDEnum = UDEnum
-- 玩家數據
function PlayerData:ctor()
PlayerData.super.ctor(self)
self.race = CommonFun.Race.DemiHuman
self:SetCamp(RoleDefines_Camp.FRIEND)
self.campHandler = CampHandler.new()
self.transformData = TransformData.new()
self.transformData:CacheOrigin(self)
self.occupations = {}
self.currentOcc = nil
end
function PlayerData:GetName()
return self.name
end
function PlayerData:GetTeamID()
return self.teamID
end
function PlayerData:SetCamp(camp)
PlayerData.super.SetCamp(self,camp)
if(Game.Myself and self.id == Game.LockTargetEffectManager:GetLockedTargetID()) then
Game.LockTargetEffectManager:RefreshEffect()
end
end
--獲取陣營
function PlayerData:GetCamp()
if(self.campHandler.dirty) then
self:SetCamp(self.campHandler:GetCamp())
end
return self.camp
end
--獲取職業
function PlayerData:GetProfesstion()
return self.userdata:Get(UDEnum.PROFESSION)
end
function PlayerData:Camp_SetIsInMyTeam(val)
-- LogUtility.InfoFormat("PlayerData:Camp_SetIsInMyTeam {0}", val)
self.campHandler:SetIsSameTeam(val)
self.campChanged = self.campHandler.dirty
end
function PlayerData:Camp_SetIsInPVP(val)
-- LogUtility.InfoFormat("PlayerData:Camp_SetIsInPVP {0}", val)
self.campHandler:SetIsInPvpScene(val)
self.campChanged = self.campHandler.dirty
end
function PlayerData:Camp_SetIsInMyGuild(val)
-- LogUtility.InfoFormat("PlayerData:Camp_SetIsInMyTeam {0}", val)
self.campHandler:SetIsSameGuild(val)
self.campChanged = self.campHandler.dirty
end
function PlayerData:Camp_SetIsInGVG(val)
-- LogUtility.InfoFormat("PlayerData:Camp_SetIsInPVP {0}", val)
self.campHandler:SetIsInGVGScene(val)
self.campChanged = self.campHandler.dirty
end
function PlayerData:Camp_SetIsOtherTransformedAtk(val)
self.campHandler:SetIsOtherTransformedAtk(val)
self.campChanged = self.campHandler.dirty
end
function PlayerData:Camp_SetIsSelfTransformedAtk(val)
self.campHandler:SetIsSelfTransformedAtk(val)
self.campChanged = self.campHandler.dirty
end
local tempArray = {}
function PlayerData:getOccupationByType( type )
-- body
TableUtility.ArrayClear(tempArray)
if(self.occupations)then
for i=1,#self.occupations do
local single = self.occupations[i]
if(single.professionData.Type == type)then
table.insert(tempArray,single)
end
end
end
return tempArray
end
function PlayerData:UpdateJobDatas( data )
local occupation = nil
local ocData = nil
self.occupations = {}
local currentOcc = self.userdata:Get(UDEnum.PROFESSION)
for i=1,#data do
ocData = data[i].datas
local jobLv = 1
local profession = 1
local jobExp = 1
for i=1,#ocData do
if(ocData[i].type == ProtoCommon_pb.EUSERDATATYPE_PROFESSION)then
profession = ocData[i].value
elseif(ocData[i].type == ProtoCommon_pb.EUSERDATATYPE_JOBLEVEL)then
jobLv = ocData[i].value
elseif(ocData[i].type == ProtoCommon_pb.EUSERDATATYPE_JOBEXP)then
jobExp = ocData[i].value
end
end
TableUtility.ArrayClear(tempArray)
tempArray[1] = jobLv
tempArray[2] = jobExp
tempArray[3] = profession
occupation = Occupation.CreateAsTable(tempArray)
self.occupations[#self.occupations+1] = occupation
if(occupation.isCurrent) then
self.currentOcc = occupation
end
end
end
function PlayerData:UpdateProfession()
local jobLv = self.userdata:Get(UDEnum.JOBLEVEL)
local jobExp = self.userdata:Get(UDEnum.JOBEXP)
local profession = self.userdata:Get(UDEnum.PROFESSION)
local occupation
if(self.occupations)then
for i=1,#self.occupations do
local single = self.occupations[i]
if(single.profession == profession)then
occupation = single
end
end
end
if(not occupation)then
TableUtility.ArrayClear(tempArray)
tempArray[1] = jobLv
tempArray[2] = jobExp
tempArray[3] = profession
occupation = Occupation.CreateAsTable(tempArray)
table.insert(self.occupations,occupation)
end
self.currentOcc = occupation
end
function PlayerData:GetCurOcc()
-- body
if not self.currentOcc then
self:UpdateProfession()
end
return self.currentOcc
end
function PlayerData:SetBlink(b)
self.blink = b;
end
function PlayerData:CanBlink()
return self.blink == true;
end
function PlayerData:InitChatRoomData(chatRoomInfo)
if(chatRoomInfo~=nil and chatRoomInfo.roomid>0 and chatRoomInfo.ownerid == self.id) then
if(self.chatRoomData==nil) then
self.chatRoomData = ChatZoneSummaryData.CreateAsTable(chatRoomInfo)
else
self.chatRoomData:Update(chatRoomInfo)
end
end
end
function PlayerData:UpdateBoothData(boothInfo)
if boothInfo ~= nil then
if self.boothData == nil then
self.boothData = BoothData.CreateAsTable(boothInfo)
else
self.boothData:SetData(boothInfo)
end
end
end
function PlayerData:ClearBoothData()
if self.boothData ~= nil then
self.boothData:Destroy()
self.boothData = nil
end
end
function PlayerData:SetTeamID(teamID)
self.teamID = teamID
end
function PlayerData:SetAchievementtitle(achievetitle)
self.achievetitle = achievetitle
end
function PlayerData:GetAchievementtitle()
return self.achievetitle
end
function PlayerData:GetEquipedWeaponType()
if self.userdata ~= nil then
local equipedWeaponId = self.userdata:Get(UDEnum.EQUIPED_WEAPON)
local staticData = Table_Item[equipedWeaponId]
if staticData ~= nil and staticData.Type ~= nil then
return staticData.Type
end
end
return PlayerData.super:GetEquipedWeaponType(self)
end
-- override begin
function PlayerData:DoConstruct(asArray, serverData)
PlayerData.super.DoConstruct(self,asArray,serverData)
self.id = serverData.guid
self.name = serverData.name
self.shape = CommonFun.Shape.M
self.shape = CommonFun.Shape.M
self.race = CommonFun.Race.DemiHuman
if(not serverData.teamid or serverData.teamid == 0) then
self.teamID = self.id
else
self.teamID = serverData.teamid
end
self.blink = false;
self.achievetitle = serverData.achievetitle
TableUtility.ArrayClear(tempArray);
tempArray[1] = serverData.guildid;
tempArray[2] = serverData.guildname;
tempArray[3] = serverData.guildicon;
tempArray[4] = serverData.guildjob;
self:SetGuildData(tempArray);
--產生cullingid
self:SpawnCullingID()
end
function PlayerData:DoDeconstruct(asArray)
self.campHandler:Reset()
if(self.chatRoomData~=nil) then
self.chatRoomData:Destroy()
self.chatRoomData = nil
end
self:ClearBoothData()
PlayerData.super.DoDeconstruct(self,asArray)
end
-- override end