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

286 lines
8.1 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 FamilySelectNumber = import(".FamilySelectNumber")
--region LOCAL
local BanDesk = {}
local rootLastIndex = 0
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 LoadData(BanData)
end
local function GetIconFromGroupData(playerId, group)
local player = group.memberMap[playerId]
if player then
return player.portrait
end
print("玩家不在group中无法找到头像 玩家id=",playerId)
return ""
end
local function AllUid(deskList)
local re = {}
pt(deskList)
for _, player in pairs(deskList) do
re[#re + 1] = player.uid
end
return re
end
local function AddPlayer(data, self)
-- 点击弹出选择成员界面
local view = FamilySelectNumber.New()
view:Show(self.root._group.id, function(number)
local players = AllUid(data.deskList)
players[#players + 1] = number.uid
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_SetBanTable1(self.root._group.id, data.deskId, players, data.deskName, function() self:ReflashDesk() end)
end)
end
local function DelPalyer(data, uid, self)
local players = AllUid(data.deskList)
for _, id in pairs(players) do
if id == uid then
players[_] = nil
end
end
-- 修复下标的连续性不然json.encode会吧空下标也解析出来
local fix = {}
for _, id in pairs(players) do
fix[#fix + 1] = id
end
players = fix
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_SetBanTable1(self.root._group.id, data.deskId, players, data.deskName, function() self:ReflashDesk() end)
end
local function DelDesk(data, self)
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_SetBanTable1(self.root._group.id, data.deskId, {}, data.deskName, function() self:Reflash() end)
end
local function ChangeName(deskData, name, self)
local fgCtr = ControllerManager.GetController(NewGroupController)
fgCtr:FG_SetBanTable1(self.root._group.id, deskData.deskId, AllUid(deskData.deskList), name, function()
self:ReflashDesk()
self:CloseRemaskWindow()
end)
end
local function Sort(BanData)
-- 把空的桌子放到下面
local emtpy = {}
for index, desk in pairs(BanData) do
if desk.deskList == nil or #desk.deskList == 0 then
emtpy[#emtpy + 1] = desk
BanData[index] = nil
end
end
local re = {}
for _, desk in pairs(BanData) do
re[#re + 1] = desk
end
for _, desk in pairs(emtpy) do
re[#re + 1] = desk
end
return re
end
--endregion
function BanDesk:TryShow(r)
local view = BanDesk.New()
self.root = r
HideMainView(self)
view:Show()
end
function BanDesk:Show()
BaseWindow.Show(self)
self:Reflash()
end
function BanDesk:Close()
BaseView.Close(self)
ShowMainView(self)
end
function BanDesk.New()
setmetatable(BanDesk, {__index = BaseView})
local inst = setmetatable({}, {__index = BanDesk})
inst._close_destroy = true
inst._full = true
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.btn_close = self._view:GetChild("btn_close")
self.list_banItem = self._view:GetChild("list_banItem")
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')
self.btn_close.onClick:Set(function()
self:Close()
end)
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)
self.list_banItem.itemRenderer = function(index, obj)
local data = self.BanData[index +1]
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()
-- 修改备注
self.changedIndex = index
self.selectBanItem = data
self:OpenRemaskWindow()
end)
btn_del.onClick:Set(function()
-- 删除整个桌子
DelDesk(data, self)
end)
list_BanedPlayers.itemRenderer = function(playerIndex, playerObj)
local loader_icon = playerObj:GetChild("loader_icon")
local tex_name = playerObj:GetChild("tex_name")
local player = data.deskList[playerIndex + 1]
playerObj:GetController("cStyle").selectedIndex = 0
tex_name.text = player.nick
local img = GetIconFromGroupData(player.uid, self.root._group)
ImageLoad.Load(img, loader_icon)
local btn_delPlayer = playerObj:GetChild("btn_delPlayer")
btn_delPlayer.onClick:Set(function()
-- 删除玩家按钮
self.changedIndex = index
DelPalyer(data, player.uid, self)
end)
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
end
function BanDesk:Reflash()
local fgCtr = ControllerManager.GetController(NewGroupController)
local groupId = self.root._group.id
fgCtr:FG_GetBanTable1(groupId,function(res)
self:GetBanTableCallback(res)
end)
end
function BanDesk:GetBanTableCallback(res)
print("BanDesk:GetBanTableCallback")
self.BanData = Sort(res.Data.ban_list)
self.list_banItem.numItems = #self.BanData
-- 最后一个添加ban按钮
local addBanItem = self.list_banItem:AddItemFromPool()
local btn_addBanItem = addBanItem:GetChild("btn_addBanItem")
addBanItem:GetController("cStyle").selectedIndex = 1
btn_addBanItem.onClick:Set(function()
local fgCtr = ControllerManager.GetController(NewGroupController)
local groupId = self.root._group.id
local banList = {}
fgCtr:FG_SetBanTable1(groupId, -1, banList, "新建关系", function()
self:Reflash()
end)
end)
end
function BanDesk:ReflashDesk()
-- 只刷新一个元素,暂时怎么处理,有时间优化
local data = self.BanData[self.changedIndex +1]
local obj = self.list_banItem:GetChildAt(self.changedIndex)
local tex_name = obj:GetChild("tex_name")
local list_BanedPlayers = obj:GetChild("list_BanedPlayers")
tex_name.text = data.deskName
obj:GetController("cStyle").selectedIndex = 0
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 = self.changedIndex
AddPlayer(data, self)
end)
end
-- 打开备注界面
function BanDesk:OpenRemaskWindow()
self.cSetName.selectedIndex = 1
end
function BanDesk:CloseRemaskWindow()
self.cSetName.selectedIndex = 0
end
return BanDesk