103 lines
2.7 KiB
Lua
103 lines
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
|