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

529 lines
18 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")
--设置窗口对象
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
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
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)
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