142 lines
No EOL
4.3 KiB
Lua
142 lines
No EOL
4.3 KiB
Lua
XRoomObject = XClass(nil, "XRoomObject")
|
|
|
|
function XRoomObject:Ctor(go, parent, cfg)
|
|
self.GameObject = go
|
|
self.Transform = go.transform
|
|
self.Parent = parent
|
|
|
|
self.RoomType = cfg.Id
|
|
self.DeviceList = {}
|
|
|
|
local curScene = XHomeSceneManager.GetCurrentScene()
|
|
local device_map = XDataCenter.HostelManager.GetSceneDeviceNodeMap(cfg.Scene, cfg.Id)
|
|
if device_map ~= nil then
|
|
for _, device_cfg in pairs(device_map) do
|
|
if not string.IsNilOrEmpty(device_cfg.Path) then
|
|
local deviceGo = curScene.GameObject.transform:Find(device_cfg.Path).gameObject
|
|
local device = XDeviceObject.New(deviceGo, self, device_cfg)
|
|
--local uiWidget = deviceGo.gameObject:AddComponent(typeof(CS.XUiWidget))
|
|
--uiWidget:AddPointerClickListener(XSceneEventHandler.OnSceneObjectClick)
|
|
--uiWidget:AddBeginDragListener(XSceneEventHandler.OnBeginDrag)
|
|
--uiWidget:AddEndDragListener(XSceneEventHandler.OnEndDrag)
|
|
table.insert(self.DeviceList, device)
|
|
end
|
|
end
|
|
end
|
|
|
|
XSceneEntityManager.AddEntity(self.GameObject, self)
|
|
self:CheckShowHud()
|
|
end
|
|
|
|
function XRoomObject:Dispose()
|
|
XSceneEntityManager.RemoveEntity(self.GameObject)
|
|
for _, device in ipairs(self.DeviceList) do
|
|
device:Dispose()
|
|
end
|
|
self:HideRoomCurHud()
|
|
self.DeviceList = nil
|
|
|
|
self.GameObject = nil
|
|
self.Parent = nil
|
|
end
|
|
|
|
function XRoomObject:CheckShowHud()
|
|
local state = XDataCenter.HostelManager.GetFuncDeviceUpgradeState(self.RoomType)
|
|
if state == XDataCenter.HostelManager.DeviceUpgradeState.Upgrading or state == XDataCenter.HostelManager.DeviceUpgradeState.Complete then
|
|
self:ShowHud(UiHudType.RoomUpgrade, { Type = self.RoomType })
|
|
end
|
|
end
|
|
|
|
function XRoomObject:OnClick()
|
|
self:ChangeViewCurRoomView()
|
|
XLuaUiManager.Open("UiHostelRoom")
|
|
local state = XDataCenter.HostelManager.GetFuncDeviceUpgradeState(self.RoomType)
|
|
if state == XDataCenter.HostelManager.DeviceUpgradeState.Complete then
|
|
self:HideRoomCurHud()
|
|
XDataCenter.HostelManager.ComfirmFuncDeviceUpgrade(self.RoomType, function()
|
|
CS.XUiManager.DialogManager:Push("UiHostelDeviceUpgradeResult", false, false, self.RoomType)
|
|
end)
|
|
end
|
|
end
|
|
|
|
function XRoomObject:ChangeViewCurRoomView()
|
|
if XDataCenter.HostelManager.IsInVisitFriendHostel() then
|
|
return
|
|
else
|
|
local state = XDataCenter.HostelManager.GetFuncDeviceUpgradeState(self.RoomType)
|
|
if state == XDataCenter.HostelManager.DeviceUpgradeState.Upgrading then
|
|
return
|
|
end
|
|
end
|
|
local cameraCtrl = XHomeSceneManager.GetSceneCameraController()
|
|
if cameraCtrl then
|
|
XCameraHelper.SetCameraTarget(cameraCtrl, self.GameObject.transform, 8)
|
|
cameraCtrl:SetWorldOffset(CS.UnityEngine.Vector2.zero)
|
|
cameraCtrl.AllowDrag = false
|
|
end
|
|
|
|
XHomeSceneManager.ChangeView(HomeSceneViewType.RoomView)
|
|
|
|
for _, device in ipairs(self.DeviceList) do
|
|
device:CheckShowHud()
|
|
end
|
|
end
|
|
|
|
function XRoomObject:OnBeginDrag()
|
|
--
|
|
end
|
|
|
|
function XRoomObject:OnEndDrag()
|
|
--
|
|
end
|
|
|
|
function XRoomObject:OnDrag()
|
|
--
|
|
end
|
|
|
|
function XRoomObject:ShowHud(hudType, data)
|
|
local hud = nil
|
|
if self.HudId then
|
|
local oldHud = XHudManager.GetDisplayHudByInstId(self.HudId)
|
|
if oldHud then
|
|
if oldHud.HudType == hudType then
|
|
hud = oldHud
|
|
else
|
|
oldHud:Hide()
|
|
end
|
|
end
|
|
end
|
|
|
|
if not hud then
|
|
hud = XHudManager.GetHud(hudType)
|
|
self.HudId = hud.InstId
|
|
end
|
|
data.Cfg = XDataCenter.HostelManager.GetHudTemplate(hudType, self.RoomType)
|
|
hud:SetMetaData(data)
|
|
local camera = XHomeSceneManager.GetSceneCamera()
|
|
hud:SetFollowTarget(self.Transform, camera)
|
|
end
|
|
|
|
function XRoomObject:HideRoomCurHud()
|
|
if self.HudId then
|
|
local hud = XHudManager.GetDisplayHudByInstId(self.HudId)
|
|
if hud then
|
|
hud:Hide()
|
|
end
|
|
self.HudId = nil
|
|
end
|
|
end
|
|
|
|
function XRoomObject:GetDisplayHud()
|
|
if self.HudId then
|
|
return XHudManager.GetDisplayHudByInstId(self.HudId)
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
function XRoomObject:HideDeviceHud()
|
|
for _, device in ipairs(self.DeviceList) do
|
|
device:HideHud()
|
|
end
|
|
end |