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

211 lines
5.8 KiB
Plaintext

local BaseCell = autoImport("BaseCell");
TeamInviteMembCell = class("TeamInviteMembCell", BaseCell)
autoImport("PlayerFaceCell");
TeamInviteMemberType = {
Friend = 1,
GuildMember = 2,
NearlyTeamMember = 3,
MemberCat = 4,
}
function TeamInviteMembCell:Init()
self:InitCell();
end
function TeamInviteMembCell:InitCell()
local portrait = self:FindGO("Portrait");
self.faceCell = PlayerFaceCell.new(portrait);
self:AddClickEvent(portrait, function (go)
if(self.data)then
local type, sdata = self.data.type, self.data.data;
local ptdata = PlayerTipData.new();
local funckeys;
if(type == TeamInviteMemberType.Friend or type == TeamInviteMemberType.NearlyTeamMember)then
ptdata:SetByFriendData(sdata);
elseif(type == TeamInviteMemberType.GuildMember)then
ptdata:SetByGuildMemberData(sdata);
elseif(type == TeamInviteMemberType.MemberCat)then
funckeys = {"ShowDetail", "FireHireman"};
ptdata:SetByTeamMemberData(sdata);
end
local tipData = {
playerData = ptdata,
funckeys = funckeys,
};
local sp = portrait:GetComponent(UIWidget);
local playerTip = FunctionPlayerTip.Me():GetPlayerTip(sp, NGUIUtil.AnchorSide.Right);
playerTip:SetData(tipData);
playerTip.clickcallback = function (funcData)
if(funcData.key == "SendMessage")then
self.eventType = "CloseUI";
self:PassEvent(MouseEvent.MouseClick, self);
end
end
end
end);
self.name = self:FindComponent("Name", UILabel);
self.lv = self:FindComponent("Lv", UILabel);
self.pro = self:FindComponent("Pro", UILabel);
self.restTip = self:FindGO("RestTip");
self.restTime = self:FindComponent("RestTime", UILabel);
self.inviteButton = self:FindGO("InviteButton");
self:AddClickEvent(self.inviteButton, function (go)
if(self.buttonActive)then
self:PassEvent(MouseEvent.MouseClick, self);
-- self:ActiveInviteButton(false);
end
end);
self.inviteLabel = self:FindComponent("Label", UILabel, self.inviteButton);
end
function TeamInviteMembCell:SetData(data)
self.data = data;
if(data)then
self:Show(self.gameObject);
local sdata = data.data;
if(data.type == TeamInviteMemberType.Friend or
data.type == TeamInviteMemberType.NearlyTeamMember)then
self.name.text = sdata.name;
local proData = sdata.profession and Table_Class[sdata.profession]
if(proData)then
self.lv.text = "Lv."..sdata.level;
self.pro.text = proData.NameZh;
end
local headImageData = HeadImageData.new();
headImageData:TransByFriendData(sdata);
self.faceCell:SetData(headImageData);
elseif(data.type == TeamInviteMemberType.GuildMember)then
self.name.text = sdata.name;
self.lv.text = "Lv."..sdata.baselevel;
local proData = sdata.profession and Table_Class[sdata.profession]
if(proData)then
self.pro.text = proData.NameZh;
end
local headImageData = HeadImageData.new();
headImageData:TransByGuildMemberData(sdata);
self.faceCell:SetData(headImageData);
elseif(data.type == TeamInviteMemberType.MemberCat)then
self.name.text = sdata.name;
self.lv.text = "Lv."..tostring(sdata.baselv);
if(sdata:IsHireMember())then
self.pro.text = string.format(ZhString.TeamInviteMembCell_MasterTip, sdata.mastername);
else
local proData = sdata.profession and Table_Class[sdata.profession]
if(proData)then
self.pro.text = proData.NameZh;
end
end
UIUtil.WrapLabel (self.pro);
local headImageData = HeadImageData.new();
headImageData:TransByTeamMemberData(sdata);
self.faceCell:SetData(headImageData);
end
local isInTeam = TeamProxy.Instance:IsInMyTeam(data.id);
self:ActiveInviteButton(not isInTeam);
else
self:Hide(self.gameObject);
end
self:UpdateRestTip();
end
function TeamInviteMembCell:ActiveInviteButton(b, nosetlab)
self.buttonActive = b;
if(nosetlab ~= true)then
self.inviteLabel.text = b and ZhString.TeamInviteMembCell_Invite or ZhString.TeamInviteMembCell_Invited;
end
if(b)then
self:SetTextureColor(self.inviteButton, Color(1,1,1));
else
self:SetTextureGrey(self.inviteButton);
end
end
function TeamInviteMembCell:UpdateRestTip()
if(self.data == nil or TeamInviteMemberType.MemberCat ~= self.data.type)then
self:RemoveRestTimeTick();
self.eventType = "Invite";
self.restTip:SetActive(false);
return;
end
local sdata = self.data.data;
local expiretime = sdata.expiretime or 0;
local curtime = ServerTime.CurServerTime()/1000;
if(expiretime~=0 and curtime >= expiretime)then
self.eventType = "Hire";
self.faceCell:SetIconActive(false);
self.restTip:SetActive(true);
self.restTime.text = ZhString.TeamInviteMembCell_ExpireTime;
self.inviteLabel.text = ZhString.TeamInviteMembCell_ReHire;
if(sdata and sdata.masterid ~= Game.Myself.data.id)then
self:ActiveInviteButton(false, true);
end
else
self.eventType = "Invite";
local resttime = sdata and sdata.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.faceCell:SetIconActive(false);
else
self.restTip:SetActive(false);
self:RemoveRestTimeTick();
end
end
end
function TeamInviteMembCell:UpdateRestTime()
local sdata = self.data.data;
local resttime = sdata and sdata.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.TeamInviteMembCell_RestTime, min , sec)
else
self:RemoveRestTimeTick();
end
end
function TeamInviteMembCell:RemoveRestTimeTick()
if(self.restTimeTick)then
TimeTickManager.Me():ClearTick(self, 1)
self.restTimeTick = nil;
self.faceCell:SetIconActive(true);
self.restTime.text = "";
end
end
function TeamInviteMembCell:OnRemove()
self:RemoveRestTimeTick();
end