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

168 lines
3.9 KiB
Plaintext

GuildFindPage = class("GuildFindPage", SubView)
autoImport("GuildCell");
function GuildFindPage:Init(parent)
self:CreatePageObj(parent);
self:InitUI();
self:MapListenEvt();
self.pageMap = {};
end
function GuildFindPage:CreatePageObj(parent)
self.parent = parent;
if(self.parent)then
self:LoadPreferb("view/GuildFindPage", self.parent, true);
end
end
function GuildFindPage:InitUI()
local guildWrap = self:FindGO("GuildWrapContent");
local wrapConfig = {
wrapObj = guildWrap,
cellName = "GuildCell",
control = GuildCell,
};
self.guildlstCtl = WrapCellHelper.new(wrapConfig);
self.keyInput = self:FindComponent("Input", UIInput);
UIUtil.LimitInputCharacter(self.keyInput, 8);
self.noneTip = self:FindGO("NoneTip", self.parent);
self.exitCDTime = self:FindComponent("ExitCDTime", UILabel);
local searchButton = self:FindGO("SearchButton");
self:AddClickEvent(searchButton, function ()
local key = self.keyInput.value;
if(key and key~="")then
self.keyword = key;
self:QueryGuildPageList(nil, key);
else
self.pageMap = {};
self:QueryGuildPageList(1);
self.guildlstCtl:ResetPosition();
end
end);
local scrollView = self:FindComponent("GuildScroll", UIScrollView);
scrollView.momentumAmount = 100;
NGUIUtil.HelpChangePageByDrag(scrollView, function ()
self:GetPrePageGuilds();
end, function ()
self:GetNextPageGuilds();
end, 120)
end
function GuildFindPage:GetPrePageGuilds()
if(self.nowPage)then
local page = math.max(self.nowPage - 1, 1);
self:QueryGuildPageList(page);
end
end
function GuildFindPage:GetNextPageGuilds()
if(self.nowPage)then
local page = self.nowPage + 1;
if(self.maxPage)then
page = math.min(self.maxPage, page);
end
self:QueryGuildPageList(page);
end
end
function GuildFindPage:QueryGuildPageList(page, keyword)
self.prePage = self.nowPage;
self.nowPage = page or 1;
if(keyword)then
self.nowPage = nil;
self.prePage = nil;
self.pageMap = {};
self.keyword = keyword;
ServiceGuildCmdProxy.Instance:CallQueryGuildListGuildCmd(keyword);
else
if(not self.pageMap[self.nowPage])then
self.pageMap[self.nowPage] = 1;
ServiceGuildCmdProxy.Instance:CallQueryGuildListGuildCmd(nil, self.nowPage);
if(self.nowPage > 1)then
MsgManager.FloatMsg(nil, ZhString.GuildFindPage_Loading);
end
end
end
end
function GuildFindPage:MapListenEvt()
self:AddListenEvt(ServiceEvent.GuildCmdQueryGuildListGuildCmd, self.HandleGuildListUpdate);
end
function GuildFindPage:HandleGuildListUpdate(note)
local datas = GuildProxy.Instance:GetGuildList();
if(self.keyword)then
self.keyword = nil;
self.guildlstCtl:ResetDatas(datas);
self.guildlstCtl:ResetPosition();
elseif(self.prePage)then
if(#datas > 0)then
if(self.nowPage < self.prePage)then
for i=#datas, 1, -1 do
self.guildlstCtl:InsertData(datas[i], 1);
end
elseif(self.prePage < self.nowPage)then
for i=1,#datas do
self.guildlstCtl:InsertData(datas[i]);
end
end
else
self.nowPage = self.prePage;
self.maxPage = self.nowPage;
end
elseif(self.nowPage)then
self.guildlstCtl:ResetDatas(datas);
end
local alldatas = self.guildlstCtl:GetDatas();
helplog("alldatas", #alldatas, #datas, self.prePage, self.nowPage);
self.noneTip:SetActive(#alldatas == 0);
end
function GuildFindPage:UpdateCDTime()
local exit_timetick = GuildProxy.Instance:GetExitTimeTick();
if(exit_timetick == nil or exit_timetick == 0)then
self.exitCDTime.text = "";
return;
end
local delta_sec = ServerTime.ServerDeltaSecondTime(exit_timetick * 1000);
if(delta_sec <= 0)then
self.exitCDTime.text = "";
return;
end
local hour = math.ceil(delta_sec/3600);
self.exitCDTime.text = string.format(ZhString.GuildFindPage_ExitCDTip, hour);
end
function GuildFindPage:OnEnter()
GuildFindPage.super.OnEnter(self);
self:QueryGuildPageList(1);
self:UpdateCDTime();
end
function GuildFindPage:OnExit()
GuildFindPage.super.OnExit(self);
end