PGRData/Script/matrix/xconfig/XTransfiniteConfigs.lua
2024-09-01 22:49:41 +02:00

505 lines
No EOL
13 KiB
Lua
Raw Permalink 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.

XTransfiniteConfigs = XTransfiniteConfigs or {}
local XTransfiniteConfigs = XTransfiniteConfigs
XTransfiniteConfigs.StageType = {
Normal = 1, --普通关
Reward = 2, --奖励关
Hidden = 3, --隐藏关
}
XTransfiniteConfigs.StageGroupType = {
Normal = 1,
Island = 2, --离群点
}
XTransfiniteConfigs.PeriodType = {
None = 0,
Activity = 1,
Fight = 2,
Result = 3,
}
XTransfiniteConfigs.StageStatus = {
Lock = 1,
Unlock = 2,
Passed = 3,
}
XTransfiniteConfigs.GiftTabIndex = {
Score = 1,
Challenge = 2,
}
XTransfiniteConfigs.RewardState = {
Lock = 1,
Active = 2,
Achieved = 3,
Finish = 4,
}
---@class _RewardType
---@field PointsReward number 积分奖励
---@field AchievementReward number 成就奖励
local _RewardType = enum({
PointsReward = 1,
AchievementReward = 2,
})
XTransfiniteConfigs.RewardType = _RewardType
---@class _TaskTypeEnum
---@field Normal number 初级任务
---@field Senior number 高级任务
local _TaskTypeEnum = enum({
Normal = 1, --初级任务
Senior = 2, --初级任务
})
XTransfiniteConfigs.TaskTypeEnum = _TaskTypeEnum
---@class RegionType
---@field Normal number 初级组Id
---@field Senior number 高级组Id
local _RegionTypeEnum = enum({
Normal = 1, --初级组Id
Senior = 2, --高级组Id
})
XTransfiniteConfigs.RegionType = _RegionTypeEnum
XTransfiniteConfigs.TeamId = 22
XTransfiniteConfigs.TeamTypeId = 160
---config:Activity,"Share/Fuben/Transfinite/TransfiniteActivity.tab",XTable.XTableTransfiniteActivity
---config:Island,"Share/Fuben/Transfinite/TransfiniteIsland.tab",XTable.XTableTransfiniteIsland
---config:Region,"Share/Fuben/Transfinite/TransfiniteRegion.tab",XTable.XTableTransfiniteRegion
---config:Rotate,"Share/Fuben/Transfinite/TransfiniteRotateGroup.tab",XTable.XTableTransfiniteRotateGroup
---config:Stage,"Share/Fuben/Transfinite/TransfiniteStage.tab",XTable.XTableTransfiniteStage
---config:StageGroup,"Share/Fuben/Transfinite/TransfiniteStageGroup.tab",XTable.XTableTransfiniteStageGroup
---config:Strengthen,"Share/Fuben/Transfinite/TransfiniteStrengthen.tab",XTable.XTableTransfiniteStrengthen
---config:Medal,"Client/Fuben/Transfinite/TransfiniteMedal.tab",XTable.XTableTransfiniteMedal
local Pairs = pairs
--region Activity
local _ConfigActivity
---@return XConfig
local function GetConfigActivity()
if not _ConfigActivity then
_ConfigActivity = XConfig.New("Share/Fuben/Transfinite/TransfiniteActivity.tab", XTable.XTableTransfiniteActivity, "Id")
end
return _ConfigActivity
end
local function GetActivity(id)
local config = GetConfigActivity()
return config:GetConfig(id)
end
function XTransfiniteConfigs.GetActivityTimeId(id)
return GetActivity(id).TimeId
end
function XTransfiniteConfigs.GetActivityCycleSeconds(id)
return GetActivity(id).CycleSeconds
end
function XTransfiniteConfigs.IsActivityValid(id)
local config = GetConfigActivity()
if config:TryGetConfig(id) then
return true
end
return false
end
--endregion Activity
--region Task
local _ConfigTask
local function GetConfigTask()
if not _ConfigTask then
_ConfigTask = XConfig.New("Share/Fuben/Transfinite/TransfiniteTaskGroup.tab", XTable.XTableTransfiniteTaskGroup, "Id")
end
return _ConfigTask
end
local function GetTask(id)
local config = GetConfigTask()
return config:GetConfig(id)
end
function XTransfiniteConfigs.GetTaskTaskIds(id)
return GetTask(id).TaskIds
end
--endregion Task
--region Island
local _ConfigIsland
local function GetConfigIsland()
if not _ConfigIsland then
_ConfigIsland = XConfig.New("Share/Fuben/Transfinite/TransfiniteIsland.tab", XTable.XTableTransfiniteIsland, "Id")
end
return _ConfigIsland
end
local function GetIsland(id)
local config = GetConfigIsland()
return config:GetConfig(id)
end
function XTransfiniteConfigs.GetIslandRegionId(id)
return GetIsland(id).RegionId
end
function XTransfiniteConfigs.GetIslandStageGroupId(id)
return GetIsland(id).StageGroupId
end
function XTransfiniteConfigs.GetIslandOrder(id)
return GetIsland(id).Order
end
--endregion Island
--region Region
---@type XConfig
local _ConfigRegion
local function GetConfigRegion()
if not _ConfigRegion then
_ConfigRegion = XConfig.New("Share/Fuben/Transfinite/TransfiniteRegion.tab", XTable.XTableTransfiniteRegion, "RegionId")
end
return _ConfigRegion
end
local function GetRegion(id)
local config = GetConfigRegion()
return config:GetConfig(id)
end
function XTransfiniteConfigs.GetRegionRegionName(id)
return GetRegion(id).RegionName
end
function XTransfiniteConfigs.GetRegionTimeId(id)
return GetRegion(id).TimeId
end
function XTransfiniteConfigs.GetRegionMinLv(id)
return GetRegion(id).MinLv
end
function XTransfiniteConfigs.GetRegionMaxLv(id)
return GetRegion(id).MaxLv
end
function XTransfiniteConfigs.GetRegionRotateGroupId(id)
return GetRegion(id).RotateGroupId
end
function XTransfiniteConfigs.GetRegionScoreRewardGroupId(id)
return GetRegion(id).ScoreRewardGroupId
end
function XTransfiniteConfigs.GetRegionChallengeTaskGroupId(id)
return GetRegion(id).TaskGroupId[1]
end
--function XTransfiniteConfigs.GetRegionScoreTaskGroupId(id)
-- return GetRegion(id).TaskGroupId[1]
--end
function XTransfiniteConfigs.GetRegionIslandId(id)
return GetRegion(id).IslandId
end
function XTransfiniteConfigs.GetRegionIconLv(id)
return GetRegion(id).IconLv
end
function XTransfiniteConfigs.GetAllRegion()
local configs = GetConfigRegion():GetConfigs()
local result = {}
for i = 1, #configs do
local config = configs[i]
result[#result + 1] = config.RegionId
end
return result
end
--endregion Region
--region Rotate
local _ConfigRotate
local function GetConfigRotate()
if not _ConfigRotate then
_ConfigRotate = XConfig.New("Share/Fuben/Transfinite/TransfiniteRotateGroup.tab", XTable.XTableTransfiniteRotateGroup, "RotateGroupId")
end
return _ConfigRotate
end
local function GetRotate(id)
local config = GetConfigRotate()
return config:GetConfig(id)
end
function XTransfiniteConfigs.GetRotateStageGroupId(id)
return GetRotate(id).StageGroupId
end
--endregion Rotate
--region Stage
---@type XConfig
local _ConfigStage
local function GetConfigStage()
if not _ConfigStage then
_ConfigStage = XConfig.New("Share/Fuben/Transfinite/TransfiniteStage.tab", XTable.XTableTransfiniteStage, "StageId")
end
return _ConfigStage
end
local function GetStage(id)
local config = GetConfigStage()
return config:GetConfig(id)
end
function XTransfiniteConfigs.IsStageExist(stageId)
local config = GetConfigStage()
if config:TryGetConfig(stageId) then
return true
end
return false
end
function XTransfiniteConfigs.GetAllStageConfig()
return GetConfigStage():GetConfigs()
end
function XTransfiniteConfigs.GetStageStageType(id)
return GetStage(id).StageType
end
function XTransfiniteConfigs.GetStageStageName(id)
return GetStage(id).StageName
end
function XTransfiniteConfigs.GetStageConditionId(id)
return GetStage(id).ConditionId
end
function XTransfiniteConfigs.GetStageStrengthenId(id)
return GetStage(id).StrengthenId
end
function XTransfiniteConfigs.GetStageImg(id)
return GetStage(id).Img
end
function XTransfiniteConfigs.GetStageScore(id)
return GetStage(id).Score
end
function XTransfiniteConfigs.GetStageExtraTimeLimit(id)
return GetStage(id).ExtraTimeLimit
end
function XTransfiniteConfigs.GetStageExtraScore(id)
return GetStage(id).ExtraScore
end
function XTransfiniteConfigs.GetStageExtraDec(id)
return GetStage(id).ExtraDec
end
function XTransfiniteConfigs.GetStageBossModel(id)
return GetStage(id).Model
end
--endregion Stage
--region StageGroup
local _ConfigStageGroup
local function GetConfigStageGroup()
if not _ConfigStageGroup then
_ConfigStageGroup = XConfig.New("Share/Fuben/Transfinite/TransfiniteStageGroup.tab", XTable.XTableTransfiniteStageGroup, "StageGroupId")
end
return _ConfigStageGroup
end
local function GetStageGroup(id)
local config = GetConfigStageGroup()
return config:GetConfig(id)
end
function XTransfiniteConfigs.GetStageGroupStageId(id)
return GetStageGroup(id).StageId
end
function XTransfiniteConfigs.GetStageGroupStrengthenId(id)
return GetStageGroup(id).StrengthenId
end
function XTransfiniteConfigs.GetStageGroupName(id)
return GetStageGroup(id).Name
end
function XTransfiniteConfigs.GetStageGroupImg(id)
return GetStageGroup(id).Img
end
function XTransfiniteConfigs.GetStageGroupType(id)
return GetStageGroup(id).Type
end
--endregion StageGroup
--region Strengthen
local _ConfigStrengthen
local function GetConfigStrengthen()
if not _ConfigStrengthen then
_ConfigStrengthen = XConfig.New("Share/Fuben/Transfinite/TransfiniteStrengthen.tab", XTable.XTableTransfiniteStrengthen, "StrengthenId")
end
return _ConfigStrengthen
end
local function GetStrengthen(id)
local config = GetConfigStrengthen()
return config:GetConfig(id)
end
function XTransfiniteConfigs.GetStrengthenTitle(id)
return GetStrengthen(id).Title
end
function XTransfiniteConfigs.GetStrengthenDes(id)
return GetStrengthen(id).Des
end
function XTransfiniteConfigs.GetStrengthenImg(id)
return GetStrengthen(id).Img
end
--endregion Strengthen
--region Medal
local _ConfigMedal
local function GetConfigMedal()
if not _ConfigMedal then
_ConfigMedal = XConfig.New("Client/Fuben/Transfinite/TransfiniteMedal.tab", XTable.XTableTransfiniteMedal, "Id")
end
return _ConfigMedal
end
local function GetMedal(id)
local config = GetConfigMedal()
return config:GetConfig(id)
end
function XTransfiniteConfigs.GetMedalTime(id)
return GetMedal(id).Time
end
function XTransfiniteConfigs.GetMedalIcon(id)
return GetMedal(id).Icon
end
function XTransfiniteConfigs.GetMedalName(id)
return GetMedal(id).Name
end
function XTransfiniteConfigs.GetMedalDesc(id)
return GetMedal(id).Desc
end
function XTransfiniteConfigs.GetMedalIdByTime(time)
local configs = GetConfigMedal():GetConfigs()
local timeMedal = math.huge
local medalId
for id, config in pairs(configs) do
local timeConfig = config.Time
if timeConfig == 0 then
timeConfig = math.huge
end
if time < timeConfig and timeConfig < timeMedal then
timeMedal = timeConfig
medalId = id
end
end
if medalId then
return medalId
end
-- time = 0表示超出时间
for id, config in pairs(configs) do
if config.Time == 0 then
return config.Id
end
end
-- 任意取一个配置
for id, config in pairs(configs) do
return config.Id
end
return 1
end
--endregion Medal
--region Achievement
local _AchievementDic = nil
local function GetAchievementDic()
if not _AchievementDic then
local achievementCfgs = XTableManager.ReadByIntKey("Share/Fuben/Transfinite/TransfiniteAchievement.tab", XTable.XTableTransfiniteAchievement, "Id")
_AchievementDic = {}
for id, config in Pairs(achievementCfgs) do
local stageGroupIds = config.StageGroupId
for i, stageGroupId in Pairs(stageGroupIds) do
_AchievementDic[stageGroupId] = _AchievementDic[stageGroupId] or {}
_AchievementDic[stageGroupId][id] = config
end
end
end
return _AchievementDic
end
---@param id number
---@alias XTransfiniteAchievementConfig { Id:number, Type:number, StageGroupId:number[] }
---@return table<number, XTransfiniteAchievementConfig>
function XTransfiniteConfigs.GetAchievementListByStageGroupId(id)
local achievementDic = GetAchievementDic()
return achievementDic[id]
end
--endregion
--region ScoreReward
local _ConfigScoreRewardGroup
local function GetConfigScoreRewardGroup()
if not _ConfigScoreRewardGroup then
_ConfigScoreRewardGroup = XConfig.New("Share/Fuben/Transfinite/TransfiniteScoreRewardGroup.tab", XTable.XTableTransfiniteScoreRewardGroup, "Id")
end
return _ConfigScoreRewardGroup
end
function XTransfiniteConfigs.GetScoreArray(regionId)
local rewardGroupId = XTransfiniteConfigs.GetRegionScoreRewardGroupId(regionId)
local config = GetConfigScoreRewardGroup():GetConfig(rewardGroupId)
return config.Score, config.RewardId
end
function XTransfiniteConfigs.GetScoreReward(regionId, score)
local rewardGroupId = XTransfiniteConfigs.GetRegionScoreRewardGroupId(regionId)
local config = GetConfigScoreRewardGroup():GetConfig(rewardGroupId)
if not config then
return 0
end
local scoreArray = config.Score
local index = 1
for i = 1, #scoreArray do
if score < scoreArray[i] then
break
end
index = index + 1
end
local rewardIdArray = config.RewardId
return rewardIdArray[index] or 0
end
--endregion