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

248 lines
6.9 KiB
Plaintext

TeamFindPopUp = class("TeamFindPopUp", ContainerView)
TeamFindPopUp.ViewType = UIViewType.NormalLayer
autoImport("TeamCell");
autoImport("TeamGoalCombineCell");
function TeamFindPopUp:Init()
self:InitUI();
self:AddViewInerest();
end
function TeamFindPopUp:InitUI()
local findPage = self:FindGO("TeamFind");
-- Team levels begin
local filter = self:FindComponent("LevelPopUpFilter", UIPopupList);
local minlvOption = { 0 };
local filterlvConfig = GameConfig.Team.filtratelevel;
local mylv = Game.Myself.data.userdata:Get(UDEnum.ROLELEVEL);
for i=1,#filterlvConfig do
if(filterlvConfig[i] <= mylv)then
table.insert(minlvOption, filterlvConfig[i]);
end
end
for i=1,#minlvOption do
local minlv = minlvOption[i];
if(minlv == 0)then
filter:AddItem(ZhString.TeamFindPopUp_NoneFilterLevel, 0);
else
filter:AddItem(string.format(ZhString.TeamFindPopUp_StartLevel, minlv), minlv);
end
end
self.filterlevel = 0;
EventDelegate.Add (filter.onChange, function()
if(self.filterlevel ~= filter.data)then
self.filterlevel = filter.data;
self:CallTeamList(1, true);
end
end);
-- Team levels end
-- Team Goals begin
local goalslist = self:FindComponent("GoalsTabel", UITable, findPage);
self.goalListCtl = UIGridListCtrl.new(goalslist,TeamGoalCombineCell , "TeamGoalCombineCell");
self.goalListCtl:AddEventListener(MouseEvent.MouseClick, self.ClickGoal, self);
-- Team Goals end
-- Team list begin
local teamlistObj = self:FindGO("TeamList", findPage);
local wrapConfig = {
wrapObj = teamlistObj,
cellName = "TeamCell",
control = TeamCell,
};
self.teamListCtl = WrapCellHelper.new(wrapConfig);
self.noteamtip = self:FindGO("NoTeamTip");
local scrollView = self:FindComponent("TeamsScroll", UIScrollView);
scrollView.momentumAmount = 100;
NGUIUtil.HelpChangePageByDrag(scrollView, function ()
if(self.nowPage)then
local page = math.max(self.nowPage - 1, 1);
self:CallTeamList(page);
end
end, function ()
if(self.nowPage)then
local page = self.nowPage + 1;
if(self.maxPage)then
page = math.min(self.maxPage, page);
end
self:CallTeamList(page);
end
end, 120)
-- Team list end
self:AddButtonEvent("CreateTeamButton", function (go)
self:CreateTeam();
end);
self:AddButtonEvent("RefreshButton", function (go)
self:CallTeamList(1, true);
end);
self:AddButtonEvent("InviteMemberButton", function (go)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.TeamInvitePopUp})
end);
-- Quick Enter begin
self.quickEnterButton = self:FindGO("QuickEnterButton");
self:AddClickEvent( self.quickEnterButton, function (go)
local isEnter = TeamProxy.Instance:IsQuickEntering();
ServiceSessionTeamProxy.Instance:CallQuickEnter(self.goal, nil, not isEnter);
end );
self.quickEntering = self:FindGO("Entering", self.quickEnterButton);
self.quickNone = self:FindGO("None", self.quickEnterButton);
-- Quick Enter end
end
function TeamFindPopUp:CallTeamList(page, init)
if(init)then
self.prePage = nil;
self.nowPage = 1;
else
self.prePage = self.nowPage;
self.nowPage = page;
end
ServiceSessionTeamProxy.Instance:CallTeamList(self.goal, self.nowPage, self.filterlevel);
end
function TeamFindPopUp:OnEnter()
TeamFindPopUp.super.OnEnter(self);
if(self.viewdata and self.viewdata.viewdata)then
self.startGoal = self.viewdata.viewdata.goalid;
self.accept = self.viewdata.viewdata.accept;
else
self.startGoal = GameConfig.Team.defaulttype;
end
self:ResetTeamGoals();
self:UpdateQuickEnterState();
end
function TeamFindPopUp:ResetTeamGoals()
local goals = TeamProxy.Instance:GetTeamGoals();
table.sort(goals, function (a,b)
return a.fatherGoal.id<b.fatherGoal.id;
end);
self.goalListCtl:ResetDatas(goals);
local goalCells = self.goalListCtl:GetCells();
if(goalCells and #goalCells>0)then
for i=1,#goalCells do
local goalData = goalCells[i].data;
if(goalData and goalData.fatherGoal.id == self.startGoal)then
goalCells[i]:ClickFather();
break;
end
end
end
end
function TeamFindPopUp:UpdateQuickEnterState( )
local isEntering = TeamProxy.Instance:IsQuickEntering();
self.quickEntering:SetActive(isEntering);
self.quickNone:SetActive(not isEntering);
end
function TeamFindPopUp:CreateTeam()
local defaultname = Game.Myself.data.name..GameConfig.Team.teamname;
local filterType = FunctionMaskWord.MaskWordType.SpecialSymbol | FunctionMaskWord.MaskWordType.Chat
local accept = self.accept or GameConfig.Team.defaultauto;
if(FunctionMaskWord.Me():CheckMaskWord(defaultname , filterType))then
defaultname = Game.Myself.data.name.."_"..GameConfig.Team.teamname;
end
local filtratelevel = GameConfig.Team.filtratelevel;
local defaultMinlv, defaultMaxlv = filtratelevel[1], filtratelevel[#filtratelevel];
local goal = self.goal;
if(goal)then
local goalData = Table_TeamGoals[goal];
if(goalData and goalData.SetShow == 0)then
if(goalData.Filter == 10)then
goal = 10010;
elseif(goalData.SetShow == 0)then
goal = goalData.type;
end
end
end
ServiceSessionTeamProxy.Instance:CallCreateTeam(defaultMinlv, defaultMaxlv, goal, accept, defaultname);
end
function TeamFindPopUp:ClickGoal(parama)
if(parama.type == "Father")then
local combine = parama.combine;
if(combine and combine~=self.combineGoal)then
if(self.combineGoal)then
self.combineGoal:SetChoose(false);
self.combineGoal:SetFolderState(false);
end
combine:SetChoose(true);
self.combineGoal = combine;
end
local folderState = combine:GetFolderState();
combine:SetFolderState(not folderState);
self.fatherGoalId = combine.data.fatherGoal.id;
self.goal = self.fatherGoalId;
self:CallTeamList(1, true);
elseif(parama.type == "Child")then
local child = parama.child;
if(child and child.data)then
self.goal = child.data.id;
self:CallTeamList(1, true);
else
self.goal = self.fatherGoalId;
self:CallTeamList(1, true);
end
end
end
function TeamFindPopUp:AddViewInerest()
self:AddListenEvt(ServiceEvent.SessionTeamTeamList, self.HandleUpdateTeamList);
self:AddListenEvt(ServiceEvent.SessionTeamEnterTeam, self.HandleEnterTeam);
self:AddListenEvt(ServiceEvent.SessionTeamQuickEnter, self.UpdateQuickEnterState);
end
function TeamFindPopUp:HandleEnterTeam(note)
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.TeamMemberListPopUp});
end
function TeamFindPopUp:HandleUpdateTeamList()
local datas = TeamProxy.Instance:GetAroundTeamList() or {};
if(self.prePage)then
if(#datas > 0)then
if(self.nowPage < self.prePage)then
for i=#datas, 1, -1 do
self.teamListCtl:InsertData(datas[i], 1);
end
elseif(self.prePage < self.nowPage)then
for i=1,#datas do
self.teamListCtl:InsertData(datas[i]);
end
end
else
self.nowPage = self.prePage;
self.maxPage = self.nowPage;
end
elseif(self.nowPage)then
self.teamListCtl:ResetDatas(datas);
self.teamListCtl:ResetPosition();
end
local datas = self.teamListCtl:GetDatas();
self.noteamtip:SetActive(#datas == 0);
end