local FamilyCreateView = import(".FamilyZuo.FamilyCreateView") local FamilyJoinView = import(".FamilyZuo.FamilyJoinView") local FamilyManagerView = import(".FamilyZuo.FamilyManagerView") local FamilyPlayListView = import(".FamilyZuo.FamilyPlayListView") FamilyViewZuo = {} local M = FamilyViewZuo function FamilyViewZuo.new() UIPackage.AddPackage("base/Family/ui/Family") setmetatable(M, { __index = BaseView }) local self = setmetatable({}, { __index = M }) self.class = 'FamilyMainZuoView' self._full = true self._full_offset = false self._fristRoom = true self:init('ui://Family/Main_zuo') return self end function M:init(url) BaseView.InitView(self, url) local view = self._view --退出按钮 view:GetChild('btn_exit').onClick:Set(function() ViewManager.ChangeView(ViewManager.View_Lobby) end) --亲友圈列表 self._viewList_familyList = view:GetChild('familyList') self._viewList_familyList.itemRenderer = handler(self, self.FamilyListRenderer) view:GetController('showList').onChanged:Set(function(context) if context.sender.selectedIndex == 0 then view:GetTransition('familyListExit'):Play(1, 0, function() view:GetChild('showList').visible = false end) else view:GetChild('showList').visible = true view:GetTransition('familyLisrShow'):Play(1, 0, function() end) end end) --房间列表 self._viewList_tableList = view:GetChild('list_roomTable') self._viewList_tableList.itemRenderer = handler(self, self.FamilyTableRenderer) --创建亲友圈和加入亲友圈 view:GetChild('btn_createFamily').onClick:Set(function() FamilyCreateView.new({}, function() self._viewList_familyList.numItems = #DataManager.groups end) end) view:GetChild('btn_joinFamily').onClick:Set(function() FamilyJoinView.new() end) --管理页面 view:GetChild('btn_manager').onClick:Set(function() FamilyManagerView.new({}) end) --新玩法管理 view:GetChild('btn_showPlayEdit').onClick:Set(function() FamilyPlayListView.new({}) end) end --列表渲染类函数-- function M:FamilyListRenderer(index, obj) local groupList = DataManager.groups.groupList obj:GetChild('text_name').text = groupList[index + 1].name obj:GetChild('text_num').text = string.format("在线:1") end function M:FamilyTableRenderer(index, obj) self._group = DataManager.CurrenGroup local playList = self._group.playList local roomList = self._group.rooms local tmp if index < #playList then -- 默认玩法,开桌子之类的 tmp = playList[index + 1] for i = 1, tmp.maxPlayers do local head = obj:GetChild(string.format("head%s", i)) head:GetChild('btn_head').icon = "" head.onClick:Set(function(context) self:ClickMachRoom(context, tmp) end) end elseif index - #playList < #roomList then --存在的桌子 local roomInfo = roomList[index - #playList + 1] tmp = self._group:getPlay(roomInfo.pid) local plist = roomInfo.plist for i = 1, 4 do if i <= #plist then local btn = obj:GetChild(string.format("head%s", i)) btn:GetController('zuo').selectedIndex = 1 btn:GetChild('text_name').text = plist[i].nick ImageLoad.Load(plist[i].portrait, btn:GetChild('btn_head')._iconObject) else local btn = obj:GetChild(string.format("head%s", i)) btn:GetController('zuo').selectedIndex = 0 btn:GetChild("btn_head").icon = "ui://Family/icon_luozuo" btn.onClick:Set(function(context) self:ClickJoinRoom(context, tmp, roomInfo) end) end end end obj:GetController('playerNum').selectedIndex = tmp.maxPlayers - 2 obj:GetChild('text_playName').text = tmp.name obj:GetChild('text_roundNum').text = string.format("(0/%s)", ExtendManager.GetExtendConfig(tmp.gameId):GetGameInfo():LoadConfigOneInfo(tmp.config, tmp.hpData, "maxRound") or 0) end --进入亲友圈 function M:EnterFamily(index_family, only) local groups = DataManager.groups.groupList index_family = index_family or 1 if index_family > #groups then return end local fgCtr = ControllerManager.GetController(NewGroupController) local familyId = groups[index_family].id fgCtr:FG_EnterGroup(familyId, function(res) if res.ReturnCode ~= 0 then if only then ViewUtil.ErrorTip(res.ReturnCode, "进入亲友圈失败") else self:EnterFamily(index_family + 1) end else DataManager.CurrenGroup = DataManager.groups:get(familyId) self._group = DataManager.CurrenGroup local view = self._view view:GetChild('text_familyName').text = self._group.name view:GetChild('text_familyid').text = self._group.id self._viewList_familyList.selectedIndex = index_family - 1 self:UpdateRoom() end end) end --房间处理方法 function M:UpdateRoom() local group = self._group local playList = self._group.playList local roomList = self._group.rooms self._viewList_tableList.numItems = #playList + #roomList end --点击玩法创建桌子 function M:ClickMachRoom(context, playinfo) local group = DataManager.CurrenGroup local roomCtr = ControllerManager.GetController(RoomController) roomCtr:PublicJoinRoom( Protocol.WEB_FG_MATCH_ROOM, "", true, function(response) if (response.ReturnCode == -1) then ViewUtil.CloseModalWait2() ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1') -- RestartGame() return end if response.ReturnCode ~= 0 then ViewUtil.CloseModalWait2() ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败') -- ViewManager.ChangeView(ViewManager.View_Lobby) return else UpdateBeat:Remove(self.OnUpdate, self) FamilyView.lastId = group.id ViewManager.ChangeView(ViewManager.View_Main, playinfo.gameId, { _flag_showTip = true }) ViewUtil.CloseModalWait2() end end, group.id, playinfo.id ) end --点击桌子进入游戏 function M:ClickJoinRoom(context, playinfo, room) local group = DataManager.CurrenGroup local roomCtr = ControllerManager.GetController(RoomController) roomCtr:PublicJoinRoom( Protocol.WEB_FG_JOIN_ROOM, room.id, true, function(response) if (response.ReturnCode == -1) then ViewUtil.CloseModalWait2() ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1') -- RestartGame() return end if response.ReturnCode ~= 0 then ViewUtil.CloseModalWait2() ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败') -- ViewManager.ChangeView(ViewManager.View_Lobby) else UpdateBeat:Remove(self.OnUpdate, self) FamilyView.lastId = group.id ViewManager.ChangeView(ViewManager.View_Main, playinfo.gameId, { _flag_showTip = true }) ViewUtil.CloseModalWait2() end end, group.id, room.pid ) end ----------------- function M:FillData() local groups = DataManager.groups.groupList self._viewList_familyList.numItems = #groups self:EnterFamily() end function M:Close() getmetatable(M).__index.Close(self) -- UpdateBeat:Remove(self.OnUpdate, self) coroutine.stopAll() BaseWindow.DestroyAll() DSTweenManager.ClearTween() end function M:Destroy() getmetatable(M).__index.Destroy(self) -- UpdateBeat:Remove(self.OnUpdate, self) coroutine.stopAll() BaseWindow.DestroyAll() DSTweenManager.ClearTween() end function M:Show() ViewUtil.ShowModalWait2() self:FillData() ViewUtil.CloseModalWait2() BaseView.Show(self) -- UpdateBeat:Add(self.OnUpdate, self) end return M