116 lines
No EOL
3.5 KiB
Lua
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 |