96 lines
3 KiB
Lua
96 lines
3 KiB
Lua
|
local XUiRpgMakerGamePanelDetailTip = XClass(nil, "XUiRpgMakerGamePanelDetailTip")
|
||
|
|
||
|
local CSXTextManagerGetText = CS.XTextManager.GetText
|
||
|
local CloseTotalTime = CS.XGame.ClientConfig:GetInt("RpgMakerGamePlayMainShowObjectTipsStayTime")
|
||
|
local Second = XScheduleManager.SECOND
|
||
|
|
||
|
function XUiRpgMakerGamePanelDetailTip:Ctor(ui, rootUi)
|
||
|
self.GameObject = ui.gameObject
|
||
|
self.Transform = ui.transform
|
||
|
self.RootUi = rootUi
|
||
|
XTool.InitUiObject(self)
|
||
|
|
||
|
self.IsPlayingAnima = false
|
||
|
XUiHelper.RegisterClickEvent(self, self.BtnClose, self.Hide)
|
||
|
end
|
||
|
|
||
|
function XUiRpgMakerGamePanelDetailTip:Show(modelKey, modelName)
|
||
|
self:RefreshTxt(modelKey, modelName)
|
||
|
if self.Timer and not self.IsPlayingAnima then
|
||
|
self.IsPlayingAnima = true
|
||
|
self:SetActive(true)
|
||
|
self.RootUi:PlayAnimation("PanelDetailTipEnable")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiRpgMakerGamePanelDetailTip:RefreshTxt(modelKey, modelName)
|
||
|
local name
|
||
|
local desc
|
||
|
local icon
|
||
|
if not string.IsNilOrEmpty(modelKey) then
|
||
|
name = XRpgMakerGameConfigs.GetRpgMakerGameModelName(modelKey)
|
||
|
desc = XRpgMakerGameConfigs.GetRpgMakerGameModelDesc(modelKey)
|
||
|
icon = XRpgMakerGameConfigs.GetRpgMakerGameModelIcon(modelKey)
|
||
|
elseif not string.IsNilOrEmpty(modelName) then
|
||
|
name = XRpgMakerGameConfigs.GetRpgMakerGameName(modelName)
|
||
|
desc = XRpgMakerGameConfigs.GetRpgMakerGameDesc(modelName)
|
||
|
icon = XRpgMakerGameConfigs.GetRpgMakerGameIcon(modelName)
|
||
|
end
|
||
|
|
||
|
if string.IsNilOrEmpty(name) or string.IsNilOrEmpty(desc) then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
self:StopTimer()
|
||
|
|
||
|
local secondTime = CloseTotalTime
|
||
|
|
||
|
self.TxtJd.text = CSXTextManagerGetText("RpgMakerGameTipClose", XUiHelper.GetTimeDesc(secondTime))
|
||
|
self.ImgJd.fillAmount = 1
|
||
|
self.TxtName.text = name or ""
|
||
|
self.TxtDetail.text = desc or ""
|
||
|
|
||
|
if icon then
|
||
|
self.RootUi:SetUiSprite(self.ImgIcon, icon)
|
||
|
self.ImgIcon.gameObject:SetActiveEx(true)
|
||
|
else
|
||
|
self.ImgIcon.gameObject:SetActiveEx(false)
|
||
|
end
|
||
|
|
||
|
local timeLeft
|
||
|
self.Timer = XUiHelper.Tween(CloseTotalTime, function(f)
|
||
|
if XTool.UObjIsNil(self.GameObject) then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
timeLeft = 1 - f
|
||
|
self.TxtJd.text = timeLeft > 0 and CSXTextManagerGetText("RpgMakerGameTipClose", XUiHelper.GetTimeDesc(math.ceil(timeLeft * CloseTotalTime))) or ""
|
||
|
self.ImgJd.fillAmount = CloseTotalTime * timeLeft / CloseTotalTime
|
||
|
end, function ()
|
||
|
self:Hide()
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function XUiRpgMakerGamePanelDetailTip:Hide()
|
||
|
self:StopTimer()
|
||
|
self.RootUi:PlayAnimation("PanelDetailTipDisable", function()
|
||
|
self:SetActive(false)
|
||
|
end)
|
||
|
self.IsPlayingAnima = false
|
||
|
end
|
||
|
|
||
|
function XUiRpgMakerGamePanelDetailTip:StopTimer()
|
||
|
if self.Timer then
|
||
|
XScheduleManager.UnSchedule(self.Timer)
|
||
|
self.Timer = nil
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiRpgMakerGamePanelDetailTip:SetActive(isActive)
|
||
|
if XTool.UObjIsNil(self.GameObject) then
|
||
|
return
|
||
|
end
|
||
|
self.GameObject.gameObject:SetActiveEx(isActive)
|
||
|
end
|
||
|
|
||
|
return XUiRpgMakerGamePanelDetailTip
|