Files
Endfield-Data/LuaScripts/UI/Widgets/DomainTopMoneyTitle.lua
2025-12-02 20:37:18 +07:00

124 lines
3.1 KiB
Lua

local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
DomainTopMoneyTitle = HL.Class('DomainTopMoneyTitle', UIWidgetBase)
DomainTopMoneyTitle.m_moneyId = HL.Field(HL.String) << ""
DomainTopMoneyTitle.m_moneyLimit = HL.Field(HL.Number) << -1
DomainTopMoneyTitle.m_moneyClearRule = HL.Field(GEnums.MoneyClearRuleType)
DomainTopMoneyTitle.m_resetMoneyCountDownCompleteFunc = HL.Field(HL.Function)
DomainTopMoneyTitle.m_timeFormatFunc = HL.Field(HL.Function)
DomainTopMoneyTitle._OnFirstTimeInit = HL.Override() << function(self)
self.m_resetMoneyCountDownCompleteFunc = function()
self:_OnCountDownComplete()
end
self.m_timeFormatFunc = function(leftTime)
local curMoney = Utils.getItemCount(self.m_moneyId)
if curMoney < self.m_moneyLimit then
self.view.timeNode.gameObject:SetActive(false)
else
self.view.timeNode.gameObject:SetActive(true)
end
self.view.resetMoneyTimeTxt.view.textStateCtrl:SetState(leftTime >= Const.SEC_PER_DAY and "EnoughTime" or "insufficientTime")
return UIUtils.getShortLeftTime(leftTime)
end
self.view.contentNaviGroup.onIsFocusedChange:AddListener(function(isFocused)
if not isFocused then
Notify(MessageConst.HIDE_ITEM_TIPS)
end
end)
end
DomainTopMoneyTitle.InitDomainTopMoneyTitle = HL.Method(HL.String, HL.Opt(HL.Number, GEnums.MoneyClearRuleType))
<< function(self, moneyId, moneyLimit, clearRuleType)
self:_FirstTimeInit()
self.m_moneyId = moneyId
if moneyLimit ~= nil then
self.m_moneyLimit = moneyLimit
self.m_moneyClearRule = clearRuleType or GEnums.MoneyClearRuleType.Weekly
else
local hasMoneyCfg, moneyCfg = Tables.moneyConfigTable:TryGetValue(moneyId)
if hasMoneyCfg then
self.m_moneyLimit = moneyCfg.MoneyClearLimit
self.m_moneyClearRule = moneyCfg.clearRule
end
end
self.view.moneyWidget:InitMoneyCell(moneyId, true, false, true, self.m_moneyLimit)
self:_OnCountDownComplete()
end
DomainTopMoneyTitle._GetTargetTime = HL.Method().Return(HL.Number) << function(self)
local targetTime = 0
if self.m_moneyClearRule == GEnums.MoneyClearRuleType.Weekly then
targetTime = Utils.getNextWeeklyServerRefreshTime()
elseif self.m_moneyClearRule == GEnums.MoneyClearRuleType.Daily then
targetTime = Utils.getNextCommonServerRefreshTime()
elseif self.m_moneyClearRule == GEnums.MoneyClearRuleType.Monthly then
targetTime = Utils.getNextMonthlyServerRefreshTime()
end
return targetTime
end
DomainTopMoneyTitle._OnCountDownComplete = HL.Method() << function(self)
local targetTime = self:_GetTargetTime()
self.view.resetMoneyTimeTxt:InitCountDownText(
targetTime,
self.m_resetMoneyCountDownCompleteFunc,
self.m_timeFormatFunc
)
end
DomainTopMoneyTitle.SetTitleText = HL.Method(HL.String) << function(self, titleText)
self.view.titleTxt.text = titleText
end
HL.Commit(DomainTopMoneyTitle)
return DomainTopMoneyTitle