jx_client_neibu/lua_probject/base_project/Game/View/FamilyView.lua

1150 lines
37 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

local FamilyInviteFamilyView = import('.Family.FamilyInviteFamilyView')
local CreatePlayView = import('.Family.CreatePlayView')
local GroupGameSettingView = import(".NewGroup.MngView.GroupGameSettingView_jaingxi")
local LobbyShopView = import(".Lobby.LobbyShopView")
local FamilAllRank = import(".Family.FamilAllRank")
local FamilyNumberRecord = import(".Family.FamilyNumberRecord")
local FamilyRecord = import(".Family.FamilyRecord")
---无窗口
local FamilyAllNumbers = import(".Family.FamilyAllNumbers")
local FamilyAuditNumber = import(".Family.FamilyAuditNumber")
local FamilyJoinAndCreate = import(".Family.FamilyJoinAndCreate")
local FamilyEventView = import(".Family.FamilyEventView")
local FamilyBanDesk = import(".Family.FamilyBanDesk")
local FamilyMyFamily = import(".Family.FamilyMyFamily")
local FamilyRoomCard = import(".Family.FamilyRoomCard")
local FamilyMyfamilyList = import(".Family.FamilyMyfamilyList")
local FamilyChatRoom = import(".Family.FamilyChatRoom")
local FamilyMsgRecord = import(".Family.FamilyMsgRecord")
local PlayEditView = import(".Family.PlayEditView")
---
FamilyView = {}
local M = FamilyView
local function FamilyOnline(groupId, self)
self._mgr_ctr:FG_Get_Online_Member(groupId, function(res)
end)
end
local function FamilyOffline(groupId, self)
self._mgr_ctr:FG_Get_Offline_Member(groupId, function(res)
end)
end
-- 刷新申请的红点
local function ReflashJoinsRedPoint(self)
if self._group == nil then
return
end
local btn_myfamily = self._view:GetChild("btn_myfamily")
local btn_myfamilycRedPoint = btn_myfamily:GetController("cRedPoint")
local btn_myfamilyRedPointText = btn_myfamily:GetChild("tex_redPoint")
local _joins = 0
for _, group in pairs(DataManager.groups.groupList) do
local player = group.memberMap[DataManager.SelfUser.account_id]
--[[
if player.lev ~= 3 then
_joins = _joins + group.joins
return
end
]]
_joins = _joins + group.joins
end
btn_myfamilycRedPoint.selectedIndex = 0
if _joins > 0 then
btn_myfamilycRedPoint.selectedIndex = 1
end
local RpTex = _joins
if _joins > 99 then
RpTex = "99+"
end
btn_myfamilyRedPointText.text = RpTex
self:ChangeOther()
end
local function SortMembers(Members)
local re = {}
local online = {}
local playing = {}
local offline = {}
for _, player in pairs(Members) do
-- 在线 绿色状态
if player.online == 1 and player.playing ~= "startPlaying" then
online[#online + 1] = player
end
-- 在线游戏中 红色状态
if player.online == 1 and player.playing == "startPlaying" then
playing[#playing + 1] = player
end
-- 离线
if player.online == 0 then
offline[#offline + 1] = player
end
end
for _, player in pairs(online) do
re[#re + 1] = player
end
for _, player in pairs(playing) do
re[#re + 1] = player
end
for _, player in pairs(offline) do
re[#re + 1] = player
end
return re
end
function FamilyView.new()
--print("刘海屏Rect position:%s, height:%s, width:%s", Screen.safeArea.position, Screen.safeArea.height,Screen.safeArea.width)
UIPackage.AddPackage("base/Family/ui/Family")
setmetatable(M, { __index = BaseView })
local self = setmetatable({}, { __index = M })
self.class = 'FamilyMainView'
self._full = true
self._close_destroy = false
self._fristRoom = true
self:init('ui://Family/Main')
return self
end
function M:init(url)
BaseView.InitView(self, url)
self._full_offset = false
local view = self._view
self.lastTime = os.time()
--self.n393 = self._view:GetChild("n393")
--self.n393.text = "无信息"
--self.n393.text = string.format("刘海屏Rect position:%s, height:%s, width:%s", Screen.safeArea.position, Screen.safeArea.height, Screen.safeArea.width)
--self._child_familyAuditNumber = FamilyAuditNumber.new(self)
self.com_FamilyChatRoom = FamilyChatRoom:Init(view:GetChild('com_chatRoom'), self)
local fgCtr = ControllerManager.GetController(NewGroupController)
self.familyType = view:GetController('familyType')
self.btn_close = view:GetChild('btn_close')
self.btn_myFamilyList = view:GetChild("btn_myFamilyList")
self.btn_creatFamily = view:GetChild("btn_creatFamily")
self.btn_joinFamily = view:GetChild("btn_joinFamily")
self._mgr_ctr = ControllerManager.GetController(GroupMgrController)
self.cMyfamilyList = view:GetController("cMyfamilyList")
self.btn_quitMyfamilyTab = view:GetChild("btn_quitMyfamilyTab")
self.btn_chatRoom = view:GetChild("btn_chatRoom")
self.cChatRoomRedPoint = self.btn_chatRoom:GetController("cRedPoint")
self:InitCloseClick()
--[[
fgCtr:FG_GroupList(function(res)
print("获取所有圈信息")
pt(res)
local groups = res.Data.groups
if #groups > 0 then
self.familyType.selectedIndex = 1
self:ConnetFamily(1, groups, true)
else
self:JoinFamily(true)
self.btn_chatRoom.visible = false
end
end)
]]
-------绑定成员战绩按钮
view:GetChild('btn_family_record').onClick:Set(function()
self._child_familyNumberRecord = FamilyNumberRecord.New(self, 1)
self.lastType = 1
end)
view:GetChild('btn_person_record').onClick:Set(function()
self._child_familyNumberRecord = FamilyNumberRecord.New(self, 2)
self.lastType = 1
end)
if FamilyEventView then
self._familyEventView = FamilyEventView.new(self)
self._familyEventView:_evtAddPlay()
end
-------绑定我的亲友圈按钮
view:GetChild('btn_myfamily').onClick:Set(function()
self.cMyfamilyList.selectedIndex = 1
end)
self.btn_myFamilyList.onClick:Set(function()
self.cMyfamilyList.selectedIndex = 0
--FamilyMyFamily:TryShow(self)
FamilyMyfamilyList:TryShow(self)
end)
self.btn_creatFamily.onClick:Set(function()
self.cMyfamilyList.selectedIndex = 0
self:CreateFamily()
end)
self.btn_joinFamily.onClick:Set(function()
self.cMyfamilyList.selectedIndex = 0
self:CreateFamily()
end)
self.btn_quitMyfamilyTab.onClick:Set(function()
self.cMyfamilyList.selectedIndex = 0
end)
self.btn_chatRoom.onClick:Set(function()
--local view = FamilyChatRoom.New()
--view:Show()
--FamilyChatRoom:Show(self.ChatRoomData)
self.com_FamilyChatRoom:Show()
end)
self:Reflash()
end
function M:Reflash()
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_GroupList(function(res)
print("获取所有圈信息")
pt(res)
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode)
end
local groups = res.Data.groups
if #groups > 0 then
self.familyType.selectedIndex = 1
self:ConnetFamily(1, groups, true)
else
self:JoinFamily(true)
self.btn_chatRoom.visible = false
end
end)
end
function M:InitCloseClick()
self.btn_close.onClick:Set(function()
print("lingmengfamily", self.lastType, self.familyType.selectedIndex)
if not self.lastType or self.familyType.selectedIndex == 1 then
if self._group then
FamilyOffline(self._group.id, self)
end
self._mgr_ctr:disconnect()
ControllerManager.ChangeController(LoddyController)
ViewManager.ChangeView(ViewManager.View_Lobby)
else
self.familyType.selectedIndex = self.lastType
if self.lastType == 3 then
self.lastType = 1
end
end
end)
end
function M:ShareWx()
local familyInviteFamilyView = FamilyInviteFamilyView.new()
familyInviteFamilyView:Show()
end
function M:MsgView()
self.lastType = self.familyType.selectedIndex
self.familyType.selectedIndex = 0
local view = FamilyMsgRecord.New(function()
self.familyType.selectedIndex = self.lastType
end)
view:Show()
end
function M:SetIsOpenChatRoom()
local mgr_ctr = ControllerManager.GetController(GroupMgrController)
if self._group.isOpenChatRoom == 1 then
mgr_ctr:FG_CLOSE_ISOPEN_CHATROOM(self._group.id, function(res)
print("不允许成员可以查看聊天室")
pt(res)
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode)
return
end
self._group.isOpenChatRoom = 0
self:RefalshMoreBtn()
end)
elseif self._group.isOpenChatRoom == 0 then
mgr_ctr:FG_OPEN_ISOPEN_CHATROOM(self._group.id, function(res)
print("允许成员可以查看聊天室")
pt(res)
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode)
return
end
self._group.isOpenChatRoom = 1
self:RefalshMoreBtn()
end)
end
end
function M:SetCanWatch()
local value = 1
if self._group.isWatch == 1 then
value = 0
elseif self._group.isWatch == 0 then
value = 1
end
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:SetCanWatch(self._group.id, value, function(res)
print("设置是否观战")
pt(res)
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode)
return
end
self._group.isWatch = value
self:RefalshMoreBtn()
--
local fgCtr = ControllerManager.GetController(NewGroupController)
self:UpdateFamilyRoom(fgCtr, self._group.id)
end)
end
function M:FamilyRecord()
if not self._ViewChild_Record or not self._ViewChild_Record.ShouRanks then
self._ViewChild_Record = FamilyRecord.New(self, self._group.id)
return
end
self._ViewChild_Record:ShouRanks()
end
function M:CreateFamily(frist)
self.familyType.selectedIndex = 3
if not frist then
self.lastType = 1
end
self._view:GetController('createOrJoin').selectedIndex = 0
self._child_familyJoinAndCreate = FamilyJoinAndCreate:init(self)
end
function M:JoinFamily(frist)
self.familyType.selectedIndex = 3
if not frist then
self.lastType = 1
end
self._view:GetController('createOrJoin').selectedIndex = 1
self._child_familyJoinAndCreate = FamilyJoinAndCreate:init(self)
end
function M:PlayEdit()
--self.familyType.selectedIndex = 2
--self.lastType = 1
local view = PlayEditView.New()
view:Show(self._group.id)
end
function M:OpenMyFamily(groupId)
FamilyMyFamily:TryShow(groupId, self)
end
function M:AllNumber()
local view = FamilyAllNumbers.new()
view:Show(self._group)
end
function M:AuditNumber()
local view = FamilyAuditNumber.new(self)
view:Show(self._group)
--self.lastType = 1
--self._child_familyAuditNumber:Show()
--self._child_familyAuditNumber = FamilyAuditNumber.new(self)
end
function M:UpdataRedPointAuditNumber(obj)
if self._group.joins == nil or self._group.joins <= 0 then
obj:GetController("cRedPoint").selectedIndex = 0
return
end
local redPointNum = self._group.joins
if redPointNum > 99 then
redPointNum = "99+"
end
obj:GetController("cRedPoint").selectedIndex = 1
obj:GetChild("tex_redPoint").text = redPointNum
end
function M:ShowShop()
--self._child_familyLobbyShopView = LobbyShopView.new(self, self._group.id)
--self._child_familyLobbyShopView:Show()
FamilyRoomCard:TryShow(self._group.id)
end
function M:ShowAllRank()
if not self._ViewChild_AllRank or not self._ViewChild_AllRank.ShouRanks then
self._ViewChild_AllRank = FamilAllRank.New(self, self._group.id)
return
end
self._ViewChild_AllRank:ShouRanks()
end
function M:OpenAllNumber(group)
local view = FamilyAllNumbers.new()
view:Show(group)
end
function M:MoreBtn()
local ctr_more = self._view:GetController('moreBtn')
self._view:GetChild('bg_moreBtnBack').onClick:Set(function()
ctr_more.selectedIndex = 0
end)
ctr_more.selectedIndex = 1
self:ChangeMore()
self:RefalshMoreBtn()
end
function M:BanFamily()
local fgCtr = ControllerManager.GetController(NewGroupController)
local data = {
id = self._group.id,
ban = not self._group.ban
}
fgCtr:FG_UpdateGroupInfo(data,
function(res)
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "一键打样失败")
else
self:ReflashBan()
self:RefalshMoreBtn()
end
end)
end
function M:ReflashBan()
self._view:GetController('familyBan').selectedIndex = self._group.ban and 1 or 0
end
function M:BanDeskmate()
self.FamilyBanDesk = FamilyBanDesk:TryShow(self)
end
function M:ReflashMember()
self.members = SortMembers(self._group.members)
local list_familyNumber = self._view:GetChild('list_familyNumber')
if list_familyNumber.itemRenderer == nil then
return
end
if list_familyNumber.numItems == #self._group.members then
list_familyNumber:RefreshVirtualList()
else
list_familyNumber.numItems = #self._group.members
end
end
function M:ChangeNumber(fgCtr, group_id, limit, num, minus_only, sort_type)
local list_familyNumber = self._view:GetChild('list_familyNumber')
list_familyNumber:SetVirtual()
fgCtr:FG_GroupMembers12(group_id, limit, num, 2, 2, function(res)
self.members = SortMembers(self._group.members) --local members = self._group.members
print("FG_GroupMembers12")
pt(self._group.members)
--ViewUtil:CloseModalWait()
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "获取成员列表失败")
else
list_familyNumber.itemRenderer = function(index, obj)
local player = self.members[index + 1]
obj:GetChild('title').emojies = EmojiDitc.EmojiesDitc
obj:GetChild('title').text = Utils.TextOmit(player.nick, 5, "...")
local state = 0
if player.online == 1 and player.playing == "startPlaying" then
state = 2
elseif player.online == 1 and player.playing ~= "startPlaying" then
state = 1
elseif player.online == 0 then
state = 0
end
obj:GetController('type').selectedIndex = state
local loader_icon = obj:GetChild("btn_head"):GetChild("icon")
ImageLoad.Load(player.portrait, loader_icon)
end
--list_familyNumber.numItems = #self._group.members
list_familyNumber.numItems = #self.members
self:ChangeOther()
return 1
end
end)
return 0
end
function M:EnterGroup(fgCtr, id)
fgCtr:FG_EnterGroup(id, function(res)
ViewUtil:CloseModalWait()
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(res.ReturnCode, "获取房间列表列表失败")
else
self:OnEnterGroupCallBack()
return 1
end
end)
return 0
end
function M:OnEnterGroupCallBack()
local fgCtr = ControllerManager.GetController(NewGroupController)
self._view:GetController('familyBan').selectedIndex = self._group.ban and 1 or 0
FamilyOnline(self._group.id, self)
ViewUtil.ShowModalWait(self._root_view, "正在加载成员列表中......")
self:ChangeNumber(fgCtr, self._group.id, 0, self._group.total_member_num, false, 1)
ViewUtil.ShowModalWait(self._root_view, "正在加载房间列表中......")
self:UpdateFamilyRoom(fgCtr, self._group.id)
--ViewUtil.ShowModalWait(self._root_view, "正在加载亲友圈权限中......")
--self:ChangeOther()
ViewUtil.CloseModalWait()
self:ReflashChatRoomRedPoint()
ReflashJoinsRedPoint(self)
fgCtr:FG_Get_Online_Member(self._group.id, function(res)
end)
fgCtr:FG_Get_Apply_Count(function(res)
print("收到获得申请列表的数量")
pt(res)
if res.ReturnCode ~= 0 then
return
end
self:ChangeOther()
end)
end
function M:UpdateFamilyRoom(fgCtr, id)
local list_room = self._view:GetChild('list_room')
list_room:SetVirtual()
--local list_gamePlay = self._view:GetChild('list_gamePlay')
--list_gamePlay:SetVirtual()
self._view:GetChild('n364').text = string.format("已开启%s桌游戏", self._group.room_num)
local playList = self._group.playList
--初始化玩法列表,用于房间使用
local playGameInfoTable = {}
for i = 1, #playList do
playGameInfoTable[playList[i].id] = {
gameId = playList[i].gameId,
config = playList[i].config,
name = playList[i].name,
gameName = playList[i].game_name,
}
end
local roomList = self._group.rooms
print("lingmengroomList")
pt(roomList)
pt(playList)
local roomCtr = ControllerManager.GetController(RoomController)
list_room.itemRenderer = function(index, obj)
if index < #roomList then
local newIndex = index + 1
local gameId = playGameInfoTable[roomList[newIndex].pid].gameId
local config = ExtendManager.GetExtendConfig(gameId)
local mode = config:GetGameInfo()
local gamePlay = mode:LoadConfigToDetail(playGameInfoTable[roomList[newIndex].pid].config)
local play = self._group:getPlay(roomList[newIndex].pid)
local times = json.decode(play.hpData).times
gamePlay = times / 1000 .. "倍," .. gamePlay
obj:GetChild('Label_gameRule').title = gamePlay
local roomName = playGameInfoTable[roomList[newIndex].pid].name
roomName = Utils.TextOmit(roomName, 6, "")
obj:GetChild('game_type').emojies = EmojiDitc.EmojiesDitc
obj:GetChild('game_type').text = string.format("%s%s", playGameInfoTable[roomList[newIndex].pid].gameName,
roomName,
roomList[newIndex].id)
obj:GetChild('btn_joinGame'):GetController('type').selectedIndex = 1
obj:GetController('num').selectedIndex = roomList[newIndex].maxPlayers - 2
-- if self._group.isWatch == 1 then
-- 允许观战
obj:GetController('type').selectedIndex = self._group.isWatch or 1
-- end
local plist = roomList[newIndex].plist
local insertName = ""
for i = 1, #plist do
ImageLoad.Load(plist[i].portrait, obj:GetChild(string.format("player%d", i))._iconObject)
insertName = string.format("%s、%s", plist[i].nick, insertName)
end
obj:GetChild('Label_joinPlayers').text = insertName
obj:GetChild('btn_joinGame').onClick:Set(function()
roomCtr:PublicJoinRoom(
Protocol.WEB_FG_JOIN_ROOM,
roomList[newIndex].id,
id,
function(response)
if (response.ReturnCode == -1) then
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1')
-- RestartGame()
return
end
if response.ReturnCode ~= 0 then
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败')
-- ViewManager.ChangeView(ViewManager.View_Lobby)
return
else
UpdateBeat:Remove(self.OnUpdate, self)
ViewManager.ChangeView(ViewManager.View_Main, gameId)
end
end,
id,
roomList[newIndex].pid
)
end)
obj:GetChild('btn_watch').onClick:Set(function()
roomCtr:PublicWitnessRoom(
Protocol.WEB_FG_Witness_ROOM,
roomList[newIndex].id,
id,
function(response)
if (response.ReturnCode == -1) then
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1')
-- RestartGame()
return
end
if response.ReturnCode ~= 0 then
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败')
-- ViewManager.ChangeView(ViewManager.View_Lobby)
return
else
UpdateBeat:Remove(self.OnUpdate, self)
ViewManager.ChangeView(ViewManager.View_Witness, gameId)
end
end,
gameId,
roomList[newIndex].pid
)
-- self._gamectr = ControllerManager.GetController(GameController)
-- self._gamectr:WitnessGame(DataManager.SelfUser.account_id, id, roomList[newIndex].id)
end)
else
local newIndex = index - #roomList + 1
local config = ExtendManager.GetExtendConfig(playList[newIndex].gameId)
local mode = config:GetGameInfo()
-- times倍数
local times = json.decode(playList[newIndex].hpData).times
local gamePlay = times / 1000 .. "倍,"
gamePlay = gamePlay .. mode:LoadConfigToDetail(playList[newIndex].config)
obj:GetChild('Label_gameRule').title = gamePlay
local roomName = Utils.TextOmit(playList[newIndex].name, 6, "")
roomName = string.format("%s%s", playList[newIndex].game_name, roomName)
obj:GetChild('game_type').emojies = EmojiDitc.EmojiesDitc
obj:GetChild('game_type').text = roomName
obj:GetChild('btn_joinGame'):GetController('type').selectedIndex = 0
obj:GetController('type').selectedIndex = 0
obj:GetController('num').selectedIndex = playList[newIndex].maxPlayers - 2
obj:GetChild('Label_joinPlayers').text = ""
for i = 1, 4 do
local btn = obj:GetChild(string.format("player%d", i))
btn:GetChild("icon").url = "ui://Family/btn_mainGameNumberHead"
--ImageLoad.Load("ui://Family/btn_mainGameNumberHead", obj:GetChild(string.format("player%d", i))._iconObject)
end
obj:GetChild('btn_joinGame').onClick:Set(function()
roomCtr:PublicJoinRoom(
Protocol.WEB_FG_MATCH_ROOM,
"",
true,
function(response)
if (response.ReturnCode == -1) then
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, 'response.ReturnCode == -1')
-- RestartGame()
return
end
if response.ReturnCode ~= 0 then
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间失败')
-- ViewManager.ChangeView(ViewManager.View_Lobby)
return
else
UpdateBeat:Remove(self.OnUpdate, self)
ViewManager.ChangeView(ViewManager.View_Main, playList[newIndex].gameId)
end
end,
id,
playList[newIndex].id
)
end)
end
end
--[[
list_gamePlay.itemRenderer = function(index, obj)
if index == 0 then
obj:GetController('type').selectedIndex = 0
obj:GetChild('num').text = string.format("%d/7", #playList)
obj:GetChild('btn_addPlay').onClick:Set(function()
local tem = GroupGameSettingView.new(self.blur_view, id, 0, nil, function(play)
local group = DataManager.groups:get(id)
group:addPlay(play)
-- self:FillView()
self:UpdateFamilyRoom(fgCtr, id)
printlog("刷新玩法===>>>>")
group.update_play = true
end)
tem:Show()
end)
return
end
obj:GetChild('text_title').text = playList[index].game_name
local mode = ExtendManager.GetExtendConfig(playList[index].gameId):GetGameInfo()
local pId = playList[index].id
obj:GetChild('Label_details'):GetChild('title').text = mode:LoadConfigToDetail(playList[index].config)
obj:GetChild('text_playName').text = playList[index].name
obj:GetController('type').selectedIndex = 1
obj:GetChild('btn_del').onClick:Set(function()
ViewUtil.ShowTwoChooose("是否要删除该玩法", function()
fgCtr:FG_DelPlay(id, playList[index].id, function(res)
if res.ReturnCode ~= 0 then
local msg = Table_Error_code_Map[res.ReturnCode] or {}
msg = msg.note or "操作失败"
ViewUtil.ShowBannerOnScreenCenter(msg)
return
end
self:UpdateFamilyRoom(fgCtr, id)
end)
end)
end)
obj:GetChild("btn_edit").onClick:Set(function()
local tem = GroupGameSettingView.new(self.blur_view, id, pId, nil, function(play)
local group = DataManager.groups:get(id)
group:addPlay(play)
-- self:FillView()
self:UpdateFamilyRoom(fgCtr, id)
printlog("刷新玩法===>>>>")
group.update_play = true
end)
tem:Show()
end)
end
list_gamePlay.numItems = #playList + 1
]]
local all_num = #playList + #roomList
-- print("=================================================list_room", list_room, list_room.numItems, all_num)
print("游戏中的房间")
pt(roomList)
--list_room.numItems = all_num
if list_room.numItems == all_num then
list_room:RefreshVirtualList()
else
list_room.numItems = all_num
end
end
function M:ReflashFamilyList()
local list_family = self._view:GetChild('list_family')
list_family.numItems = #DataManager.groups.groupList
end
function M:ConnetFamily(index, groups, isCreate)
if self._group then
FamilyOffline(self._group.id, self)
end
UpdateBeat:Remove(self.OnUpdate, self)
ViewUtil:CloseModalWait()
local list_family = self._view:GetChild('list_family')
--list_family:SetVirtual()
self._group = DataManager.groups:get(groups[index].id)
DataManager.CurrenGroup = self._group
self._view:GetChild('text_familyId').text = self._group.id
self._view:GetController('lev').selectedIndex = self._group.lev - 1
print("===================================self._group")
pt(self._group)
self._roomNum = self._group.room_num
if isCreate then
list_family.itemRenderer = function(i, obj)
local j = i + 1
local group = DataManager.groups.groupList[j]
obj:GetChild("title").emojies = EmojiDitc.EmojiesDitc
obj.text = Utils.TextOmit(group.name, 6, "...")
obj.onClick:Add(function()
if group.id == self._group.id then
--ViewUtil.ShowBannerOnScreenCenter("已在家族中")
return
end
self:ConnetFamily(j, DataManager.groups.groupList, false)
end)
end
list_family.numItems = #groups
if list_family.selectedIndex == -1 then
list_family.selectedIndex = 0
end
end
local fgCtr = ControllerManager.GetController(NewGroupController)
ViewUtil.ShowModalWait(self._root_view, "正在进入亲友圈......")
self:EnterGroup(fgCtr, self._group.id)
--[[
ViewUtil.ShowModalWait(self._root_view, "正在加载亲友圈权限中......")
self:ChangeOther(tonumber(self._group.lev) + 1)
allLoad = 1
ViewUtil.ShowModalWait(self._root_view, "正在加载成员列表中......")
allLoad = allLoad +
self:ChangeNumber(fgCtr, self._group.id, 0, self._group.total_member_num, false,
1)
ViewUtil.ShowModalWait(self._root_view, "正在加载房间列表中......")
allLoad = allLoad + self:EnterGroup(fgCtr, self._group.id)
]]
UpdateBeat:Add(self.OnUpdate, self)
if self._group.isOpenChatRoom == 1 then
self.btn_chatRoom.visible = true
else
self.btn_chatRoom.visible = false
end
end
-- function M:Destroy()
-- UpdateBeat:Remove(self.OnUpdate, self)
-- BaseView:Destroy()
-- end
function M:OnUpdate()
local fgCtr = ControllerManager.GetController(NewGroupController)
local newTime = os.time()
-- --12001事件
local func = self._mgr_ctr:PopEvent()
if (func ~= nil) then
local success, result = pcall(func)
if success then
else
print("witness error")
print(result)
-- self._gamectr = ControllerManager.GetController(GameController)
-- if self._gamectr then
-- self._gamectr:ResetConnect()
-- end
end
--func()
end
if self._group.update_room then
-- if self._roomNum == self._group.room_num then
-- for i = 1, self._group.room_num do
-- if self._group.rooms[i] and #self._group.rooms[i].plist == 0 then
-- self._group.update_room = false
-- fgCtr:FG_RemoveRoom(
-- self._group.id,
-- self._group.rooms[i].id,
-- function(res)
-- if res.ReturnCode ~= 0 then
-- ViewUtil.ErrorTip(res.ReturnCode, string.format('删除房间-%s失败', self._group.rooms[i].id))
-- else
-- self._roomNum = #self._group.rooms
-- end
-- end
-- )
-- end
-- end
-- else
-- self._group.update_room = false
-- -- self._group.update_room = false
-- end
-- if self._fristRoom then
self._group.update_room = false
-- self._fristRoom = true
-- end
-- -- print("====================================UpdateFamilyRoom", fgCtr, self._group.id)
self:UpdateFamilyRoom(fgCtr, self._group.id)
end
local HeartbeatTime = 15
if newTime - self.lastTime > HeartbeatTime then
fgCtr:FG_SetFamilyHeartbeat(self._group.id, DataManager.SelfUser.account_id, function(res)
print(res)
end)
self.lastTime = newTime
if self._view:GetChild('list_familyNumber').itemRenderer then
self._view:GetChild('list_familyNumber').numItems = #self._group.members
end
end
end
local IDENTITY_LIST = {
{
level = 0, --圈主
},
{
level = 1, --副圈主
otherList = {
{
name = "邀请朋友",
Fct = M.ShareWx
},
{
name = "游戏记录",
Fct = M.FamilyRecord
},
{
name = "玩法管理",
Fct = M.PlayEdit
},
{
name = "充值房卡",
Fct = M.ShowShop
},
{
name = "申请消息",
Fct = M.AuditNumber,
redPointFct = M.UpdataRedPointAuditNumber --开启红点
},
{
name = "查看成员",
Fct = M.AllNumber
},
{
name = "创建亲友圈",
Fct = M.CreateFamily
},
{
name = "高级选项",
Fct = M.MoreBtn
},
{
name = "亲友圈排行榜",
Fct = M.ShowAllRank
}
}
},
{
level = 2, --管理员
otherList = {
{
name = "邀请朋友",
Fct = M.ShareWx
},
{
name = "游戏记录",
Fct = M.FamilyRecord
},
{
name = "玩法管理",
Fct = M.PlayEdit
},
{
name = "充值房卡",
Fct = M.ShowShop
},
{
name = "申请消息",
Fct = M.AuditNumber,
redPointFct = M.UpdataRedPointAuditNumber --开启红点
},
{
name = "查看成员",
Fct = M.AllNumber
},
{
name = "创建亲友圈",
Fct = M.CreateFamily
},
{
name = "高级选项",
Fct = M.MoreBtn
},
{
name = "亲友圈排行榜",
Fct = M.ShowAllRank
}
}
},
{
level = 3, --成员
otherList = {
{
name = "邀请朋友",
Fct = M.ShareWx
},
{
name = "创建亲友圈",
Fct = M.CreateFamily
},
{
name = "加入亲友圈",
Fct = M.JoinFamily
},
}
},
}
local MORE_LIST = {
{
name = "一键打样",
Fct = M.BanFamily
},
{
name = "消息记录",
Fct = M.MsgView
},
{
name = "禁止同桌",
Fct = M.BanDeskmate
},
{
name = "关闭聊天室",
Fct = M.SetIsOpenChatRoom
},
{
name = "关闭旁观",
Fct = M.SetCanWatch
},
}
function M:ChangeOther()
local i = tonumber(self._group.lev) + 1
local otherList = IDENTITY_LIST[i].otherList
local list_other = self._view:GetChild('list_other')
self._lev = i
list_other:SetVirtual()
list_other.itemRenderer = function(index, obj)
local cfg = otherList[index + 1]
obj:GetChild('title').text = cfg.name
obj.onClick:Set(handler(self, cfg.Fct))
--print("cfg.redPointFct", cfg.redPointFct)
if cfg.redPointFct then
cfg.redPointFct(self, obj)
end
end
list_other.numItems = #otherList
end
function M:ChangeMore()
local moreList = MORE_LIST
local list_other = self._view:GetChild('list_more')
list_other:SetVirtual()
list_other.itemRenderer = function(index, obj)
local cfg = moreList[index + 1]
obj:GetChild('title').text = cfg.name
obj.onClick:Set(handler(self, cfg.Fct))
obj.onClick:Add(function()
self._view:GetController('moreBtn').selectedIndex = 0
end)
--print("cfg.redPointFct", cfg.redPointFct)
if cfg.redPointFct then
cfg.redPointFct(self, obj)
end
end
list_other.numItems = #moreList
end
function M:RefalshMoreBtn()
-- 有空优化吧
local tex = ""
if self._group.isOpenChatRoom == 1 then
tex = "关闭聊天室"
elseif self._group.isOpenChatRoom == 0 then
tex = "打开聊天室"
end
MORE_LIST[4].name = tex
local tex = ""
if self._group.isWatch == 1 then
tex = "关闭观战"
elseif self._group.isWatch == 0 then
tex = "打开观战"
end
MORE_LIST[5].name = tex
local tex = ""
if self._group.ban then
tex = "一键开启"
else
tex = "一键打烊"
end
MORE_LIST[1].name = tex
self:ChangeMore()
end
function M:ReflashChatRoomRedPoint()
self.cChatRoomRedPoint.selectedIndex = 0
if self._group.messageCount > 0 then
self.cChatRoomRedPoint.selectedIndex = 1
end
local tex = self._group.messageCount
if self._group.messageCount > 99 then
tex = "99+"
end
local tex_redPoint = self.btn_chatRoom:GetChild("tex_redPoint")
tex_redPoint.text = tex
end
function M:Show()
Broadcast.AddListener(BroadcastEvent.OnJoinsChange, ReflashJoinsRedPoint, self)
Broadcast.AddListener(BroadcastEvent.OnMemberChange, self.ReflashMember, self)
Broadcast.AddListener(BroadcastEvent.OnOutFamily, self.Reflash, self)
BaseView.Show(self)
end
function M:Close()
Broadcast.RemoveListener(BroadcastEvent.OnJoinsChange, ReflashJoinsRedPoint)
Broadcast.RemoveListener(BroadcastEvent.OnMemberChange, self.ReflashMember)
Broadcast.RemoveListener(BroadcastEvent.OnOutFamily, self.Reflash)
print("家族界面退出")
self._familyEventView:RemoveAll()
BaseView.Close(self)
end
return M