255 lines
6.4 KiB
Plaintext
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 |