forked from endernon/PGRData
144 lines
No EOL
4.8 KiB
Lua
144 lines
No EOL
4.8 KiB
Lua
|
|
local XUiGridTemplateItem = XClass(nil, "XUiGridTemplateItem")
|
|
|
|
function XUiGridTemplateItem:Ctor(ui)
|
|
XTool.InitUiObjectByUi(self, ui)
|
|
self.TemplateCollect = XDormConfig.GetDormTemplateCollectList()
|
|
self.IsSelect = false
|
|
|
|
XUiHelper.RegisterClickEvent(self, self.Transform, self.OnBtnClick)
|
|
end
|
|
|
|
function XUiGridTemplateItem:Init(parentUi, rootUi)
|
|
self.ParentUi = parentUi
|
|
self.RootUi = rootUi
|
|
end
|
|
|
|
---
|
|
---@param data XHomeRoomData
|
|
---@return
|
|
--------------------------
|
|
function XUiGridTemplateItem:Refresh(data, curRoomId, selectId, dataType, index)
|
|
self.Index = index
|
|
self.Data = data or self.Data
|
|
self.CurRoomId = curRoomId or self.CurRoomId
|
|
self.SelectId = selectId or self.SelectId
|
|
self.DataType = dataType or self.DataType
|
|
self.IsReform = XDataCenter.FurnitureManager.GetInReform()
|
|
local isEmpty = XTool.IsTableEmpty(data)
|
|
self.PanelTemplateNone.gameObject:SetActiveEx(isEmpty)
|
|
self.PanelTemplate.gameObject:SetActiveEx(not isEmpty)
|
|
self:SetSelect(selectId == self:GetSelectId())
|
|
if isEmpty then
|
|
return
|
|
end
|
|
local roomType = data:GetRoomDataType()
|
|
if roomType == XDormConfig.DormDataType.Template then
|
|
self.RImgIcon:SetRawImage(data:GetRoomPicturePath())
|
|
elseif roomType == XDormConfig.DormDataType.Collect then
|
|
data:GetRoomPicture(function(texture)
|
|
if not texture then
|
|
local cfg = self.TemplateCollect[self.Index]
|
|
self.RImgIcon:SetRawImage(cfg.DefaultIcon)
|
|
else
|
|
self.RImgIcon:SetRawImageTexture(texture)
|
|
end
|
|
end)
|
|
end
|
|
self.TxtName.text = string.format("%s %d/%d", data:GetRoomName(),
|
|
XDataCenter.DormManager.GetRoomAndTemplateFurnitureCount(self.CurRoomId, data:GetRoomId(), roomType))
|
|
local roomData = XDataCenter.DormManager.GetRoomDataByRoomId(self.CurRoomId, dataType)
|
|
local isTarget = roomData:GetConnectDormId() == data:GetRoomId()
|
|
self.PanelTarget.gameObject:SetActiveEx(isTarget)
|
|
local roomId = data:GetRoomId()
|
|
|
|
local showProgress = isTarget and not self.IsReform
|
|
self.PanelConnect.gameObject:SetActiveEx(showProgress)
|
|
if showProgress then
|
|
local percent = XDataCenter.DormManager.GetDormTemplatePercent(self.CurRoomId, data:GetRoomId())
|
|
self.TxtConnectDorm.text = percent .. "%"
|
|
end
|
|
end
|
|
|
|
function XUiGridTemplateItem:OnBtnClick()
|
|
if self.IsSelect then
|
|
return
|
|
end
|
|
|
|
if self.RootUi and self.RootUi.CheckNeedSaveTemplate and self.RootUi:CheckNeedSaveTemplate() then
|
|
XUiManager.DialogTip(XUiHelper.GetText("FurnitureTips"), XUiHelper.GetText("FurnitureIsSave"),
|
|
nil, function()
|
|
self:DoBtnClick()
|
|
end, function()
|
|
self.RootUi:DoSaveRoom(false)
|
|
end)
|
|
else
|
|
self:DoBtnClick()
|
|
end
|
|
end
|
|
|
|
function XUiGridTemplateItem:DoBtnClick()
|
|
self.ParentUi:OnGridClick(self, self.Index)
|
|
self:SetSelect(true)
|
|
|
|
if self.OnClick then
|
|
self.OnClick()
|
|
return
|
|
end
|
|
|
|
if XTool.IsTableEmpty(self.Data) then
|
|
local cfg = self.TemplateCollect[self.Index]
|
|
local enterRoomId = cfg.SkipTemplateId
|
|
XDataCenter.DormManager.EnterTemplateDormitory(enterRoomId, XDormConfig.DormDataType.CollectNone, self.CurRoomId)
|
|
return
|
|
end
|
|
if self.IsReform then
|
|
self:ReplaceRoomFurniture(self.Data:GetRoomId(), self.Data:GetRoomDataType())
|
|
else
|
|
self:ChangeRoom(self.Data:GetRoomId(), self.Data:GetRoomDataType())
|
|
end
|
|
end
|
|
|
|
function XUiGridTemplateItem:ReplaceClickCb(onClick)
|
|
self.OnClick = onClick
|
|
end
|
|
|
|
function XUiGridTemplateItem:SetSelect(select)
|
|
self.IsSelect = select
|
|
self.Select.gameObject:SetActiveEx(select)
|
|
end
|
|
|
|
function XUiGridTemplateItem:GetSelectId()
|
|
if self.Data and self.Data.GetRoomId then
|
|
return self.Data:GetRoomId()
|
|
end
|
|
local cfg = self.TemplateCollect[self.Index]
|
|
|
|
return cfg.Id
|
|
end
|
|
|
|
function XUiGridTemplateItem:ChangeRoom(roomId, roomType)
|
|
local isCollectNone = roomType == XDormConfig.DormDataType.CollectNone
|
|
if isCollectNone then
|
|
roomType = XDormConfig.DormDataType.Template
|
|
end
|
|
local data = XDataCenter.DormManager.GetRoomDataByRoomId(roomId, roomType)
|
|
if isCollectNone then
|
|
local defaultFurniture = XDataCenter.FurnitureManager.GetCollectNoneFurniture(roomId)
|
|
if defaultFurniture then
|
|
data:SetFurnitureDic(defaultFurniture)
|
|
end
|
|
end
|
|
XHomeDormManager.LoadRooms({ data }, roomType, true)
|
|
XHomeDormManager.SetSelectedRoom(roomId, true)
|
|
end
|
|
|
|
function XUiGridTemplateItem:ReplaceRoomFurniture(roomId, roomType)
|
|
local roomData = XDataCenter.DormManager.GetRoomDataByRoomId(roomId, roomType)
|
|
local room = XHomeDormManager.GetRoom(self.CurRoomId)
|
|
if room then
|
|
room:ReplaceFurniture(roomData)
|
|
end
|
|
end
|
|
|
|
return XUiGridTemplateItem |