hengyang_client/lua_probject/base_project/Game/View/Family/FamilyBanDesk.lua

375 lines
10 KiB
Lua
Raw Normal View History

2025-06-25 22:49:44 +08:00
local FamilySelectNumber = import(".FamilySelectNumber")
2025-06-17 17:51:24 +08:00
--region LOCAL
local BanDesk = {}
local rootLastIndex = 0
2025-06-25 22:49:44 +08:00
local function HideMainView(self)
rootLastIndex = self.root.familyType.selectedIndex
self.root.familyType.selectedIndex = 0
end
local function ShowMainView(self)
self.root.familyType.selectedIndex = rootLastIndex or 1
end
local function RemoveItem(table, condition)
2025-07-02 20:13:34 +08:00
for _, item in pairs(table) do
if condition(item) then
table[_] = nil
end
end
--修复下标
local re = {}
2025-07-02 20:13:34 +08:00
for _, item in pairs(table) do
re[#re + 1] = item
end
2025-06-23 18:12:12 +08:00
return re
2025-06-23 18:12:12 +08:00
end
2025-06-25 22:49:44 +08:00
local function GetPlayerFromGroupData(playerId, group)
local player = group.memberMap[playerId]
2025-07-02 20:13:34 +08:00
if player then
return player
end
2025-07-02 20:13:34 +08:00
print("玩家不在group中 玩家id=", playerId)
return nil
2025-06-23 18:12:12 +08:00
end
local function AllUid(deskList)
2025-06-25 22:49:44 +08:00
local re = {}
2025-07-02 20:13:34 +08:00
for _, player in pairs(deskList) do
2025-06-25 22:49:44 +08:00
re[#re + 1] = player.uid
end
return re
2025-06-17 17:51:24 +08:00
end
2025-07-02 20:13:34 +08:00
local function Exists(id, deskList)
for _, player in pairs(deskList) do
if id == player.uid then
2025-07-02 20:13:34 +08:00
return true
end
end
return false
end
2025-06-26 02:28:24 +08:00
2025-07-02 20:13:34 +08:00
local function AddPlayer(data, self)
if self.sending then
ViewUtil.ErrorTip(-1, "正在操作中。。")
return
end
2025-06-25 22:49:44 +08:00
-- 点击弹出选择成员界面
2025-10-20 18:30:18 +08:00
local view = FamilySelectNumber.New(data)
2025-06-25 22:49:44 +08:00
view:Show(self.root._group.id, function(number)
2025-07-02 20:13:34 +08:00
if Exists(number.uid, data.deskList) then
ViewUtil.ErrorTip(-1, "设置失败,成员已经在关系中")
2025-07-02 20:13:34 +08:00
return
end
2025-06-25 22:49:44 +08:00
local players = AllUid(data.deskList)
players[#players + 1] = number.uid
self.sending = true
2025-06-25 22:49:44 +08:00
local fgCtr = ControllerManager.GetController(NewGroupController)
2025-11-06 17:37:53 +08:00
ViewUtil.ShowModalWait2()
fgCtr:FG_SetBanTable1(self.root._group.id, data.deskId, players, data.deskName, function(res)
self.sending = false
2025-11-06 17:37:53 +08:00
ViewUtil.CloseModalWait2()
2025-07-02 20:13:34 +08:00
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(-1, "设置失败")
return
end
2025-07-02 20:13:34 +08:00
data.deskList[#data.deskList + 1] = { uid = number.uid }
self:ReflashDesk()
end)
2025-06-25 22:49:44 +08:00
end)
end
local function DelPalyer(data, uid, self)
--print("删除玩家", uid)
2025-07-02 20:13:34 +08:00
if self.sending then
ViewUtil.ErrorTip(-1, "正在操作中。。")
return
end
2025-06-25 22:49:44 +08:00
local players = AllUid(data.deskList)
2025-07-02 20:13:34 +08:00
for _, id in pairs(players) do
if id == uid then
2025-06-25 22:49:44 +08:00
players[_] = nil
end
end
-- 修复下标的连续性不然json.encode会吧空下标也解析出来
local fix = {}
2025-07-02 20:13:34 +08:00
for _, id in pairs(players) do
2025-06-25 22:49:44 +08:00
fix[#fix + 1] = id
end
players = fix
2025-07-02 20:13:34 +08:00
2025-06-26 02:28:24 +08:00
self.sending = true
2025-06-25 22:49:44 +08:00
local fgCtr = ControllerManager.GetController(NewGroupController)
2025-11-06 17:37:53 +08:00
ViewUtil.ShowModalWait2()
2025-07-02 20:13:34 +08:00
fgCtr:FG_SetBanTable1(self.root._group.id, data.deskId, players, data.deskName, function(res)
2025-06-26 02:28:24 +08:00
self.sending = false
2025-11-06 17:37:53 +08:00
ViewUtil.CloseModalWait2()
2025-07-02 20:13:34 +08:00
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(-1, "删除失败")
2025-06-26 02:28:24 +08:00
return
end
data.deskList = RemoveItem(data.deskList, function(item)
2025-07-02 20:13:34 +08:00
if item.uid == uid then
2025-06-26 02:28:24 +08:00
return true
end
end)
2025-07-02 20:13:34 +08:00
self:ReflashDesk()
2025-06-26 02:28:24 +08:00
end)
2025-06-25 22:49:44 +08:00
end
local function DelDesk(data, self)
2025-07-02 20:13:34 +08:00
if self.sending then
ViewUtil.ErrorTip(-1, "正在操作中。。")
return
end
self.sending = true
2025-06-25 22:49:44 +08:00
local fgCtr = ControllerManager.GetController(NewGroupController)
2025-11-06 17:37:53 +08:00
ViewUtil.ShowModalWait2()
2025-07-02 20:13:34 +08:00
fgCtr:FG_SetBanTable1(self.root._group.id, data.deskId, {}, data.deskName, function()
2025-11-06 17:37:53 +08:00
ViewUtil.CloseModalWait2()
self.sending = false
2025-07-02 20:13:34 +08:00
self:Reflash()
end)
2025-06-25 22:49:44 +08:00
end
local function ChangeName(deskData, name, self)
local fgCtr = ControllerManager.GetController(NewGroupController)
2025-11-06 17:37:53 +08:00
ViewUtil.ShowModalWait2()
fgCtr:FG_SetBanTable1(self.root._group.id, deskData.deskId, AllUid(deskData.deskList), name, function(res)
2025-11-06 17:37:53 +08:00
ViewUtil.CloseModalWait2()
2025-07-02 20:13:34 +08:00
if res.ReturnCode ~= 0 then
ViewUtil.ErrorTip(-1, "删除失败")
return
end
deskData.deskName = name
2025-06-25 22:49:44 +08:00
self:ReflashDesk()
self:CloseRemaskWindow()
end)
end
local function Sort(BanData)
-- 把空的桌子放到下面
local emtpy = {}
2025-07-02 20:13:34 +08:00
for index, desk in pairs(BanData) do
if desk.deskList == nil or #desk.deskList == 0 then
2025-06-25 22:49:44 +08:00
emtpy[#emtpy + 1] = desk
BanData[index] = nil
end
end
local re = {}
2025-07-02 20:13:34 +08:00
for _, desk in pairs(BanData) do
2025-06-25 22:49:44 +08:00
re[#re + 1] = desk
end
2025-07-02 20:13:34 +08:00
for _, desk in pairs(emtpy) do
2025-06-25 22:49:44 +08:00
re[#re + 1] = desk
end
return re
2025-06-17 17:51:24 +08:00
end
local function list_BanedPlayersRenderer(index, obj, data, self, fatherIndex)
local loader_icon = obj:GetChild("loader_icon")
local tex_name = obj:GetChild("tex_name")
local uid = data.deskList[index + 1].uid
local player = GetPlayerFromGroupData(uid, self.root._group)
obj:GetController("cStyle").selectedIndex = 0
tex_name.text = player.nick
local img = player.portrait
ImageLoad.Load(img, loader_icon)
local btn_delPlayer = obj:GetChild("btn_delPlayer")
btn_delPlayer.onClick:Set(function()
-- 删除玩家按钮
2025-10-18 18:42:59 +08:00
local _curren_msg = MsgWindow.new(self._root_view, '是否确认删除该成员?', MsgWindow.MsgMode.OkAndCancel)
_curren_msg.onOk:Add(function()
self.changedIndex = fatherIndex
DelPalyer(data, player.uid, self)
end)
_curren_msg:Show()
end)
end
local function list_banItemRenderer(index, obj, self)
2025-07-02 20:13:34 +08:00
local data = self.BanData[index + 1]
--print("刷新关系")
--pt(data)
local tex_name = obj:GetChild("tex_name")
local list_BanedPlayers = obj:GetChild("list_BanedPlayers")
local btn_del = obj:GetChild("btn_del")
local btn_edit = obj:GetChild("btn_edit")
tex_name.text = data.deskName
obj:GetController("cStyle").selectedIndex = 0
btn_edit.onClick:Set(function()
2025-07-02 20:13:34 +08:00
-- 修改备注
self.changedIndex = index
self.selectBanItem = data
self:OpenRemaskWindow()
end)
btn_del.onClick:Set(function()
-- 删除整个桌子
2025-10-18 18:42:59 +08:00
local _curren_msg = MsgWindow.new(self._root_view, '是否确认删除该分组关系?', MsgWindow.MsgMode.OkAndCancel)
_curren_msg.onOk:Add(function()
DelDesk(data, self)
end)
_curren_msg:Show()
end)
list_BanedPlayers.itemRenderer = function(i, o)
list_BanedPlayersRenderer(i, o, data, self, index)
end
list_BanedPlayers.numItems = #data.deskList
local add_play = list_BanedPlayers:AddItemFromPool()
add_play:GetController("cStyle").selectedIndex = 1
add_play:GetChild("btn_addPlayer").onClick:Set(function()
-- 添加玩家按钮
self.changedIndex = index
AddPlayer(data, self)
end)
end
2025-06-17 17:51:24 +08:00
--endregion
function BanDesk:TryShow(r)
2025-06-25 22:49:44 +08:00
local view = BanDesk.New()
self.root = r
HideMainView(self)
view:Show()
end
function BanDesk:Show()
BaseWindow.Show(self)
self:Reflash()
2025-06-17 17:51:24 +08:00
end
function BanDesk:Close()
BaseView.Close(self)
2025-06-25 22:49:44 +08:00
ShowMainView(self)
2025-06-17 17:51:24 +08:00
end
2025-06-25 22:49:44 +08:00
function BanDesk.New()
2025-06-26 00:15:48 +08:00
setmetatable(BanDesk, { __index = BaseView })
local inst = setmetatable({}, { __index = BanDesk })
2025-06-25 22:49:44 +08:00
inst._close_destroy = true
2025-07-05 21:36:09 +08:00
--inst._full = true
inst._scale = true
2025-06-25 22:49:44 +08:00
inst._animation = false
inst._full_offset = false
inst._anim_pop = 0
BaseWindow.init(inst, 'ui://Family/com_banDesk')
inst:Init()
inst._root_view:GetChild("win_mode").visible = false
return inst
end
function BanDesk:Init()
self.sending = false
2025-06-17 17:51:24 +08:00
self.btn_close = self._view:GetChild("btn_close")
self.list_banItem = self._view:GetChild("list_banItem")
2025-06-25 22:49:44 +08:00
self.cSetName = self._view:GetController("cSetName")
self.btn_bgRemask = self._view:GetChild("btn_bgRemask")
self.btn_confirmRemask = self._view:GetChild("btn_confirmRemask")
self.btn_quitRemask = self._view:GetChild("btn_quitRemask")
self.input_name = self._view:GetChild("input_name")
self.btn_confirmRemask = self._view:GetChild("btn_confirmRemask")
self.input_name = self._view:GetChild('input_name')
2025-06-17 17:51:24 +08:00
self.btn_close.onClick:Set(function()
self:Close()
end)
2025-06-25 22:49:44 +08:00
self.btn_quitRemask.onClick:Set(function()
self:CloseRemaskWindow()
end)
self.btn_bgRemask.onClick:Set(function()
self:CloseRemaskWindow()
end)
self.btn_confirmRemask.onClick:Set(function()
local name = self.input_name.text
ChangeName(self.selectBanItem, name, self)
end)
2025-06-17 17:51:24 +08:00
self.list_banItem.itemRenderer = function(index, obj)
list_banItemRenderer(index, obj, self)
2025-06-17 17:51:24 +08:00
end
2025-06-17 21:49:48 +08:00
end
function BanDesk:Reflash()
2025-06-25 22:49:44 +08:00
local fgCtr = ControllerManager.GetController(NewGroupController)
local groupId = self.root._group.id
2025-11-06 17:37:53 +08:00
ViewUtil.ShowModalWait2()
2025-07-02 20:13:34 +08:00
fgCtr:FG_GetBanTable1(groupId, function(res)
2025-11-06 17:37:53 +08:00
ViewUtil.CloseModalWait2()
2025-06-25 22:49:44 +08:00
self:GetBanTableCallback(res)
end)
end
function BanDesk:GetBanTableCallback(res)
self.BanData = Sort(res.Data.ban_list)
self.list_banItem.numItems = #self.BanData
2025-06-17 18:21:07 +08:00
-- 最后一个添加ban按钮
local addBanItem = self.list_banItem:AddItemFromPool()
2025-06-25 22:49:44 +08:00
local btn_addBanItem = addBanItem:GetChild("btn_addBanItem")
2025-06-17 21:49:48 +08:00
addBanItem:GetController("cStyle").selectedIndex = 1
2025-06-25 22:49:44 +08:00
btn_addBanItem.onClick:Set(function()
2025-07-02 20:13:34 +08:00
if self.sending then
ViewUtil.ErrorTip(-1, "正在操作中。。")
return
end
self.sending = true
2025-06-25 22:49:44 +08:00
local fgCtr = ControllerManager.GetController(NewGroupController)
local groupId = self.root._group.id
local banList = {}
2025-11-06 17:37:53 +08:00
ViewUtil.ShowModalWait2()
2025-06-25 22:49:44 +08:00
fgCtr:FG_SetBanTable1(groupId, -1, banList, "新建关系", function()
2025-11-06 17:37:53 +08:00
ViewUtil.CloseModalWait2()
self.sending = false
2025-06-25 22:49:44 +08:00
self:Reflash()
end)
end)
end
function BanDesk:ReflashDesk()
local obj = self.list_banItem:GetChildAt(self.changedIndex)
list_banItemRenderer(self.changedIndex, obj, self)
2025-06-17 17:51:24 +08:00
end
2025-06-25 22:49:44 +08:00
-- 打开备注界面
function BanDesk:OpenRemaskWindow()
self.cSetName.selectedIndex = 1
end
function BanDesk:CloseRemaskWindow()
self.cSetName.selectedIndex = 0
end
2025-07-02 20:13:34 +08:00
return BanDesk