157 lines
4.6 KiB
Plaintext
157 lines
4.6 KiB
Plaintext
GuildMemberData = class("GuildMemberData")
|
|
|
|
GuildMemberDataType = {}
|
|
|
|
local function mapGuildEnumProp(enum,propName)
|
|
if(enum) then
|
|
GuildMemberDataType[enum] = propName
|
|
else
|
|
redlog(string.format("GuildCmd_pb enum is nil! propName is %s",propName))
|
|
end
|
|
end
|
|
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_NAME,"name")
|
|
-- 基礎等級
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_BASELEVEL,"baselevel")
|
|
-- 頭像
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_PORTRAIT,"portrait")
|
|
-- 相框
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_FRAME,"frame")
|
|
-- 職業
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_PROFESSION,"profession")
|
|
-- 目前貢獻度(會有消耗)
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_CONTRIBUTION,"contribution")
|
|
-- 總貢獻度(在這個公會的總貢獻度)
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_TOTALCONTRIBUTION,"totalcontribution")
|
|
-- 每週貢獻度
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_WEEKCONTRIBUTION,"weekcontribution")
|
|
-- 每週貢獻的公會資金 跟貢獻度不一樣
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_WEEKASSET,"weekasset")
|
|
-- 進入公會時間
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_ENTERTIME,"entertime")
|
|
-- 離線時間
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_OFFLINETIME,"offlinetime")
|
|
-- 幫會職位
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_JOB,"job")
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_HAIR,"hair")
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_EYE,"eye")
|
|
-- 頭髮顏色
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_HAIRCOLOR,"haircolor")
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_BODY,"body")
|
|
-- 頭飾
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_HEAD,"head")
|
|
-- 臉部
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_FACE,"face")
|
|
-- 嘴部
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_MOUTH,"mouth")
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_LEVELUPEFFECT,"levelupeffect")
|
|
-- 公會成員切線
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_ZONEID,"zoneid")
|
|
-- 初始化賦值 不會更新到的屬性
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_GENDER,"gender")
|
|
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_WEEKBCOIN,"weekbcoin")
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_TOTALBCOIN,"totalcoin")
|
|
--語音
|
|
mapGuildEnumProp(GuildCmd_pb.EGUILDMEMBERDATA_REALTIMEVOICE,"realtimevoice")
|
|
|
|
GuildSummaryStringType = {
|
|
["name"] = 1,
|
|
}
|
|
|
|
function GuildMemberData:ctor(guildMemberData, guildData)
|
|
self.guildData = guildData;
|
|
self:SetData(guildMemberData);
|
|
end
|
|
|
|
function GuildMemberData:SetData(gmdata)
|
|
if(gmdata)then
|
|
self.id = gmdata.charid;
|
|
self.name = gmdata.name;
|
|
if(gmdata and gmdata.building)then
|
|
self.buildingLevelUp = gmdata.building.buildings
|
|
end
|
|
|
|
local updateStr = "GuildMemberData(Init): ";
|
|
updateStr = updateStr..string.format("| %s:%s", "name", tostring(self.name));
|
|
|
|
for _,key in pairs(GuildMemberDataType) do
|
|
if(gmdata[key])then
|
|
self[key] = gmdata[key];
|
|
updateStr = updateStr..string.format("| %s:%s", key, gmdata[key]);
|
|
end
|
|
end
|
|
|
|
if self.realtimevoice == nil then
|
|
--這裡假如沒有授權伺服器發過來的就是nil
|
|
self.realtimevoice = false
|
|
end
|
|
|
|
--helplog(updateStr);
|
|
end
|
|
end
|
|
|
|
function GuildMemberData:UpdateData(updateDatas)
|
|
local updateStr = "GuildMemberData(Update): ";
|
|
updateStr = updateStr..string.format("| %s:%s", "name", self.name);
|
|
local oldJob = member.job;
|
|
|
|
for i=1,#updateDatas do
|
|
local data = updateDatas[i];
|
|
local key = GuildMemberDataType[data.type];
|
|
if(key)then
|
|
if(GuildSummaryStringType[key])then
|
|
self[key] = data.data;
|
|
else
|
|
self[key] = data.value;
|
|
end
|
|
updateStr = updateStr..string.format("| %s:%s",key,tostring(data.value));
|
|
end
|
|
end
|
|
|
|
--helplog(updateStr);
|
|
if(self.id == Game.Myself.data.id and oldJob ~= self.job)then
|
|
FunctionGuild.Me():MyGuildJobChange(oldJob, self.job);
|
|
end
|
|
end
|
|
|
|
function GuildMemberData:GetJobName()
|
|
if(self.guildData and self.job)then
|
|
return self.guildData:GetJobName(self.job);
|
|
end
|
|
end
|
|
|
|
function GuildMemberData:IsOffline()
|
|
if(self.offlinetime)then
|
|
return self.offlinetime ~= 0;
|
|
end
|
|
return false;
|
|
end
|
|
|
|
function GuildMemberData:IsBoy()
|
|
return self.gender == ProtoCommon_pb.EGENDER_MALE;
|
|
end
|
|
|
|
function GuildMemberData:NeedPlayLevelUpEffect()
|
|
return self.levelupeffect == true or self.levelupeffect == 1;
|
|
end
|
|
|
|
function GuildMemberData:GetBuildingLevelup()
|
|
return self.buildingLevelUp
|
|
end
|
|
--語音是否禁言
|
|
function GuildMemberData:IsRealtimevoice()
|
|
return self.realtimevoice == true or self.realtimevoice == 1
|
|
end
|
|
--服務端說前端自己儲存這個值
|
|
function GuildMemberData:SetRealtimevoiceValue(value)
|
|
self.realtimevoice = value
|
|
end
|
|
|
|
function GuildMemberData:GetCharId()
|
|
return self.id
|
|
end
|
|
|
|
|
|
|