-- 茶馆Layout local ClubCmd = require("luaScript.Protocol.Club.ClubCmd") local ClubMain = class("ClubMain" , cc.UIView); local ClubCestConfig = require("luaScript.Views.Club.Cest.ClubCestConfig") function ClubMain:ctor() ClubMain.super.ctor(self) self:loadUI() end function ClubMain:loadUI() local ui = loadUI("core/res/ui/ui_club/ui_club_main.ui") self.ui = ui self:addChild(ui) end function ClubMain:onEnter() ClubMain.super.onEnter(self) --初始按钮 self:initButton() --初始化绑定消息 self:initBindEvent() --设置界面默认数据 self:setDefaultData() --获取本地茶馆操作列表 self:loadOperClubList() --请求茶馆列表数据 app.club_php:requestClubList() self:initOpenClubTable() autoAdaptWidth(self.ui.Items.ScrollView) self.lastZhiDingTime = 0; end function ClubMain:initButton() --关闭 self.ui.Items.Button_close:registerClick(handler(self , self.onClose)) --创建茶馆 self.ui.Items.Button_create:registerClick(handler(self , self.onCreateClub)) --加入茶馆 self.ui.Items.Button_join:registerClick(handler(self , self.onJoinClub)) end function ClubMain:initOpenClubTable() logD(app.club_php.clubID) --php中如果有保存的茶馆id则直接进入此茶馆(当前情况说明是从游戏退出到茶馆) if app.club_php.clubID~=0 and app.club_php.clubList[app.club_php.clubID] then self.isOpen = true --已经打开界面防止重复打开 local view = import("luaScript.Views.Club.ClubTable"):new(app.club_php.clubID) view:setAnchorPoint(cc.p(0.5, 0.5)) app:showWaitDialog(view) end end function ClubMain:initBindEvent() --绑定获取茶馆列表消息 self:bindEvent(app.club_php , GAME_EVENT.CLUB_LIST , handler(self , self.onGetClubResult)); self:bindEvent(app.club_php, GAME_EVENT.CLUB_MEMBER_SET_SUCCESS, handler(self, self.onMemberSetSuccess)) --亲友圈数据名称公告改变 self:bindEvent(app.club_php , GAME_EVENT.CLUB_CHANGE_PUSH , handler(self , self.showClubInfo)) end function ClubMain:setDefaultData() --没有茶馆列表 self.ui.Items.Layout_no_club:setVisible(false) if ClubCestConfig.CestOpen then self.ui.Items.Text_1:setString(PLN.CLUB_CEST_NOT_TIP) else self.ui.Items.Text_1:setString(PLN.CLUB_NOT_TIP) end end function ClubMain:showClubInfo() local mListView = self.ui.Items.ScrollView mListView:getInnerContainer():setAutoSize(true) mListView:hideAllBar(); mListView:removeAllChildren(); --保存操作的茶馆列表 local function getTimeNow() return os.time() * 1000 + math.random(1, 999); end local clubList = app.club_php.clubList -- 重置所有茶馆的操作时间 -- for clubId, clubInfo in pairs(clubList) do -- if not self.operClubList[tostring(clubId)] then -- self.operClubList[tostring(clubId)] = getTimeNow() -- end -- end local stickyTimeClub = {} for clubId, clubInfo in pairs(clubList) do if not self.operClubList[tostring(clubId)] and (not clubInfo.stickyTime or tonumber(clubInfo.stickyTime) <= 0) then self.operClubList[tostring(clubId)] = getTimeNow() elseif self.operClubList[tostring(clubId)] and tonumber(clubInfo.stickyTime or 0) > 0 then --操作时间已赋值,但此亲友圈已置顶,则将此操作时间置空 self.operClubList[tostring(clubId)] = nil end if clubInfo.stickyTime and tonumber(clubInfo.stickyTime) > 0 then --置顶俱乐部时间+id,用于排序放最前面 --self.operClubList[tostring(clubId)] = getTimeNow() + tonumber(clubId) stickyTimeClub[tostring(clubId)] = tonumber(clubInfo.stickyTime); end end -- 删除已经不存在的茶馆数据 for clubId, opTime in pairs(self.operClubList) do if not clubList[tonumber(clubId)] then self.operClubList[tostring(clubId)] = nil end end --排序置顶俱乐部 local newT = {} for clubID,stickyTime in pairs(stickyTimeClub) do newT[stickyTime] = clubID end -- 排序 local tNewOperTimeList = {} for clubID,operTime in pairs(self.operClubList) do tNewOperTimeList[operTime] = clubID; end local function SelectFunction(gid, zhidingTime, isZhiding) local timeNow = os.time(); if timeNow - self.lastZhiDingTime <= 1.5 then showTooltip("点击太过频繁,请稍后再试") return end self.lastZhiDingTime = timeNow; --更新操作时间数据 self.operClubList[tostring(gid)] = os.time() * 1000 + math.random(1, 999); if gid and isZhiding == nil and zhidingTime <= 0 then --界面刷新 self:showClubInfo() end self:saveOperClubList(); if isZhiding ~= nil then if isZhiding == true then --设置类型{1:邀请勿扰, $value 拒接邀请对象uid; 2:屏蔽开局用户, $value 1屏蔽0可见; 3:俱乐部置顶, $value 1置顶0取消置顶} local setType = 3; local memberSetValue = 1 app.club_php:requestMemberSet(gid, setType, memberSetValue) else --设置类型{1:邀请勿扰, $value 拒接邀请对象uid; 2:屏蔽开局用户, $value 1屏蔽0可见; 3:俱乐部置顶, $value 1置顶0取消置顶} local setType = 3; local memberSetValue = 0 app.club_php:requestMemberSet(gid, setType, memberSetValue) end end end logD("clubList-----"..table.nums(clubList)) if table.nums(clubList) > 0 then self.ui.Items.Layout_no_club:setVisible(false) else self.ui.Items.Layout_no_club:setVisible(true) end -- 按照排序结果加载或更新ui local idx = 1; --设置置顶俱乐部 for time, gid in pairsByKeysEx(newT) do local item = import("luaScript.Views.Club.ClubMainItem"):new(idx, clubList[tonumber(gid)], SelectFunction); mListView:addChild(item.ui) idx = idx + 1 end for time, gid in pairsByKeysEx(tNewOperTimeList) do local item = import("luaScript.Views.Club.ClubMainItem"):new(idx, clubList[tonumber(gid)] , SelectFunction); mListView:addChild(item.ui) idx = idx + 1 end mListView:jumpToTopOnSizeChanged() end function ClubMain:onClose() playBtnCloseEffect() app:dispatchEvent({name = GAME_EVENT.CLUB_MAIN_CLOSE}) self:removeFromParent() end -- 创建茶馆 function ClubMain:onCreateClub() playBtnEffect() local view = import("luaScript.Views.Club.ClubCreate"):new() view:setAnchorPoint(cc.p(0.5, 0.5)) app:showWaitDialog(view) end -- 加入茶馆 function ClubMain:onJoinClub() playBtnEffect() local view = import("luaScript.Views.Club.ClubJoin"):new() view:setAnchorPoint(cc.p(0.5, 0.5)) app:showWaitDialog(view) if cc.Application:getInstance():getTargetPlatform() == 0 then view:onClickTest() end end --获取茶馆列表结果 function ClubMain:onGetClubResult() --显示茶馆列表数据 self:showClubInfo() if not getInClubRoom() and app.club_php.clubID~=0 and not self.isOpen and app.club_php.clubList[app.club_php.clubID] then --重连进入房间解散游戏会触发这段代码 self.isOpen = true local view = import("luaScript.Views.Club.ClubTable"):new(app.club_php.clubID) view:setAnchorPoint(cc.p(0.5, 0.5)) app:showWaitDialog(view) end end -- 保存茶馆列表操作 function ClubMain:saveOperClubList() logD("===================saveOperClubList===============") local fileName = "OperateClubList.data" local fileString = json.encode(self.operClubList or {}) logD("save:",fileString) saveStringToFile(fileString, fileName) end -- 从本地读取玩家上次的选择 function ClubMain:loadOperClubList() local fileName = "OperateClubList.data" local fileString = loadStringFromFile(fileName) if fileString then self.operClubList = json.decode(fileString) or {} else self.operClubList = {} end end --- ClubMain:onMemberSetSuccess 置顶/取消置顶回调 function ClubMain:onMemberSetSuccess(event) if not event then return end if event.setType == 3 then --是否置顶 app.club_php:getClubList() end end return ClubMain