542 lines
18 KiB
Lua
542 lines
18 KiB
Lua
local FamilyInviteFamilyView = import('.Family.FamilyInviteFamilyView')
|
||
local CreatePlayView = import('.Family.CreatePlayView')
|
||
local GroupGameSettingView = import(".NewGroup.MngView/GroupGameSettingView")
|
||
|
||
--设置窗口对象
|
||
|
||
FamilyView = {}
|
||
|
||
local M = FamilyView
|
||
function FamilyView.new()
|
||
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
|
||
local fgCtr = ControllerManager.GetController(NewGroupController)
|
||
|
||
local createOrJoin = view:GetController('createOrJoin')
|
||
self.familyType = view:GetController('familyType')
|
||
local btn_close = view:GetChild('btn_close')
|
||
btn_close.onClick:Set(function()
|
||
if not self.lastType or self.familyType.selectedIndex == 1 then
|
||
ControllerManager.ChangeController(LoddyController)
|
||
ViewManager.ChangeView(ViewManager.View_Lobby)
|
||
else
|
||
self.familyType.selectedIndex = self.lastType
|
||
if self.lastType == 3 then
|
||
self.lastType = 1
|
||
createOrJoin.selectedIndex = (createOrJoin.selectedIndex + 1) % 2
|
||
end
|
||
end
|
||
end)
|
||
|
||
fgCtr:FG_GroupList(function(res)
|
||
local groups = res.Data.groups
|
||
if #groups > 0 then
|
||
self.familyType.selectedIndex = 1
|
||
self:ConnetFamily(1, groups, true)
|
||
else
|
||
self.familyType.selectedIndex = 3
|
||
end
|
||
end)
|
||
--------初始化创建和加入亲友圈界面---------------
|
||
self._currenIndex = 0
|
||
self.tex_num = view:GetChild('text_inputNum')
|
||
|
||
view:GetChild('btn_joinFamily').onClick:Add(function()
|
||
createOrJoin.selectedIndex = 1
|
||
self.lastType = 3
|
||
end)
|
||
view:GetChild('btn_createFamily').onClick:Add(function()
|
||
createOrJoin.selectedIndex = 0
|
||
self.lastType = 3
|
||
end)
|
||
view:GetChild('list_num').onClickItem:Set(handler(self, self.OnNumButtonAction))
|
||
|
||
local input_name = view:GetChild('input_name')
|
||
local input_wxId = view:GetChild('input_wxId')
|
||
input_name.onChanged:Set(function()
|
||
input_name.alpha = 1
|
||
end)
|
||
input_name.onFocusOut:Set(function()
|
||
if #input_name.text > 0 then
|
||
input_name.alpha = 1
|
||
else
|
||
input_name.alpha = 0.5
|
||
end
|
||
end)
|
||
|
||
input_wxId.onChanged:Set(function()
|
||
input_wxId.alpha = 1
|
||
end)
|
||
input_wxId.onFocusOut:Set(function()
|
||
if #input_wxId.text > 0 then
|
||
input_wxId.alpha = 1
|
||
else
|
||
input_wxId.alpha = 0.5
|
||
end
|
||
end)
|
||
view:GetChild('btn_create').onClick:Add(function()
|
||
fgCtr:FG_GroupList(function(res)
|
||
fgCtr:FG_CreateGroup(input_name.text, 1, 2, function(res)
|
||
if res.ReturnCode == 0 then
|
||
self.familyType.selectedIndex = 1
|
||
self:ConnetFamily(1, DataManager.groups.groupList, true)
|
||
else
|
||
ViewUtil.ErrorTip(res.ReturnCode, '创建大联盟失败!')
|
||
end
|
||
end)
|
||
end)
|
||
end)
|
||
end
|
||
|
||
function ShareWx(view)
|
||
local familyInviteFamilyView = FamilyInviteFamilyView.new()
|
||
familyInviteFamilyView:Show()
|
||
end
|
||
|
||
function CreateFamily(view)
|
||
view.familyType.selectedIndex = 3
|
||
view.lastType = 1
|
||
view._view:GetController('createOrJoin').selectedIndex = 0
|
||
end
|
||
|
||
function JoinFamily(view)
|
||
view.familyType.selectedIndex = 3
|
||
view.lastType = 1
|
||
view._view:GetController('createOrJoin').selectedIndex = 1
|
||
end
|
||
|
||
function PlayEdit(view)
|
||
view.familyType.selectedIndex = 2
|
||
view.lastType = 1
|
||
end
|
||
|
||
local IDENTITY_LIST = {
|
||
{
|
||
level = 0, --圈主
|
||
|
||
},
|
||
{
|
||
level = 1, --副圈主
|
||
otherList = {
|
||
{
|
||
name = "邀请朋友",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "游戏记录",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "玩法管理",
|
||
Fct = PlayEdit
|
||
},
|
||
{
|
||
name = "充值房卡",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "申请消息",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "查看成员",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "创建亲友圈",
|
||
Fct = CreateFamily
|
||
},
|
||
{
|
||
name = "高级选项",
|
||
Fct = CreateFamily
|
||
},
|
||
{
|
||
name = "添加助理",
|
||
Fct = CreateFamily
|
||
},
|
||
{
|
||
name = "加入亲友圈",
|
||
Fct = JoinFamily
|
||
},
|
||
}
|
||
|
||
},
|
||
{
|
||
level = 2, --管理员
|
||
otherList = {
|
||
{
|
||
name = "邀请朋友",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "游戏记录",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "玩法管理",
|
||
Fct = PlayEdit
|
||
},
|
||
{
|
||
name = "充值房卡",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "申请消息",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "查看成员",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "创建亲友圈",
|
||
Fct = CreateFamily
|
||
},
|
||
{
|
||
name = "高级选项",
|
||
Fct = CreateFamily
|
||
},
|
||
{
|
||
name = "添加助理",
|
||
Fct = CreateFamily
|
||
},
|
||
{
|
||
name = "加入亲友圈",
|
||
Fct = JoinFamily
|
||
},
|
||
}
|
||
|
||
},
|
||
{
|
||
level = 3, --成员
|
||
otherList = {
|
||
{
|
||
name = "邀请朋友",
|
||
Fct = ShareWx
|
||
},
|
||
{
|
||
name = "创建亲友圈",
|
||
Fct = CreateFamily
|
||
},
|
||
{
|
||
name = "加入亲友圈",
|
||
Fct = JoinFamily
|
||
},
|
||
}
|
||
|
||
},
|
||
}
|
||
|
||
function M:ChangeOther(i)
|
||
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)
|
||
obj:GetChild('text').text = otherList[index + 1].name
|
||
obj.onClick:Add(handler(self, otherList[index + 1].Fct))
|
||
end
|
||
list_other.numItems = #otherList
|
||
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_GroupMembers(group_id, limit, num, minus_only, sort_type, function(res)
|
||
local members = res.Data.members
|
||
-- print("==========================res.Data.members")
|
||
pt(res.Data.members)
|
||
ViewUtil:CloseModalWait()
|
||
if res.ReturnCode ~= 0 then
|
||
ViewUtil.ErrorTip(res.ReturnCode, "获取成员列表失败")
|
||
else
|
||
list_familyNumber.itemRenderer = function(index, obj)
|
||
obj:GetChild('text_name').text = members[index + 1].nick
|
||
end
|
||
list_familyNumber.numItems = res.Data.member_num
|
||
return 1
|
||
end
|
||
end)
|
||
return 0
|
||
end
|
||
|
||
function M:ConnetFamilyRoom(fgCtr, id)
|
||
fgCtr:FG_EnterGroup(id, function(res)
|
||
ViewUtil:CloseModalWait()
|
||
if res.ReturnCode ~= 0 then
|
||
ViewUtil.ErrorTip(res.ReturnCode, "获取房间列表列表失败")
|
||
else
|
||
self:UpdateFamilyRoom(fgCtr, id)
|
||
return 1
|
||
end
|
||
end)
|
||
return 0
|
||
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()
|
||
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,
|
||
}
|
||
end
|
||
local roomList = self._group.rooms
|
||
-- print("=========================playList,rooms")
|
||
pt(playList)
|
||
pt(roomList)
|
||
local roomCtr = ControllerManager.GetController(RoomController)
|
||
list_room.itemRenderer = function(index, obj)
|
||
if index < #roomList then
|
||
local newIndex = index + 1
|
||
-- local config = ExtendManager.GetExtendConfig(playGameInfoTable[roomList[newIndex].pid].gameId)
|
||
-- local mode = config:GetGameInfo()
|
||
-- local gamePlay = mode:LoadConfigToDetail(playGameInfoTable[roomList[newIndex].pid].config)
|
||
-- obj:GetChild('Label_gameRule').title = gamePlay
|
||
obj:GetChild('game_type').text = string.format("%s房间-%s", playGameInfoTable[roomList[newIndex].pid].name,
|
||
roomList[newIndex].id)
|
||
obj:GetChild('btn_joinGame'):GetController('type').selectedIndex = 1
|
||
obj:GetChild('btn_joinGame').onClick:Set(function()
|
||
roomCtr:PublicJoinRoom(
|
||
Protocol.WEB_FG_JOIN_ROOM,
|
||
roomList[newIndex].id,
|
||
false,
|
||
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
|
||
ViewUtil.ErrorMsg(self._root_view, response.ReturnCode, '进入房间成功')
|
||
|
||
ViewManager.ChangeView(ViewManager.View_Main, playGameInfoTable[roomList[newIndex].pid]
|
||
.gameId)
|
||
end
|
||
end,
|
||
id,
|
||
roomList[newIndex].pid
|
||
)
|
||
end)
|
||
else
|
||
local newIndex = index - #roomList + 1
|
||
-- local config = ExtendManager.GetExtendConfig(playList[newIndex].gameId)
|
||
-- local mode = config:GetGameInfo()
|
||
-- local gamePlay = mode:LoadConfigToDetail(playList[newIndex].config)
|
||
-- obj:GetChild('Label_gameRule').title = gamePlay
|
||
obj:GetChild('game_type').text = playList[newIndex].name
|
||
obj:GetChild('btn_joinGame'):GetController('type').selectedIndex = 0
|
||
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
|
||
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: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
|
||
obj:GetChild('Label_details'):GetChild('title').text = playList[index].config
|
||
obj:GetController('type').selectedIndex = 1
|
||
obj:GetChild('btn_del').onClick:Add(function()
|
||
fgCtr:FG_DelPlay(id, playList[index].id, function()
|
||
ViewUtil.ShowBannerOnScreenCenter("删除成功")
|
||
self:UpdateFamilyRoom(fgCtr, id)
|
||
end)
|
||
end)
|
||
end
|
||
local all_num = #playList + #roomList
|
||
-- print("=================================================list_room", list_room, list_room.numItems, all_num)
|
||
pt(list_room)
|
||
list_room.numItems = all_num
|
||
list_gamePlay.numItems = #playList + 1
|
||
end
|
||
|
||
function M:ConnetFamily(index, groups, isCreate)
|
||
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)
|
||
-- 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
|
||
obj:GetChild('name').text = groups[j].name
|
||
obj.onClick:Add(function()
|
||
self:ConnetFamily(j, DataManager.groups.groupList, false)
|
||
end)
|
||
end
|
||
list_family.numItems = #groups
|
||
end
|
||
|
||
local fgCtr = ControllerManager.GetController(NewGroupController)
|
||
|
||
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:ConnetFamilyRoom(fgCtr, self._group.id)
|
||
UpdateBeat:Add(self.OnUpdate, self)
|
||
end
|
||
|
||
----------创建和加入---------------------
|
||
function M:OnNumButtonAction(context)
|
||
local item = context.data
|
||
local index = self._view:GetChild('list_num'):GetChildIndex(item)
|
||
if index < 9 or index == 10 then
|
||
if (self._currenIndex < 6) then
|
||
self._currenIndex = self._currenIndex + 1
|
||
self.tex_num.text = self.tex_num.text .. (index < 9 and index + 1 or index - 9)
|
||
if (self._currenIndex == 6) then
|
||
self:JoinRoom(self.tex_num.text)
|
||
end
|
||
end
|
||
elseif index == 9 then
|
||
self:ClearNumTex()
|
||
else
|
||
if (self._currenIndex > 0) then
|
||
self._currenIndex = self._currenIndex - 1
|
||
self.tex_num.text = string.sub(self.tex_num.text, 0, self._currenIndex)
|
||
end
|
||
end
|
||
end
|
||
|
||
function M:ClearNumTex()
|
||
self.tex_num.text = ""
|
||
self._currenIndex = 0
|
||
end
|
||
|
||
function M:JoinRoom(roomId)
|
||
local fgCtr = ControllerManager.GetController(NewGroupController)
|
||
--后端似乎还未调通
|
||
-- fgCtr:FG_JoinGroup(roomId, function(res)
|
||
-- ViewUtil.ShowBannerOnScreenCenter("加入房间回调")
|
||
-- end)
|
||
--先换成邀请玩家
|
||
fgCtr:FG_AddMember(self._group.id, tonumber(roomId), function(res)
|
||
if (res.ReturnCode == 0) then
|
||
ViewUtil.ShowBannerOnScreenCenter('添加成功!', 1)
|
||
fgCtr:FG_ChangeFag(self._group.id, tonumber(roomId), 777777000,
|
||
function(res)
|
||
if res.ReturnCode == 0 then
|
||
ViewUtil.ShowBannerOnScreenCenter('分配默认积分成功!', 1)
|
||
else
|
||
ViewUtil.ErrorMsg(self._root_view, res.ReturnCode, '默认分配积分失败')
|
||
end
|
||
end)
|
||
else
|
||
ViewUtil.ErrorTip(res.ReturnCode, '邀请玩家失败!')
|
||
end
|
||
|
||
self:ChangeNumber(fgCtr, self._group.id, 0, self._group.total_member_num1, false,
|
||
1)
|
||
end)
|
||
end
|
||
|
||
function M:OnUpdate()
|
||
-- --12001事件
|
||
if self._group.update_room then
|
||
local fgCtr = ControllerManager.GetController(NewGroupController)
|
||
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
|
||
end
|
||
|
||
return M
|