233 lines
5.8 KiB
Plaintext
233 lines
5.8 KiB
Plaintext
TeamMemberData = class("TeamMemberData");
|
|
|
|
TeamMemberData.KeyType = {
|
|
[SessionTeam_pb.EMEMBERDATA_NAME] = "name",
|
|
|
|
[SessionTeam_pb.EMEMBERDATA_CAT] = "cat",
|
|
-- 基礎等級
|
|
[SessionTeam_pb.EMEMBERDATA_BASELEVEL] = "baselv",
|
|
-- 職業
|
|
[SessionTeam_pb.EMEMBERDATA_PROFESSION] = "profession",
|
|
-- 地圖id
|
|
[SessionTeam_pb.EMEMBERDATA_MAPID] = "mapid",
|
|
-- 頭像
|
|
[SessionTeam_pb.EMEMBERDATA_PORTRAIT] = "portrait",
|
|
-- 相框
|
|
[SessionTeam_pb.EMEMBERDATA_FRAME] = "frame",
|
|
-- 副本id
|
|
[SessionTeam_pb.EMEMBERDATA_RAIDID] = "raid",
|
|
-- 離線狀態 0:線上 ~0:離線
|
|
[SessionTeam_pb.EMEMBERDATA_OFFLINE] = "offline",
|
|
-- 血量
|
|
[SessionTeam_pb.EMEMBERDATA_HP] = "hp",
|
|
[SessionTeam_pb.EMEMBERDATA_MAXHP] = "hpmax",
|
|
-- 藍量
|
|
[SessionTeam_pb.EMEMBERDATA_SP] = "sp",
|
|
[SessionTeam_pb.EMEMBERDATA_MAXSP] = "spmax",
|
|
-- 是否為隊長 1:隊長 2:隊員
|
|
[SessionTeam_pb.EMEMBERDATA_JOB] = "job",
|
|
-- 隊員的攻擊目標
|
|
[SessionTeam_pb.EMEMBERDATA_TARGETID] = "targetid",
|
|
-- 牽手目標id
|
|
[SessionTeam_pb.EMEMBERDATA_JOINHANDID] = "joinhandid",
|
|
-- 身體
|
|
[SessionTeam_pb.EMEMBERDATA_BODY] = "body",
|
|
-- 身體顏色
|
|
[SessionTeam_pb.EMEMBERDATA_CLOTHCOLOR] = "bodycolor",
|
|
-- 頭髮
|
|
[SessionTeam_pb.EMEMBERDATA_HAIR] = "hair",
|
|
-- 眼鏡
|
|
[SessionTeam_pb.EMEMBERDATA_EYE] = "eye",
|
|
-- 頭髮顏色
|
|
[SessionTeam_pb.EMEMBERDATA_HAIRCOLOR] = "haircolor",
|
|
-- 右手武器
|
|
[SessionTeam_pb.EMEMBERDATA_RIGHTHAND] = "rightWeapon",
|
|
-- 左手武器
|
|
[SessionTeam_pb.EMEMBERDATA_LEFTHAND] = "leftWeapon",
|
|
-- 頭飾
|
|
[SessionTeam_pb.EMEMBERDATA_HEAD] = "head",
|
|
-- 背部
|
|
[SessionTeam_pb.EMEMBERDATA_BACK] = "back",
|
|
-- 臉部
|
|
[SessionTeam_pb.EMEMBERDATA_FACE] = "face",
|
|
-- 嘴巴
|
|
[SessionTeam_pb.EMEMBERDATA_MOUTH] = "mouth",
|
|
-- 尾巴
|
|
[SessionTeam_pb.EMEMBERDATA_TAIL] = "tail",
|
|
-- 公會id
|
|
[SessionTeam_pb.EMEMBERDATA_GUILDID] = "guildid",
|
|
-- 公會名字
|
|
[SessionTeam_pb.EMEMBERDATA_GUILDNAME] = "guildname",
|
|
-- 性別
|
|
[SessionTeam_pb.EMEMBERDATA_GENDER] = "gender",
|
|
-- 是否可以眨眼
|
|
[SessionTeam_pb.EMEMBERDATA_BLINK] = "blink",
|
|
-- 分線id
|
|
[SessionTeam_pb.EMEMBERDATA_ZONEID] = "zoneid",
|
|
-- 是否自動上車
|
|
[SessionTeam_pb.EMEMBERDATA_AUTOFOLLOW] = "autofollow",
|
|
|
|
[SessionTeam_pb.EMEMBERDATA_RELIVETIME] = "resttime",
|
|
-- 僱用時間
|
|
[SessionTeam_pb.EMEMBERDATA_EXPIRETIME] = "expiretime",
|
|
|
|
[SessionTeam_pb.EMEMBERDATA_CAT_OWNER] = "masterid",
|
|
|
|
[SessionTeam_pb.EMEMBERDATA_GUILDRAIDINDEX or 38] = "guildraidindex",
|
|
|
|
--[SessionTeam_pb.EMEMBERDATA_REALTIMEVOICE] = "realtimevoice",
|
|
|
|
-- 合奏型別技能列表
|
|
[SessionTeam_pb.EMEMBERDATA_ENSEMBLESKILL] = "ensembleskill",
|
|
}
|
|
|
|
TeamMemberDataMapType = {
|
|
["ensembleskill"] = 1,
|
|
}
|
|
|
|
TeamMemberDataStringType = {
|
|
["name"] = 1,
|
|
["guildname"] = 1,
|
|
}
|
|
|
|
function TeamMemberData:ctor(teamMember, index)
|
|
self.index = index;
|
|
|
|
self.pos = LuaVector3();
|
|
|
|
self:SetData(teamMember);
|
|
end
|
|
|
|
function TeamMemberData:SetData(tmdata)
|
|
if(tmdata)then
|
|
-- guid
|
|
if(tmdata.guid)then
|
|
self.id = tmdata.guid;
|
|
end
|
|
-- 名字
|
|
if(tmdata.name)then
|
|
self.name = tmdata.name;
|
|
end
|
|
-- 倒計時(申請的玩家需要)
|
|
if(tmdata.time)then
|
|
self.time = tmdata.time;
|
|
end
|
|
if(tmdata.datas)then
|
|
self:SetMemberData(tmdata.datas);
|
|
end
|
|
end
|
|
end
|
|
|
|
function TeamMemberData:SetMemberData(memberDatas)
|
|
-- local updateStr = "TeamMemberData: | ".." id:"..tostring(self.id).." | ".." name:"..tostring(self.name).." | ";
|
|
for i=1,#memberDatas do
|
|
local data = memberDatas[i];
|
|
local key = self.KeyType[data.type];
|
|
|
|
-- if key == "realtimevoice" then
|
|
-- GVoiceProxy.Instance:RecvTeamRealTimeVoice( data.value== 1,self.id)
|
|
-- end
|
|
|
|
if(key)then
|
|
if TeamMemberDataMapType[key] then
|
|
local value = self[key]
|
|
if value == nil then
|
|
value = {}
|
|
self[key] = value
|
|
else
|
|
TableUtility.TableClear(value)
|
|
end
|
|
for j=1, #data.values do
|
|
local values = data.values[j]
|
|
value[values] = values
|
|
end
|
|
elseif TeamMemberDataStringType[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);
|
|
self:UpdateHireMemberInfo();
|
|
end
|
|
|
|
function TeamMemberData:UpdatePos(pos)
|
|
-- 位置
|
|
self.pos:Set(pos.x/1000, pos.y/1000, pos.z/1000);
|
|
end
|
|
|
|
function TeamMemberData:IsOffline()
|
|
if(self.offline and self.offline == 1)then
|
|
return true;
|
|
end
|
|
return false;
|
|
end
|
|
|
|
function TeamMemberData:CanBlink()
|
|
return self.blink == 1 or self.blink == true;
|
|
end
|
|
|
|
function TeamMemberData:IsHireMember()
|
|
if(self.cat == nil)then
|
|
return false;
|
|
end
|
|
return self.cat ~= 0;
|
|
end
|
|
|
|
-- CatInfo begin
|
|
function TeamMemberData:UpdateHireMemberInfo()
|
|
if(self.cat ~= nil)then
|
|
self.catdata = Table_MercenaryCat[self.cat];
|
|
if(self.catdata)then
|
|
local MonsterID = self.catdata.MonsterID;
|
|
local monsterData = MonsterID and Table_Monster[MonsterID];
|
|
if(monsterData)then
|
|
self.name = monsterData.NameZh;
|
|
self.profession = nil;
|
|
|
|
-- bodyInfo
|
|
self.body = monsterData.Body;
|
|
-- self.bodycolor = monsterData.BodyColor;
|
|
self.hair = monsterData.Hair;
|
|
self.eye = monsterData.Eye;
|
|
-- self.haircolor = monsterData.HairColor;
|
|
self.rightWeapon = monsterData.RightHand;
|
|
self.leftWeapon = monsterData.LeftHand;
|
|
self.head = monsterData.Head;
|
|
self.back = monsterData.Wing;
|
|
self.face = monsterData.Face;
|
|
self.mouth = monsterData.Mount;
|
|
self.tail = monsterData.tail;
|
|
end
|
|
end
|
|
else
|
|
self.catdata = nil;
|
|
end
|
|
end
|
|
|
|
function TeamMemberData:GetRealTimeVoice()
|
|
return self.realtimevoice or 1
|
|
end
|
|
|
|
function TeamMemberData:SetMasterName(mastername)
|
|
self.mastername = mastername;
|
|
end
|
|
|
|
function TeamMemberData:SetRestTime(time)
|
|
self.resttime = time or 0;
|
|
end
|
|
-- CatInfo end
|
|
|
|
function TeamMemberData:Exit()
|
|
self.pos:Destroy();
|
|
self.pos = nil;
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|