279 lines
8.2 KiB
Plaintext
279 lines
8.2 KiB
Plaintext
local BaseCell = autoImport("BaseCell");
|
|
TeamMemberCell = class("TeamMemberCell", BaseCell)
|
|
|
|
autoImport("PlayerFaceCell");
|
|
|
|
function TeamMemberCell:Init()
|
|
local portrait = self:FindGO("TeamPortrait");
|
|
self.portraitCell = PlayerFaceCell.new(portrait);
|
|
self.portraitCell:AddEventListener(MouseEvent.MouseClick, self.ClickHead, self);
|
|
self.portraitCell:SetMinDepth(4);
|
|
|
|
self.lv = self:FindComponent("Lv", UILabel);
|
|
self.name = self:FindComponent("Name", UILabel);
|
|
self.mapname = self:FindComponent("MapName", UILabel);
|
|
self.bg = self:FindComponent("Bg", UISprite);
|
|
self.zoneId = self:FindComponent("ZoneId", UILabel);
|
|
self.roleTexture = self:FindComponent("RoleTexture", UITexture);
|
|
self.restTip = self:FindGO("RestTip");
|
|
self.restTime = self:FindComponent("RestTime", UILabel);
|
|
self.following = self:FindGO("Following");
|
|
self.inviteFollow = self:FindGO("InviteFollow");
|
|
|
|
self.memberState = self:FindGO("MemberState");
|
|
self.addState = self:FindGO("AddState");
|
|
self.addButton = self:FindGO("AddButton");
|
|
self:AddClickEvent(self.addButton, function ()
|
|
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.TeamInvitePopUp});
|
|
end);
|
|
|
|
self:AddClickEvent(self.inviteFollow, function ()
|
|
if(self.data and self.data ~= MyselfTeamData.EMPTY_STATE)then
|
|
FunctionTeam.Me():TryInviteMemberFollow(self.data.id, true);
|
|
end
|
|
end);
|
|
self.cancelInviteFollow = self:FindGO("CancelInviteFollow");
|
|
self:AddClickEvent(self.cancelInviteFollow, function (go)
|
|
if(self.data and self.data ~= MyselfTeamData.EMPTY_STATE)then
|
|
FunctionTeam.Me():TryInviteMemberFollow(self.data.id, false);
|
|
end
|
|
end);
|
|
|
|
self:AddIconEvent();
|
|
end
|
|
|
|
function TeamMemberCell:ClickHead()
|
|
self:PassEvent(MouseEvent.MouseClick, self);
|
|
end
|
|
|
|
function TeamMemberCell:SetData(data)
|
|
self:ActiveCatRestTip(false);
|
|
|
|
self.data = data;
|
|
if(data == MyselfTeamData.EMPTY_STATE)then
|
|
self.addState:SetActive(true);
|
|
self.memberState:SetActive(false);
|
|
elseif(data ~= nil)then
|
|
self.addState:SetActive(false);
|
|
self.memberState:SetActive(true);
|
|
|
|
self.lv.text = "Lv."..tostring(data.baselv);
|
|
self.name.text = data.name;
|
|
|
|
local headData = HeadImageData.new();
|
|
headData:TransByTeamMemberData(data);
|
|
self.portraitCell:SetData(headData);
|
|
|
|
local isCat = data:IsHireMember();
|
|
local isOnline = not data:IsOffline();
|
|
local isSameline = data.zoneid==MyselfProxy.Instance:GetZoneId();
|
|
|
|
if(isCat)then
|
|
self.mapname.gameObject:SetActive(true);
|
|
self.mapname.text = string.format(ZhString.TeamMemberListPopUp_HireTip, tostring(data.mastername));
|
|
else
|
|
if(isOnline)then
|
|
if(isSameline)then
|
|
self.mapname.gameObject:SetActive(true);
|
|
local data = data.mapid and Table_Map[data.mapid]
|
|
self.mapname.text = data and data.NameZh or "";
|
|
else
|
|
self.mapname.gameObject:SetActive(false);
|
|
end
|
|
else
|
|
self.mapname.gameObject:SetActive(true);
|
|
self.mapname.text = ZhString.TeamMemberCell_Offline;
|
|
end
|
|
end
|
|
|
|
if(not isCat and isOnline and not isSameline)then
|
|
self.zoneId.gameObject:SetActive(true);
|
|
|
|
self.zoneId.text = ChangeZoneProxy.Instance:ZoneNumToString(data.zoneid); -- ZhString.TeamMemberCell_line
|
|
else
|
|
self.zoneId.gameObject:SetActive(false);
|
|
end
|
|
|
|
if(isOnline)then
|
|
if(isCat)then
|
|
self:UpdateRestTip();
|
|
else
|
|
self.portraitCell:SetIconActive(true, true)
|
|
end
|
|
else
|
|
self.portraitCell:SetIconActive(false, true)
|
|
end
|
|
|
|
self:UpdateRoleTexture();
|
|
end
|
|
|
|
self:UpdateFollow();
|
|
end
|
|
|
|
-- 待優化
|
|
function TeamMemberCell:UpdateRoleTexture()
|
|
local parts = Asset_Role.CreatePartArray();
|
|
|
|
local partIndex = Asset_Role.PartIndex;
|
|
local partIndexEx = Asset_Role.PartIndexEx;
|
|
if(self.data.id == Game.Myself.data.id)then
|
|
local userdata = Game.Myself.data.userdata;
|
|
parts[partIndex.Body] = userdata:Get(UDEnum.BODY) or 0;
|
|
parts[partIndex.Hair] = userdata:Get(UDEnum.HAIR) or 0;
|
|
parts[partIndex.LeftWeapon] = userdata:Get(UDEnum.LEFTHAND) or 0;
|
|
parts[partIndex.RightWeapon] = userdata:Get(UDEnum.RIGHTHAND) or 0;
|
|
parts[partIndex.Head] = userdata:Get(UDEnum.HEAD) or 0;
|
|
parts[partIndex.Wing] = userdata:Get(UDEnum.BACK) or 0;
|
|
parts[partIndex.Face] = userdata:Get(UDEnum.FACE) or 0;
|
|
parts[partIndex.Tail] = userdata:Get(UDEnum.TAIL) or 0;
|
|
parts[partIndex.Eye] = userdata:Get(UDEnum.EYE) or 0;
|
|
parts[partIndex.Mount] = 0
|
|
parts[partIndex.Mouth] = userdata:Get(UDEnum.MOUTH) or 0;
|
|
|
|
parts[partIndexEx.Gender] = userdata:Get(UDEnum.SEX) or 0;
|
|
parts[partIndexEx.HairColorIndex] = userdata:Get(UDEnum.HAIRCOLOR) or 0;
|
|
parts[partIndexEx.EyeColorIndex] = userdata:Get(UDEnum.EYECOLOR) or 0;
|
|
parts[partIndexEx.BodyColorIndex] = userdata:Get(UDEnum.CLOTHCOLOR) or 0
|
|
else
|
|
parts[partIndex.Body] = self.data.body or 0
|
|
parts[partIndex.Hair] = self.data.hair or 0
|
|
parts[partIndex.LeftWeapon] = self.data.rightWeapon or 0
|
|
parts[partIndex.RightWeapon] = self.data.leftWeapon or 0
|
|
parts[partIndex.Head] = self.data.head or 0
|
|
parts[partIndex.Wing] = self.data.back or 0
|
|
parts[partIndex.Face] = self.data.face or 0
|
|
parts[partIndex.Tail] = self.data.tail or 0
|
|
parts[partIndex.Eye] = self.data.eye or 0
|
|
parts[partIndex.Mount] = 0
|
|
parts[partIndex.Mouth] = self.data.mouth or 0
|
|
|
|
parts[partIndexEx.Gender] = self.data.gender or 0
|
|
parts[partIndexEx.HairColorIndex] = self.data.haircolor or 0
|
|
parts[partIndexEx.BodyColorIndex] = self.data.bodycolor or 0
|
|
end
|
|
|
|
UIModelUtil.Instance:SetRoleModelTexture(self.roleTexture, parts, UIModelCameraTrans.Team)
|
|
|
|
Asset_Role.DestroyPartArray(parts);
|
|
end
|
|
|
|
function TeamMemberCell:UpdateRestTip()
|
|
local resttime, expiretime = 0,0;
|
|
if(self.data)then
|
|
resttime = self.data.resttime or 0;
|
|
expiretime = self.data.expiretime or 0;
|
|
end
|
|
|
|
local curtime = ServerTime.CurServerTime()/1000;
|
|
|
|
if(expiretime~=0 and curtime >= expiretime)then
|
|
self.restTip:SetActive(true);
|
|
self.portraitCell:SetIconActive(false);
|
|
|
|
self.restTime.text = ZhString.TeamMemberCell_Expire;
|
|
else
|
|
self:ActiveCatRestTip(resttime~=0 and resttime > curtime);
|
|
end
|
|
end
|
|
|
|
function TeamMemberCell:ActiveCatRestTip(b)
|
|
if(b)then
|
|
self.restTip:SetActive(true);
|
|
self.portraitCell:SetIconActive(false);
|
|
|
|
if(not self.restTimeTick)then
|
|
self.restTimeTick = TimeTickManager.Me():CreateTick(0, 1000, self.UpdateRestTime, self)
|
|
end
|
|
else
|
|
self.restTip:SetActive(false);
|
|
self.portraitCell:SetIconActive(true);
|
|
self:RemoveRestTimeTick();
|
|
end
|
|
end
|
|
|
|
function TeamMemberCell:UpdateRestTime()
|
|
local resttime = self.data and self.data.resttime;
|
|
resttime = resttime or 0;
|
|
local restSec = resttime - ServerTime.CurServerTime()/1000;
|
|
if(restSec > 0)then
|
|
local min,sec = ClientTimeUtil.GetFormatSecTimeStr( restSec )
|
|
self.restTime.text = ZhString.TeamMemberCell_CatRest .. string.format("%02d:%02d", min , sec)
|
|
else
|
|
self:ActiveCatRestTip(false);
|
|
end
|
|
end
|
|
|
|
function TeamMemberCell:RemoveRestTimeTick()
|
|
if(self.restTimeTick)then
|
|
TimeTickManager.Me():ClearTick(self, 1)
|
|
self.restTimeTick = nil;
|
|
end
|
|
end
|
|
|
|
function TeamMemberCell:UpdateFollow()
|
|
if(self.data == MyselfTeamData.EMPTY_STATE or self.data == nil)then
|
|
self.following:SetActive(false);
|
|
self.inviteFollow:SetActive(false);
|
|
return;
|
|
end
|
|
|
|
if(not TeamProxy.Instance:CheckIHaveLeaderAuthority())then
|
|
self.following:SetActive(false);
|
|
self.inviteFollow:SetActive(false);
|
|
return;
|
|
end
|
|
|
|
if(self.data:IsHireMember())then
|
|
self.following:SetActive(false);
|
|
self.inviteFollow:SetActive(false);
|
|
return;
|
|
end
|
|
|
|
if(self.data.id == Game.Myself.data.id)then
|
|
self.following:SetActive(false);
|
|
self.inviteFollow:SetActive(false);
|
|
return;
|
|
end
|
|
|
|
if(self.data:IsOffline())then
|
|
self.following:SetActive(false);
|
|
self.inviteFollow:SetActive(false);
|
|
return;
|
|
end
|
|
|
|
local followers = Game.Myself:Client_GetAllFollowers()
|
|
if(followers == nil)then
|
|
self.following:SetActive(false);
|
|
self.inviteFollow:SetActive(false);
|
|
return;
|
|
end
|
|
|
|
if(not followers[ self.data.id ])then
|
|
self.inviteFollow:SetActive(true);
|
|
self.following:SetActive(false);
|
|
else
|
|
self.inviteFollow:SetActive(false);
|
|
self.following:SetActive(true);
|
|
end
|
|
end
|
|
|
|
function TeamMemberCell:UpdateMemberPos()
|
|
end
|
|
|
|
function TeamMemberCell:AddIconEvent()
|
|
if(self.portraitCell)then
|
|
self.portraitCell:AddIconEvent();
|
|
end
|
|
end
|
|
|
|
function TeamMemberCell:RemoveIconEvent()
|
|
if(self.portraitCell)then
|
|
self.portraitCell:RemoveIconEvent();
|
|
end
|
|
end
|
|
|
|
function TeamMemberCell:OnRemove()
|
|
self:RemoveRestTimeTick();
|
|
self:RemoveIconEvent();
|
|
end
|