231 lines
No EOL
8.5 KiB
Lua
231 lines
No EOL
8.5 KiB
Lua
local XUiGridTemplateSelectRoom = require("XUi/XUiDormTemplate/XUiGridTemplateSelectRoom")
|
||
local XUiPanelTemlateSelectRoom = XClass(nil, "XUiPanelTemlateSelectRoom")
|
||
|
||
function XUiPanelTemlateSelectRoom:Ctor(ui, rootUi, sureCb)
|
||
self.GameObject = ui.gameObject
|
||
self.Transform = ui.transform
|
||
self.RootUi = rootUi
|
||
self.SureCb = sureCb
|
||
self.GridRoomList = {}
|
||
|
||
XTool.InitUiObject(self)
|
||
self:AddListener()
|
||
self:Init()
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:RegisterClickEvent(uiNode, func)
|
||
if func == nil then
|
||
XLog.Error("XUiPanelTemlateSelectRoom:RegisterClickEvent函数参数错误:参数func不能为空")
|
||
return
|
||
end
|
||
|
||
if type(func) ~= "function" then
|
||
XLog.Error("XUiPanelTemlateSelectRoom:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
||
end
|
||
|
||
local listener = function(...)
|
||
func(self, ...)
|
||
end
|
||
|
||
CsXUiHelper.RegisterClickEvent(uiNode, listener)
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:AddListener()
|
||
self:RegisterClickEvent(self.BtnClose, self.OnBtnCloseClick)
|
||
self:RegisterClickEvent(self.BtnAllClose, self.OnBtnCloseClick)
|
||
self:RegisterClickEvent(self.BtnCancel, self.OnBtnCloseClick)
|
||
self:RegisterClickEvent(self.BtnSure, self.OnBtnSureClick)
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:Init()
|
||
self.GridTemplateSelectRoom.gameObject:SetActiveEx(false)
|
||
self.GameObject:SetActiveEx(false)
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:OnBtnCloseClick()
|
||
self:Close()
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:OnBtnSureClick()
|
||
-- 重复绑定同一个宿舍
|
||
if self.ConnectId > 0 and self.ConnectId == self.SelectId then
|
||
XUiManager.TipMsg(CS.XTextManager.GetText("DormTemplateSelectTip"))
|
||
return
|
||
end
|
||
|
||
-- 没有选择宿舍
|
||
if self.ConnectId <= 0 and self.SelectId <= 0 then
|
||
XUiManager.TipMsg(CS.XTextManager.GetText("DormTemplateSelectNoneTip"))
|
||
return
|
||
end
|
||
|
||
-- 取消绑定当前宿舍
|
||
if self.ConnectId > 0 and self.SelectId <= 0 then
|
||
local titletext = CS.XTextManager.GetText("TipTitle")
|
||
local contenttext = CS.XTextManager.GetText("DormTemplateSelectCancelTip")
|
||
|
||
local cancelConectFunc = function()
|
||
local conectRoom = XDataCenter.DormManager.GetRoomDataByRoomId(self.ConnectId)
|
||
self.HomeRoomData:SetConnectDormId(0)
|
||
conectRoom:SetConnectDormId(0)
|
||
local isUnBind = true
|
||
self:CallBackHandle(isUnBind)
|
||
end
|
||
|
||
XUiManager.DialogTip(titletext, contenttext, XUiManager.DialogType.Normal, nil, function()
|
||
XDataCenter.DormManager.DormUnBindLayoutReq(self.HomeRoomData:GetRoomId(), cancelConectFunc)
|
||
end)
|
||
|
||
return
|
||
end
|
||
|
||
local selectRoom = XDataCenter.DormManager.GetRoomDataByRoomId(self.SelectId)
|
||
|
||
-- 正常绑定宿舍
|
||
if self.ConnectId <= 0 and self.SelectId > 0 and selectRoom:GetConnectDormId() <= 0 then
|
||
XDataCenter.DormManager.DormBindLayoutReq(self.SelectId, self.HomeRoomData:GetRoomId(), function()
|
||
self.HomeRoomData:SetConnectDormId(self.SelectId)
|
||
selectRoom:SetConnectDormId(self.HomeRoomData:GetRoomId())
|
||
self:CallBackHandle()
|
||
end)
|
||
return
|
||
end
|
||
|
||
-- 当前没有绑定宿舍 并且绑定了一个有绑定关系的宿舍
|
||
if self.ConnectId <= 0 and self.SelectId > 0 and selectRoom:GetConnectDormId() > 0 then
|
||
local titletext = CS.XTextManager.GetText("TipTitle")
|
||
local contenttext = CS.XTextManager.GetText("DormTemplateSelectHaveTip1", selectRoom:GetRoomName())
|
||
|
||
local conectFunc = function()
|
||
local unbingRoom = XDataCenter.DormManager.GetRoomDataByRoomId(selectRoom:GetConnectDormId(), XDormConfig.DormDataType.Template)
|
||
unbingRoom:SetConnectDormId(0)
|
||
|
||
selectRoom:SetConnectDormId(self.HomeRoomData:GetRoomId())
|
||
self.HomeRoomData:SetConnectDormId(self.SelectId)
|
||
self:CallBackHandle()
|
||
end
|
||
|
||
XUiManager.DialogTip(titletext, contenttext, XUiManager.DialogType.Normal, nil, function()
|
||
XDataCenter.DormManager.DormBindLayoutReq(self.SelectId, self.HomeRoomData:GetRoomId(), conectFunc)
|
||
end)
|
||
return
|
||
end
|
||
|
||
-- 当前有绑定宿舍 并且绑定了一个没有有绑定关系的宿舍
|
||
if self.ConnectId > 0 and self.SelectId > 0 and selectRoom:GetConnectDormId() <= 0 then
|
||
local titletext = CS.XTextManager.GetText("TipTitle")
|
||
local conectRoom = XDataCenter.DormManager.GetRoomDataByRoomId(self.ConnectId)
|
||
local contenttext = CS.XTextManager.GetText("DormTemplateSelectHaveTip1", conectRoom:GetRoomName())
|
||
|
||
local conectFunc = function()
|
||
local conectCurRoom = XDataCenter.DormManager.GetRoomDataByRoomId(self.ConnectId)
|
||
conectCurRoom:SetConnectDormId(0)
|
||
|
||
selectRoom:SetConnectDormId(self.HomeRoomData:GetRoomId())
|
||
self.HomeRoomData:SetConnectDormId(self.SelectId)
|
||
self:CallBackHandle()
|
||
end
|
||
|
||
XUiManager.DialogTip(titletext, contenttext, XUiManager.DialogType.Normal, nil, function()
|
||
XDataCenter.DormManager.DormBindLayoutReq(self.SelectId, self.HomeRoomData:GetRoomId(), conectFunc)
|
||
end)
|
||
return
|
||
end
|
||
|
||
-- 当前有绑定宿舍 并且又绑定了一个有绑定关系的宿舍
|
||
if self.ConnectId > 0 and self.SelectId > 0 and selectRoom:GetConnectDormId() > 0 then
|
||
local titletext = CS.XTextManager.GetText("TipTitle")
|
||
local contenttext = CS.XTextManager.GetText("DormTemplateSelectHaveTip2", selectRoom:GetRoomName())
|
||
|
||
local conectFunc = function()
|
||
local conectRoom = XDataCenter.DormManager.GetRoomDataByRoomId(self.ConnectId)
|
||
conectRoom:SetConnectDormId(0)
|
||
local unbingRoom = XDataCenter.DormManager.GetRoomDataByRoomId(selectRoom:GetConnectDormId(), XDormConfig.DormDataType.Template)
|
||
unbingRoom:SetConnectDormId(0)
|
||
|
||
selectRoom:SetConnectDormId(self.HomeRoomData:GetRoomId())
|
||
self.HomeRoomData:SetConnectDormId(self.SelectId)
|
||
self:CallBackHandle()
|
||
end
|
||
|
||
XUiManager.DialogTip(titletext, contenttext, XUiManager.DialogType.Normal, nil, function()
|
||
XDataCenter.DormManager.DormBindLayoutReq(self.SelectId, self.HomeRoomData:GetRoomId(), conectFunc)
|
||
end)
|
||
return
|
||
end
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:CallBackHandle(isUnBind)
|
||
local content = isUnBind and "DormTemplateUnSelectSuccess" or "DormTemplateSelectSuccess"
|
||
XUiManager.TipSuccess(CS.XTextManager.GetText(content))
|
||
|
||
if self.SureCb then
|
||
self.SureCb(self.HomeRoomData)
|
||
end
|
||
|
||
self:Close()
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:Open(homeRoomData, curDormId)
|
||
self.HomeRoomData = homeRoomData
|
||
self.ConnectId = self.HomeRoomData:GetConnectDormId()
|
||
self.SelectId = self.ConnectId
|
||
self.CurDormId = curDormId
|
||
|
||
local dormDatas = XDataCenter.DormManager.GetDormitoryData()
|
||
local dataList = {}
|
||
for _, v in pairs(dormDatas) do
|
||
if v:WhetherRoomUnlock() then
|
||
table.insert(dataList, v)
|
||
end
|
||
end
|
||
|
||
table.sort(dataList, function(a, b)
|
||
local sortA = XDormConfig.GetDormitoryCfgById(a.Id).InitNumber
|
||
local sortB = XDormConfig.GetDormitoryCfgById(b.Id).InitNumber
|
||
|
||
return sortA < sortB
|
||
end)
|
||
|
||
for _, v in ipairs(self.GridRoomList) do
|
||
v.GameObject:SetActiveEx(false)
|
||
end
|
||
|
||
for i, data in ipairs(dataList) do
|
||
local roomGrid = self.GridRoomList[i]
|
||
if not roomGrid then
|
||
local grid = CS.UnityEngine.GameObject.Instantiate(self.GridTemplateSelectRoom)
|
||
grid.transform:SetParent(self.PanelDormContent, false)
|
||
roomGrid = XUiGridTemplateSelectRoom.New(grid)
|
||
table.insert(self.GridRoomList, roomGrid)
|
||
end
|
||
|
||
roomGrid:Refresh(data, self.ConnectId, function(roomId)
|
||
-- 取消选择
|
||
if self.SelectId == roomId then
|
||
self.SelectId = 0
|
||
self:SetGridSelected(self.SelectId)
|
||
return
|
||
end
|
||
|
||
self.SelectId = roomId
|
||
self:SetGridSelected(roomId)
|
||
end, self.CurDormId)
|
||
roomGrid.GameObject:SetActiveEx(true)
|
||
end
|
||
|
||
self.GameObject:SetActiveEx(true)
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:SetGridSelected(roomId)
|
||
for _, v in ipairs(self.GridRoomList) do
|
||
local id = v.RoomData:GetRoomId()
|
||
v:SetSelected(id == roomId)
|
||
end
|
||
end
|
||
|
||
function XUiPanelTemlateSelectRoom:Close()
|
||
self.GameObject:SetActiveEx(false)
|
||
end
|
||
|
||
return XUiPanelTemlateSelectRoom |