--- -- ================================================================ -- 文件名: PKRoomMenuView.lua -- 描述: 房间内右上角菜单组件 -- 版权: Copyright © 2016-2019 公司名称 版权所有 -- 作者: Administrator -- 创建日期: 2019-12-13 -- 更新日期: 2019-12-13 -- 备注: -- ================================================================ -- -- local PKRoomSettingView=ZPFramework.ZPImport("zp_base.luaScript.Views.Room.PKRoomSettingView") local PKRoomMenuView = class("PKRoomMenuView", cc.UIView); function PKRoomMenuView:ctor () PKRoomMenuView.super.ctor(self) self._isOpened = false; self._buttonEvent = {} end function PKRoomMenuView:loadUI () local ui = loadUI("pk_base/res/ui/ui_fangjian/pk_ui_room_menu.ui"); self:addChild(ui); self.ui = ui; end function PKRoomMenuView:onEnter () PKRoomMenuView.super.onEnter(self) self:loadUI() self:initViews() self:initEvents(); end function PKRoomMenuView:initViews () self.ui.Items.Button_Menu:registerClick(handler(self, self._onBtnMenuClicked)) self.ui.Items.Button_Dismiss:registerClick(handler(self, self._onBtnDismissClicked)) self.ui.Items.Button_Set:registerClick(handler(self, self._onBtnSetClicked)) self.ui.Items.Button_Leave:registerClick(handler(self, self._onBtnLeaveClicked)) self.ui.Items.Layout_Mask:registerClick(handler(self, self._onLayoutMaskClicked)) self.ui.Items.Button_Club:registerClick(handler(self , self._onBtnClubClicked)) self.ui.Items.Button_Wechat:registerClick(handler(self , self._onBtnWechatClicked)) self.ui.Items.Button_ScreenShot:registerClick(handler(self , self._onBtnScreenShotClicked)) self.ui.Items.Layout_Menu:setTouchEnabled(true) self.ui.Items.Layout_Menu:setVisible(false) self.ui.Items.Layout_Mask:setVisible(false) self.ui.Items.Button_Club:setVisible(app.club_php.clubID and app.club_php.clubID ~= 0) local isGameStart = app.room.roomInfo.nGameStartCount > 0 self.ui.Items.Button_Leave:setEnabled(not isGameStart); self:setButtonVisible("Wechat", false) self:setButtonVisible("ScreenShot", false) self:checkCanDismiss() end --- -- 初始化事件 -- function PKRoomMenuView:initEvents() self:bindEvent(app.room, "onResponseGameStart", handler(self, self.onResponseGameStart)); end --- -- 遮罩层点击事件 -- @return -- function PKRoomMenuView:_onLayoutMaskClicked () logD("PKRoomMenuView:_onLayoutMaskClicked") playBtnEffect() if not self._isOpened then return end self:toggleMenu() end --- -- 菜单按钮点击事件 -- @return -- function PKRoomMenuView:_onBtnMenuClicked () logD("PKRoomMenuView:_onBtnMenuClicked") playBtnEffect() self:toggleMenu() end --- -- 解散按钮点击事件 -- @return -- function PKRoomMenuView:_onBtnDismissClicked () logD("PKRoomMenuView:_onBtnDismissClicked") playBtnEffect() if self._buttonEvent["Dismiss"] then self._buttonEvent["Dismiss"]() return end local function onClickOk() app.room:requestDismissRoom(1) end local function onClickCancel() end showConfirmDialog("确定要申请解散房间吗?", onClickOk, onClickCancel) app:dispatchEvent({name = "EVENT_ROOM_MENU_DISMISS_CLICKED"}) self:toggleMenu() end --- -- 设置按钮点击事件 -- @return -- function PKRoomMenuView:_onBtnSetClicked () logD("PKRoomMenuView:_onBtnSetClicked") playBtnEffect() if self._buttonEvent["Set"] then self._buttonEvent["Set"]() return end -- local view = PKRoomSettingView:new(); -- view:setAnchorPoint(cc.p(0.5, 0.5)); -- app:showWaitDialog(view); app:dispatchEvent({name = "EVENT_ROOM_MENU_SET_CLICKED"}) self:toggleMenu() end --- -- 离开按钮点击事件 -- @return -- function PKRoomMenuView:_onBtnLeaveClicked () logD("PKRoomMenuView:_onBtnLeaveClicked") playBtnEffect() if app.room.roomInfo.nGameStartCount > 0 then self.ui.Items.Button_Leave:setEnabled(false); showTooltip("正在游戏中,不可以退出游戏!"); return end if self._buttonEvent["Leave"] then self._buttonEvent["Leave"]() return end app.room.roomInfo.bQuitRoom = true; -- 这个字段碰胡用到,兼容,后面看能不能删除 self.ui:sendMsg(app.room, "callLeaveRequest"); app:dispatchEvent({name = "EVENT_ROOM_MENU_LEAVE_CLICKED"}) self:toggleMenu() end --- -- 包间按钮点击事件 -- @return -- function PKRoomMenuView:_onBtnClubClicked () logD("PKRoomMenuView:_onBtnClubClicked") playBtnEffect() if self._buttonEvent["Club"] then self._buttonEvent["Club"]() return end openClub() end --- -- 微信按钮点击事件 -- @return -- function PKRoomMenuView:_onBtnWechatClicked () playBtnEffect() if self._buttonEvent["Wechat"] then self._buttonEvent["Wechat"]() return end app.plugin:gotoWeiXin() end --- -- 截图按钮点击事件 -- @return -- function PKRoomMenuView:_onBtnScreenShotClicked () playBtnEffect() if self._buttonEvent["ScreenShot"] then self._buttonEvent["ScreenShot"]() return end showScreenShot() end --- -- 开关菜单按钮 -- @param -- @return -- function PKRoomMenuView:toggleMenu( ) self._isOpened = not self._isOpened self.ui.Items.Layout_Menu:setVisible(self._isOpened) self.ui.Items.Layout_Mask:setVisible(self._isOpened) end --- -- 禁用/启用指定按钮 -- @param key 按钮索引,分别是Dismiss(解散)、Leave(退出)、Set(设置)、Wechat(微信)、ScreenShot(截图分享) -- @param isEnabled -- @return -- function PKRoomMenuView:setButtonEnabled (key, isEnabled) local button = nil if key == "Dismiss" then button = self.ui.Items.Button_Dismiss elseif key == "Leave" then button = self.ui.Items.Button_Leave elseif key == "Set" then button = self.ui.Items.Button_Set elseif key == "Wechat" then button = self.ui.Items.Button_Wechat elseif key == "ScreenShot" then button = self.ui.Items.Button_ScreenShot end button:setEnabled(isEnabled) end --- -- 显示/隐藏指定按钮 -- @param key 按钮索引,分别是Dismiss(解散)、Leave(退出)、Set(设置)、Wechat(微信)、ScreenShot(截图分享) -- @param isEnabled -- @return -- function PKRoomMenuView:setButtonVisible (key, isVisible) local butotn = nil if key == "Dismiss" then button = self.ui.Items.Button_Dismiss elseif key == "Leave" then button = self.ui.Items.Button_Leave elseif key == "Set" then button = self.ui.Items.Button_Set elseif key == "Wechat" then button = self.ui.Items.Button_Wechat elseif key == "ScreenShot" then button = self.ui.Items.Button_ScreenShot end button:setVisible(isVisible) end --- -- 自定义按钮事件 -- @param key 按钮索引,分别是Dismiss(解散)、Leave(退出)、Set(设置)、Wechat(微信)、ScreenShot(截图分享) -- @param func -- @return -- function PKRoomMenuView:setButtonEvent (key, func) if type(func) ~= "function" then return end self._buttonEvent[key] = func end --- -- 检测是否可以解散房间 -- @param -- @return -- function PKRoomMenuView:checkCanDismiss( ) local onCanDismissCallback = function (info) local nUserId = app.room:getMyUserId() local roomInfo = app.room.roomInfo or {} local canDismiss = (tonumber(info.canDismiss or 1) == 1) or roomInfo.nRoomOwnedUid == nUserId or dd.IClub.isAdmin() if roomInfo.nGameStartCount == 0 and roomInfo.nRoomOwnedUid ~= nUserId then canDismiss = false end self:onCanDismissCallback(canDismiss) end if dd.IClub.getCanDismiss then local canDismiss = dd.IClub.getCanDismiss(onCanDismissCallback) if canDismiss then onCanDismissCallback({canDismiss = canDismiss}) end end end function PKRoomMenuView:onCanDismissCallback(canDismiss) if self.ui.Items.Button_Dismiss then self.ui.Items.Button_Dismiss:setEnabled(canDismiss) end end --- -- 牌局开始,检测是否可以解散房间 -- function PKRoomMenuView:onResponseGameStart() self:checkCanDismiss(); local isGameStart = app.room.roomInfo.nGameStartCount > 0 self.ui.Items.Button_Leave:setEnabled(not isGameStart); end return PKRoomMenuView