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

214 lines
6.0 KiB
Plaintext

autoImport("PlayerFaceCell")
local BaseCell = autoImport("BaseCell")
TMInfoCell = class("TMInfoCell", BaseCell)
function TMInfoCell:Init()
TMInfoCell.super.Init(self);
local teamHead = self:FindGO("TeamHead");
self.teamHead = PlayerFaceCell.new(teamHead);
self.teamHead:AddIconEvent();
self.teamHead:SetMinDepth(40);
self.teamHead:SetHeadIconPos(false);
self.headData = HeadImageData.new();
-- self.proObj = {};
-- table.insert(self.proObj, self.proIcon.gameObject);
-- local dirObj = self:FindGO("PosDir");
-- table.insert(self.proObj, dirObj);
self.emptyButton = self:FindGO("EmptyButton");
self.emptyButton_None = self:FindGO("None", self.emptyButton);
self.emptyButton_SearchingTeam = self:FindGO("SearchingTeam", self.emptyButton);
self.emptyButton_InviteMember = self:FindGO("InviteMember", self.emptyButton);
self.zoneInfo = self:FindGO("ZoneInfo");
self.zoneId = self:FindComponent("ZoneId", UILabel);
self.zoneHead = self:FindComponent("ZoneHead", UISprite);
self.restTip = self:FindGO("RestTip");
self.restTime = self:FindComponent("RestTime", UILabel);
self:AddCellClickEvent();
end
function TMInfoCell:SetData(data)
self.data = data;
--Debug.Log("----------------------self.data.id:"..self.data.id)
if(data == MyselfTeamData.EMPTY_STATE)then
self.teamHead:SetData(nil);
self.emptyButton:SetActive( true );
self:UpdateEmptyState();
self:SetZoneId();
self:RemoveRestTimeTick();
elseif(data ~= nil)then
self.id = self.data.id
self.headData:Reset();
self.headData:TransByTeamMemberData(data);
self.teamHead:SetData(self.headData);
self:UpdateFollow();
self:UpdateImageCreator();
self:SetZoneId( data.zoneid, data:IsOffline(), data.gender );
self.teamHead.level.text = data.baselv;
UIUtil.WrapLabel(self.teamHead.name);
self.emptyButton:SetActive( false );
self:UpdateRestTip();
else
self.teamHead:SetData(nil);
end
end
function TMInfoCell:UpdateEmptyState()
if( not TeamProxy.Instance:IHaveTeam() )then
self.emptyButton_InviteMember:SetActive(false);
local isEntering = TeamProxy.Instance:IsQuickEntering();
self.emptyButton_SearchingTeam:SetActive(isEntering);
self.emptyButton_None:SetActive(not isEntering);
else
self.emptyButton_InviteMember:SetActive(true);
self.emptyButton_SearchingTeam:SetActive(false);
self.emptyButton_None:SetActive(false);
end
end
function TMInfoCell:UpdateFollow()
local data = self.data;
if(data and data~=MyselfTeamData.EMPTY_STATE)then
local followid = Game.Myself:Client_GetFollowLeaderID();
local handFollowerId = Game.Myself:Client_GetHandInHandFollower();
local isHanding = Game.Myself:Client_IsFollowHandInHand();
local handTargetId = isHanding and followid or handFollowerId;
if(handTargetId == data.id)then
self.teamHead.symbols:Active(PlayerFaceCell_SymbolType.Follow, true);
self.teamHead.symbols:SetSprite(PlayerFaceCell_SymbolType.Follow, "icon_hands");
elseif(followid == data.id)then
self.teamHead.symbols:Active(PlayerFaceCell_SymbolType.Follow, true);
self.teamHead.symbols:SetSprite(PlayerFaceCell_SymbolType.Follow, "main_icon_2");
else
self.teamHead.symbols:Active(PlayerFaceCell_SymbolType.Follow, false);
end
else
self.teamHead.symbols:Active(PlayerFaceCell_SymbolType.Follow, false);
end
end
function TMInfoCell:UpdateImageCreator()
if(type(self.data) == "table")then
local imageUserId = TeamProxy.Instance:GetItemImageUser()
self.teamHead.symbols:Active(PlayerFaceCell_SymbolType.ImageCreate, self.data.id == imageUserId);
else
self.teamHead.symbols:Active(PlayerFaceCell_SymbolType.ImageCreate, false);
end
end
function TMInfoCell:SetZoneId( zoneId, offline, gender )
if(not offline and zoneId and zoneId~=0 and zoneId~=MyselfProxy.Instance:GetZoneId() )then
self.teamHead:HideIcon();
self.zoneInfo:SetActive(true);
self.zoneId.text = ChangeZoneProxy.Instance:ZoneNumToString(zoneId); -- ZhString.TMInfoCell_line
self.zoneHead.spriteName = gender == 1 and "persona_bg_hair1" or "persona_bg_hair2";
else
self.zoneInfo:SetActive(false);
end
end
function TMInfoCell:UpdateHp(value)
self.teamHead:UpdateHp(value);
end
function TMInfoCell:UpdateMp(value)
self.teamHead:UpdateMp(value);
end
function TMInfoCell:UpdateRestTip()
if(type(self.data)~="table")then
self.restTip:SetActive(false);
self:RemoveRestTimeTick();
return;
end
local expiretime = self.data.expiretime;
local curtime = ServerTime.CurServerTime()/1000;
if(expiretime ~= 0 and curtime >= expiretime)then
self.teamHead:SetIconActive(false);
self.restTip:SetActive(true);
self.restTime.text = ZhString.TeamInviteMembCell_ExpireTime;
self.teamHead.name.gameObject:SetActive(false);
else
local resttime = self.data.resttime;
resttime = resttime or 0;
local restSec = resttime - curtime;
if(restSec > 0)then
self.restTip:SetActive(true);
if(not self.restTimeTick)then
self.restTimeTick = TimeTickManager.Me():CreateTick(0, 1000, self.UpdateRestTime, self)
end
self.teamHead:SetIconActive(false);
self.teamHead.name.gameObject:SetActive(false);
else
self.restTip:SetActive(false);
self:RemoveRestTimeTick();
end
end
end
function TMInfoCell:UpdateRestTime()
if(type(self.data)~="table")then
self.restTip:SetActive(false);
self:RemoveRestTimeTick();
return;
end
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 = string.format(ZhString.TMInfoCell_RestTip, min , sec)
else
self:RemoveRestTimeTick();
end
end
function TMInfoCell:RemoveRestTimeTick()
if(self.restTimeTick)then
TimeTickManager.Me():ClearTick(self, 1)
self.restTimeTick = nil;
self.restTime.text = "";
end
if(self.headData and self.headData.offline~=true)then
self.teamHead:SetIconActive(true, true);
else
self.teamHead:SetIconActive(false, false);
end
self.teamHead.name.gameObject:SetActive(true);
end
function TMInfoCell:UpdateMemberPos()
end
function TMInfoCell:OnRemove()
self.teamHead:RemoveIconEvent();
self:RemoveRestTimeTick();
end