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

294 lines
No EOL
8.5 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.

---@class XTaikoMasterConfigs
XTaikoMasterConfigs = XTaikoMasterConfigs or {}
XTaikoMasterConfigs.MusicPlayerTextMovePauseInterval = 1
XTaikoMasterConfigs.MusicPlayerTextMoveSpeed = 70
XTaikoMasterConfigs.TeamId = 20
XTaikoMasterConfigs.TeamTypeId = 140
XTaikoMasterConfigs.Difficulty = {
Easy = 1,
Hard = 2
}
-- 排行榜默认困难,简单难度不排行
XTaikoMasterConfigs.DefaultRankDifficulty = XTaikoMasterConfigs.Difficulty.Hard
XTaikoMasterConfigs.SettingKey = {
Appear = 1,
Judge = 2
}
XTaikoMasterConfigs.Assess = {
None = "None",
A = "A",
S = "S",
SS = "SS",
SSS = "SSS"
}
XTaikoMasterConfigs.SongState = {
Lock = 1,
JustUnlock = 2, --刚解锁,还未浏览过
Browsed = 3 --已解锁,且浏览过
}
--region init
local ACTIVITY_TAB = "Share/Fuben/TaikoMaster/TaikoMasterActivity.tab"
local SCORE_TAB = "Share/Fuben/TaikoMaster/TaikoMasterScore.tab"
local SONG_TAB = "Share/Fuben/TaikoMaster/TaikoMasterSong.tab"
local SETTING_TAB = "Share/Fuben/TaikoMaster/TaikoMasterSetting.tab"
local ASSESS_TAB = "Client/Fuben/TaikoMaster/TaikoMasterAssess.tab"
local CHARACTER_TAB = "Share/Fuben/StageCharacterNpcId.tab"
local ActivityTab, ScoreTab, SongTab, SettingTab, AssessTab, CharacterTab
local function GetActivityTab()
if not ActivityTab then
ActivityTab = XTableManager.ReadByIntKey(ACTIVITY_TAB, XTable.XTableTaikoMasterActivity, "Id")
end
return ActivityTab
end
local function GetScoreTab()
if not ScoreTab then
ScoreTab = XTableManager.ReadByIntKey(SCORE_TAB, XTable.XTableTaikoMasterScore, "StageId")
end
return ScoreTab
end
local function GetSongTab()
if not SongTab then
SongTab = XTableManager.ReadByIntKey(SONG_TAB, XTable.XTableTaikoMasterSong, "SongId")
end
return SongTab
end
local function GetSettingTab()
if not SettingTab then
SettingTab = XTableManager.ReadByIntKey(SETTING_TAB, XTable.XTableTaikoMasterSetting, "Type")
end
return SettingTab
end
local function GetAssessTab()
if not AssessTab then
AssessTab = XTableManager.ReadByStringKey(ASSESS_TAB, XTable.XTableTaikoMasterAssess, "Assess")
end
return AssessTab
end
local function GetCharacterTab()
if not CharacterTab then
CharacterTab = XTableManager.ReadByIntKey(CHARACTER_TAB, XTable.XTableStageCharacterNpcId, "StageType")
end
return CharacterTab
end
function XTaikoMasterConfigs.Init()
end
local function GetActivityConfig(activityId)
local config = GetActivityTab()[activityId]
if not config then
XLog.Error(
"[XTaikoMasterConfigs] GetActivityConfig error:配置不存在Id:" ..
(activityId or "nil") .. " ,Path:" .. ACTIVITY_TAB
)
end
return config
end
local function GetSongConfig(songId)
return GetSongTab()[songId]
end
local function GetScoreConfig(stageId)
local config = GetScoreTab()[stageId]
if not config then
XLog.Error("[XTaikoMasterConfigs] GetScoreConfig error:配置不存在stageId:" .. stageId)
end
return config
end
--endregion
function XTaikoMasterConfigs.GetTimeLimitId(activityId)
return GetActivityConfig(activityId).TimeId
end
function XTaikoMasterConfigs.GetTaskTimeLimitId(activityId)
return GetActivityConfig(activityId).TaskTimeLimitId
end
function XTaikoMasterConfigs.GetTrainingStageId(activityId)
return GetActivityConfig(activityId).TeachStageId
end
function XTaikoMasterConfigs.GetSettingStageId(activityId)
return GetActivityConfig(activityId).SettingStageId
end
function XTaikoMasterConfigs.GetHelpId(activityId)
return GetActivityConfig(activityId).HelpId
end
function XTaikoMasterConfigs.GetSongArray(activityId)
return GetActivityConfig(activityId).SongId
end
function XTaikoMasterConfigs.GetDefaultBgm(activityId)
return GetActivityConfig(activityId).MusicId
end
function XTaikoMasterConfigs.GetSettingAppearScale()
return GetSettingTab()[XTaikoMasterConfigs.SettingKey.Appear].Offset
end
function XTaikoMasterConfigs.GetSettingJudgeScale()
return GetSettingTab()[XTaikoMasterConfigs.SettingKey.Judge].Offset
end
function XTaikoMasterConfigs.GetSongCoverImage(songId)
return GetSongTab()[songId].CoverImage
end
function XTaikoMasterConfigs.GetSongSettlementImage(songId)
return GetSongTab()[songId].SettlementImage
end
function XTaikoMasterConfigs.GetSongName(songId)
return GetSongTab()[songId].Title
end
function XTaikoMasterConfigs.GetSongMusicId(songId)
return GetSongTab()[songId].MusicId
end
function XTaikoMasterConfigs.GetSongDesc(songId)
local config = GetSongConfig(songId)
return config.Description1, config.Description2
end
function XTaikoMasterConfigs.GetActivityTimeId(activityId)
return GetActivityConfig(activityId).TimeId
end
function XTaikoMasterConfigs.GetStageId(songId, difficulty)
if difficulty == XTaikoMasterConfigs.Difficulty.Hard then
return GetSongConfig(songId).HardStageId
end
if difficulty == XTaikoMasterConfigs.Difficulty.Easy then
return GetSongConfig(songId).EasyStageId
end
return GetSongConfig(songId).EasyStageId
end
--按时解锁
function XTaikoMasterConfigs.GetSongTimeId(songId)
return GetSongConfig(songId).TimeId
end
local _StageId2SongId = false
function XTaikoMasterConfigs.GetSongIdByStageId(stageId)
if not _StageId2SongId then
_StageId2SongId = {}
for songId, config in pairs(GetSongTab()) do
_StageId2SongId[config.EasyStageId] = songId
_StageId2SongId[config.HardStageId] = songId
end
end
return _StageId2SongId[stageId]
end
function XTaikoMasterConfigs.GetDifficulty(stageId)
local songId = XTaikoMasterConfigs.GetSongIdByStageId(stageId)
local songConfig = GetSongConfig(songId)
if songConfig then
if songConfig.HardStageId == stageId then
return XTaikoMasterConfigs.Difficulty.Hard
end
if songConfig.EasyStageId == stageId then
return XTaikoMasterConfigs.Difficulty.Easy
end
end
return XTaikoMasterConfigs.Difficulty.Easy
end
function XTaikoMasterConfigs.GetDifficultyText(difficulty)
if difficulty == XTaikoMasterConfigs.Difficulty.Hard then
return XUiHelper.GetText("TaikoMasterDifficulty")
end
if difficulty == XTaikoMasterConfigs.Difficulty.Easy then
return XUiHelper.GetText("TaikoMasterEasy")
end
return XUiHelper.GetText("TaikoMasterEasy")
end
function XTaikoMasterConfigs.GetDifficultyTextByStageId(stageId)
local difficulty = XTaikoMasterConfigs.GetDifficulty(stageId)
return XTaikoMasterConfigs.GetDifficultyText(difficulty)
end
-- 评价A,S,SS,SSS...
function XTaikoMasterConfigs.GetAssess(stageId, score)
local config = GetScoreConfig(stageId)
if not config then
return XTaikoMasterConfigs.Assess.None
end
local assess = XTaikoMasterConfigs.Assess.None
for i = 1, #config.JudgeScore do
local s = config.JudgeScore[i]
if score >= s then
assess = config.JudgeName[i]
else
break
end
end
return assess
end
function XTaikoMasterConfigs.GetAssessImage(assess)
local config = GetAssessTab()[assess]
if not config then
return false
end
return config.Image
end
function XTaikoMasterConfigs.GetAssessImageByScore(stageId, score)
return XTaikoMasterConfigs.GetAssessImage(XTaikoMasterConfigs.GetAssess(stageId, score))
end
function XTaikoMasterConfigs.GetMaxScore(stageId)
return GetScoreConfig(stageId).ProgressScore
end
function XTaikoMasterConfigs.GetFullCombo(stageId)
return GetScoreConfig(stageId).Hit
end
function XTaikoMasterConfigs.GetPerfectCombo(stageId)
return GetScoreConfig(stageId).Perfect
end
function XTaikoMasterConfigs.GetActivityName(activityId)
return GetActivityConfig(activityId).Name
end
function XTaikoMasterConfigs.GetActivityBackground(activityId)
return GetActivityConfig(activityId).BannerBg
end
function XTaikoMasterConfigs.GetDefaultActivityId()
for i, v in pairs(GetActivityTab()) do
return i
end
return false
end
function XTaikoMasterConfigs.GetSaveKey(songId)
return "XTaikoMaster" .. XPlayer.Id .. songId
end
function XTaikoMasterConfigs.GetCharacterIdByNpcId(npcId)
local tab = GetCharacterTab()[XDataCenter.FubenManager.StageType.TaikoMaster]
if not tab then
return false
end
for i = 1, #tab.NpcId do
if tab.NpcId[i] == npcId then
return tab.CharacterId[i]
end
end
return false
end
function XTaikoMasterConfigs.GetAllStage()
return GetScoreTab()
end