|
- -- 茶馆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
|