PGRData/Resources/Scripts/XUi/XUiDormComponent/XUiPanelExp.lua
2022-12-26 14:06:01 +05:30

116 lines
No EOL
3.5 KiB
Lua

local XUiPanelExp = XClass(XLuaBehaviour, "XUiPanelExp")
function XUiPanelExp:Ctor(rootUi, ui)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RootUi = rootUi
XTool.InitUiObject(self)
end
function XUiPanelExp:InitRoomId(curRoomId)
self.CurRoomId = curRoomId
self:Hide(true)
end
function XUiPanelExp:RefreshExpInfo(changeValue)
self:RemoveTimer()
local characterData = XDataCenter.DormManager.GetCharacterDataByCharId(self.CharacterId)
local moodConfig = XDormConfig.GetMoodStateByMoodValue(characterData.Mood)
self.ImgCurEnergy.fillAmount = characterData.Mood / XDormConfig.DORM_MOOD_MAX_VALUE
self.ImgCurEnergy.color = XDormConfig.GetMoodStateColor(characterData.Mood)
self.RootUi:SetUiSprite(self.ImgIcon, moodConfig.Icon)
self.TxtMoodAdd.gameObject:SetActive(false)
XDataCenter.DormManager.GetDormitoryRecoverSpeed(self.CharacterId, function(moodSpeed, vitalitySpeed, data)
local vContext = data.VitalitySpeed > 0 and "DormRecovery1" or "DormRecovery2"
local mContext = data.MoodSpeed > 0 and "DormRecovery1" or "DormRecovery2"
self.TxtResume.text = CS.XTextManager.GetText(vContext, vitalitySpeed)
self.TxtMoodResume.text = CS.XTextManager.GetText(mContext, moodSpeed)
end)
local charLevelConfig = XDataCenter.DormManager.GetCharRecoveryCurLevel(self.CharacterId)
self.TxtLevel.text = "Lv." .. charLevelConfig.Pre
-- 不展示心情值减少事件
if changeValue and changeValue > 0 then
self.TxtMoodAdd.text = "+" .. changeValue
self.TxtMoodAdd.gameObject:SetActive(true)
self.Timer = XScheduleManager.ScheduleOnce(function()
if XTool.UObjIsNil(self.Transform) or not self.GameObject.activeSelf then
return
end
self.TxtMoodAdd.gameObject:SetActive(false)
end, XDormConfig.DISPPEAR_TIME)
end
end
function XUiPanelExp:RemoveTimer()
if self.Timer then
XScheduleManager.UnSchedule(self.Timer)
self.Timer = nil
end
end
function XUiPanelExp:UpdateExpInfo(characterId, changeValue)
if not self.CharacterId or self.CharacterId ~= characterId then
return
end
self:RefreshExpInfo(changeValue)
end
function XUiPanelExp:UpdateTransform(transform)
local pos = transform.position + self.Offset
local viewPos = XHomeDormManager.GetWorldToViewPoint(self.CurRoomId, pos)
self.Transform.localPosition = viewPos
end
function XUiPanelExp:Show(characterId, transform)
if characterId and not self.CharacterId then
self.CharacterId = characterId
end
if transform and not self.TargetTransform then
self.TargetTransform = transform
end
self.StyleConfig = XDormConfig.GetCharacterStyleConfigById(self.CharacterId)
self:UpdateOffset()
self:UpdateTransform(self.TargetTransform)
self:RefreshExpInfo()
self.GameObject:SetActive(true)
end
function XUiPanelExp:UpdateOffset()
local offsetHight = self.StyleConfig.ExpFondleWidgetHeight
self.Offset = CS.UnityEngine.Vector3(0, offsetHight, 0)
end
function XUiPanelExp:Hide(clearId)
self:RemoveTimer()
self.TargetTransform = nil
if clearId then
self.CharacterId = nil
end
self.GameObject:SetActive(false)
end
function XUiPanelExp: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 XUiPanelExp