ro-table/Asstes/Resources/Script/FrameWork/GUI/cell/DesertWolfInviteCell.txt
2025-06-04 05:02:57 +08:00

171 lines
4.6 KiB
Plaintext

local baseCell = autoImport("BaseCell")
DesertWolfInviteCell = class("DesertWolfInviteCell", baseCell);
local resID = ResourcePathHelper.UICell("DesertWolfInviteCell");
local replyType = PvpProxy.Type.DesertWolf
local intervalTime = GameConfig.Team.inviteovertime
local tempHeightHigh = 485
local tempHeightLow = 378
function DesertWolfInviteCell:ctor(parent, data)
self.parent = parent;
self.data = data;
self:Enter()
end
function DesertWolfInviteCell:Enter()
if(not self.gameObject)then
self.gameObject = self:CreateObj(resID, self.parent);
local bgGo = self:FindGO("Bg")
self.bgImg =self:FindGO("BgImg"):GetComponent(UISprite)
self:SetBgImgHeight()
self.noBtn = self:FindGO("NoBtn");
self.yesBtn = self:FindGO("YesBtn");
self.Context = self:FindGO("Context"):GetComponent(UILabel);
self.timeSlider = self:FindGO("TimeSlider"):GetComponent(UISlider);
self.headGrid=self:FindGO("memberGrid",bgGo):GetComponent(UIGrid);
self.playerTipStick = self:FindComponent("Stick", UIWidget);
self.headCtl = UIGridListCtrl.new(self.headGrid , DesertInviteHeadCell, "DesertInviteHeadCell")
self.headCtl:AddEventListener(MouseEvent.MouseClick, self.ClickMember, self);
self:AddClickEvent(self.noBtn,function (g)
self:OnRefuse()
end)
self:AddClickEvent(self.yesBtn,function (g)
self:OnConfirm()
end)
end
self:SetData();
end
function DesertWolfInviteCell:ClickMember(cell)
local memberHeadData = cell.data;
local id = memberHeadData.iconData.id;
if(id == Game.Myself.data.id)then
return;
end
local members = self.data.members
local targetMemberData
for i=1,#members do
local teamMemberData = TeamMemberData.new(members[i])
if(teamMemberData.id==id)then
targetMemberData=teamMemberData
break
end
end
if(targetMemberData)then
local playerData = PlayerTipData.new();
playerData:SetByTeamMemberData(targetMemberData);
if(not self.playerTipShow)then
self.playerTipShow = true;
local playerTip = FunctionPlayerTip.Me():GetPlayerTip(self.playerTipStick, NGUIUtil.AnchorSide.Left, {-500,0});
local tipData = {
playerData = playerData,
funckeys = {"SendMessage", "AddFriend", "AddBlacklist", "ShowDetail"},
};
playerTip:SetData(tipData);
playerTip.closecallback = function (go)
self.playerTipShow = false;
end
else
FunctionPlayerTip.Me():CloseTip();
self.playerTipShow = false;
end
else
redlog("not find member", tostring(id));
end
end
function DesertWolfInviteCell:OnRefuse()
local roomid = self.data.roomid
ServiceMatchCCmdProxy.Instance:CallRevChallengeCCmd(replyType,roomid,nil,nil,nil,2)
self:OnExit()
end
function DesertWolfInviteCell:OnConfirm()
local roomid = self.data.roomid
ServiceMatchCCmdProxy.Instance:CallRevChallengeCCmd(replyType,roomid,nil,nil,nil,1)
self:OnExit()
end
function DesertWolfInviteCell:SetData()
if(not self.data)then return end
local data = self.data
self.data = data;
self.roomID = data.roomid
self:RefreshTeamMemberHead()
self.type=data.type
local zoneid = data.challenger_zoneid % 10000
local zoneidStr = ChangeZoneProxy.Instance:ZoneNumToString(zoneid)
self.Context.text =string.format(ZhString.DesertWolf_InviteChallenge,data.challenger,zoneidStr)
self:_timeCountDown()
end
function DesertWolfInviteCell:RefreshTeamMemberHead()
local teamData = self.data.members
if(not self.headDatas)then
self.headDatas = {};
else
TableUtility.ArrayClear(self.headDatas);
end
for i=1,#teamData do
local headData = self.headDatas[i];
local teamMemberData = TeamMemberData.new(teamData[i])
if(teamMemberData)then
if(headData == nil)then
headData = HeadImageData.new();
self.headDatas[i] = headData;
end
headData:TransByTeamMemberData(teamMemberData);
else
self.headDatas[i] = 0;
end
end
self.headCtl:ResetDatas(self.headDatas)
self.headGrid:Reposition()
end
function DesertWolfInviteCell:SetBgImgHeight()
if(#self.data.members>3)then
self.bgImg.height=tempHeightHigh
else
self.bgImg.height=tempHeightLow
end
end
function DesertWolfInviteCell:_timeCountDown()
local deltaTime, lastTime = 0;
self.timeTick=TimeTickManager.Me():CreateTick(0, 33, function (self)
if(lastTime)then
deltaTime = deltaTime + (RealTime.time - lastTime);
local rate = (intervalTime-deltaTime)/intervalTime
self.timeSlider.value = rate;
if(deltaTime>intervalTime)then
self:OnExit()
end
end
lastTime = RealTime.time;
end, self, 1);
end
function DesertWolfInviteCell:_stopTick()
TimeTickManager.Me():ClearTick(self,1)
self.timeTick=nil;
end
function DesertWolfInviteCell:OnExit()
self:_stopTick()
Game.GOLuaPoolManager:AddToUIPool(resID, self.gameObject)
self.headCtl:RemoveAll()
self.gameObject = nil;
end