PGRData/Script/matrix/xentity/xregression3rd/XRegression3rd.lua
2024-09-01 22:49:41 +02:00

129 lines
4.4 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local XRegression3rd = XClass(XDataEntityBase, "XRegression3rd")
local default = {
_Id = 0, --活动Id
_State = XRegression3rdConfigs.ActivityState.NotInRegression, --活动状态
_BeginTime = 0, --活动开始时间
_LastOnlineTime = 0, --最后上线时间
_ActivityEndTime = 0, --活动结束时间
_AutoRewardList = {}, --自动领取奖励
_SignViewModel = {}, --签到视图数据
_PassportViewModel = {}, --战令视图数据
_TaskVideModel = {}, --任务视图数据
_NewContents = {}, --新活动数据
}
function XRegression3rd:Ctor(activityId)
self:Init(default, activityId)
end
function XRegression3rd:InitData(activityId)
self:SetProperty("_Id", activityId)
local passportId = XRegression3rdConfigs.GetPassportActivityId(self._Id)
self._PassportViewModel = require("XEntity/XRegression3rd/XRegression3rdPassport").New(passportId)
self._SignViewModel = require("XEntity/XRegression3rd/XRegression3rdSign").New(self._Id)
self._TaskVideModel = require("XEntity/XRegression3rd/XRegression3rdTask").New(passportId)
end
--- 服务端数据更新
---@param notifyData Server.XRegression3ActivityData
---@return nil
--------------------------
function XRegression3rd:UpdateData(notifyData)
self:SetProperty("_State", notifyData.State)
self:SetProperty("_BeginTime", notifyData.BeginTime)
self:SetProperty("_LastOnlineTime", notifyData.LastLogoutTime)
self:SetProperty("_NewContents", XRegression3rdConfigs.GetNewContentList(self._LastOnlineTime))
self:SetEndTimeStamp()
end
function XRegression3rd:IsOpen()
return self._Id > 0 and self._State == XRegression3rdConfigs.ActivityState.InRegression and self:GetLeftTime() > 0
end
function XRegression3rd:IsEmptyNewContent()
return XTool.IsTableEmpty(self._NewContents)
end
function XRegression3rd:GetSignViewModel()
return self._SignViewModel
end
function XRegression3rd:GetPassportViewModel()
return self._PassportViewModel
end
function XRegression3rd:GetActivityOverViewList()
return XRegression3rdConfigs.GetActivityOverViewList(self._Id)
end
function XRegression3rd:GetShopId()
return XRegression3rdConfigs.GetShopId(self._Id)
end
function XRegression3rd:GetStoryId()
return XRegression3rdConfigs.GetStoryId(self._Id)
end
function XRegression3rd:GetHelpKey()
return XRegression3rdConfigs.GetHelpKey(self._Id)
end
function XRegression3rd:GetPackageUiType()
return XRegression3rdConfigs.GetPackageUiType(self._Id)
end
function XRegression3rd:GetActivityContent()
return self._NewContents
end
--- 检查页签功能是否开启
---@param activityType 活动类似
---@return boolean | string
--------------------------
function XRegression3rd:CheckOpenByActivityType(activityType)
if activityType == XRegression3rdConfigs.ActivityType.Activity then
return not self:IsEmptyNewContent(), XRegression3rdConfigs.GetClientConfigValue("ActivityNotOpenTips", 1)
elseif activityType == XRegression3rdConfigs.ActivityType.Shop then
local functionNameId = XFunctionManager.FunctionName.ShopCommon
return XFunctionManager.JudgeCanOpen(functionNameId), XFunctionManager.GetFunctionOpenCondition(functionNameId)
else
return true, ""
end
end
---@return "剩余时间xxx天"
function XRegression3rd:GetLeftTimeDesc(colorStr, format)
return XUiHelper.GetText("CommonActivityTimeStr", self:GetLeftTimeDescWithoutPrefix(colorStr, format))
end
---@return "xxx天"
function XRegression3rd:GetLeftTimeDescWithoutPrefix(colorStr, format)
format = format or XUiHelper.TimeFormatType.ACTIVITY
colorStr = colorStr or "0f70bc"
return string.format("<color=#%s>%s</color>", colorStr, XUiHelper.GetTime(self:GetLeftTime(), format))
end
--- 距离活动结束剩余时间
function XRegression3rd:GetLeftTime()
local timeOfNow = XTime.GetServerNowTimestamp()
local timeOfEnd = self._ActivityEndTime
if timeOfEnd == 0 then
self:SetEndTimeStamp()
timeOfEnd = self._ActivityEndTime
end
return math.max(0, timeOfEnd - timeOfNow)
end
function XRegression3rd:SetEndTimeStamp()
local days = XRegression3rdConfigs.GetContinueDays(self._Id)
local timeStamp = self._BeginTime + days * 24 * 60 * 60
self:SetProperty("_ActivityEndTime", XTime.GetTimeDayFreshTime(timeStamp))
end
function XRegression3rd:ClearAutoRewardList()
self._AutoRewardList = {}
end
return XRegression3rd