103 lines
No EOL
2.7 KiB
Lua
103 lines
No EOL
2.7 KiB
Lua
local XUiPanelPutOn = XClass(XLuaBehaviour, "XUiPanelPutOn")
|
|
|
|
function XUiPanelPutOn:Ctor(rootUi, ui)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
|
|
XTool.InitUiObject(self)
|
|
end
|
|
|
|
function XUiPanelPutOn:InitRoomId(curRoomId)
|
|
self.CurRoomId = curRoomId
|
|
self:Hide()
|
|
end
|
|
|
|
function XUiPanelPutOn:PlayAnima()
|
|
self.PanelCountdown.gameObject:SetActive(true)
|
|
self.ImgPutDown.gameObject:SetActive(false)
|
|
self.ImgPutOn.gameObject:SetActive(false)
|
|
|
|
self.ImgCountdown.fillAmount = 0
|
|
local time = CS.XGame.ClientConfig:GetFloat("DormPutOnAnimaTime")
|
|
self.AnimaTimer = XUiHelper.Tween(time, function(f)
|
|
if not self.GameObject.activeSelf or XTool.UObjIsNil(self.Transform) then
|
|
return
|
|
end
|
|
|
|
self.ImgCountdown.fillAmount = f
|
|
end)
|
|
end
|
|
|
|
function XUiPanelPutOn:UpdateTransform(transform)
|
|
local pos = transform.position + self.Offset
|
|
local viewPos = XHomeDormManager.GetWorldToViewPoint(self.CurRoomId, pos)
|
|
|
|
self.Transform.localPosition = viewPos
|
|
end
|
|
|
|
function XUiPanelPutOn:Show(id, transform, isCharacter)
|
|
local hight
|
|
|
|
if isCharacter then
|
|
local cfg = XDormConfig.GetCharacterStyleConfigById(id)
|
|
hight = cfg.PutOnWidgetHight
|
|
else
|
|
local cfg = XFurnitureConfigs.GetFurnitureTemplateById(id)
|
|
hight = cfg.PutOnWidgetHight
|
|
end
|
|
|
|
self.Offset = CS.UnityEngine.Vector3(0, hight, 0)
|
|
self.TargetTransform = transform
|
|
self:UpdateTransform(self.TargetTransform)
|
|
|
|
self.GameObject:SetActive(true)
|
|
self:PlayAnima()
|
|
end
|
|
|
|
function XUiPanelPutOn:Catch()
|
|
self.PanelCountdown.gameObject:SetActive(false)
|
|
self.ImgPutDown.gameObject:SetActive(false)
|
|
self.ImgPutOn.gameObject:SetActive(false)
|
|
end
|
|
|
|
function XUiPanelPutOn:Hide()
|
|
self.PanelCountdown.gameObject:SetActive(false)
|
|
self.ImgPutDown.gameObject:SetActive(false)
|
|
self.ImgPutOn.gameObject:SetActive(false)
|
|
|
|
XScheduleManager.ScheduleOnce(function()
|
|
if not self.GameObject.activeSelf or XTool.UObjIsNil(self.Transform) then
|
|
return
|
|
end
|
|
|
|
self:Close()
|
|
end, 100)
|
|
end
|
|
|
|
function XUiPanelPutOn:Close()
|
|
self.PanelCountdown.gameObject:SetActive(false)
|
|
self.ImgPutDown.gameObject:SetActive(false)
|
|
self.ImgPutOn.gameObject:SetActive(false)
|
|
|
|
if self.AnimaTimer ~= nil then
|
|
XScheduleManager.UnSchedule(self.AnimaTimer)
|
|
self.AnimaTimer = nil
|
|
end
|
|
|
|
self.TargetTransform = nil
|
|
self.GameObject:SetActive(false)
|
|
end
|
|
|
|
function XUiPanelPutOn:Update()
|
|
if not self.GameObject.activeSelf or XTool.UObjIsNil(self.Transform) then
|
|
return
|
|
end
|
|
|
|
if XTool.UObjIsNil(self.TargetTransform) then
|
|
return
|
|
end
|
|
|
|
self:UpdateTransform(self.TargetTransform)
|
|
end
|
|
|
|
return XUiPanelPutOn |