local propertyTable = { ModeTypeID = 1,PreliminaryNum = 2,PreliminaryTime = 3,FinalTime = 4,PreliminaryQuestionNum = 5,FinalQuestionNum = 6,PreliminaryQuestionTime = 7,FinalJoinTime = 8,FinalCountdown = 9,FinalQuestionTime = 10,FinalWeedOutTime = 11,BetMaxNum = 12,PreliminaryBank = 13,FinalBank = 14,ExtraBank = 15,PreliminaryQuestionCredit = 16,FinalScene = 17,FinalReversalMaxNum = 18,FinalReversalProbability = 19,FinalReversalForbidNum = 20,ExtraReversalMaxNum = 21,ExtraReversalProbability = 22,PreliminaryMaxNum = 23,ExtraMaxCircleNum = 24, } local mainPropertyTable = { ModeTypeID = 1,PageIndex = 2,LineIndex = 3, } local primaryTable = { "ModeTypeID", } local DataPageEntry = {} local rawget = rawget local base = { __index = function(t, k) local propertyIndex = propertyTable[k] if propertyIndex then local mainPropertyIndex = mainPropertyTable[k] if mainPropertyIndex then return t[mainPropertyIndex] end local pageIndex = t[2] local pageData = DataPageEntry[pageIndex] if pageData == nil then pageData = require('Data/SceneQuizData-page'..pageIndex) if DataSheetUtil then --skip fixedpoint process for data sheet checker DataSheetUtil.ProcessFixedPoint('SceneQuizData', pageData) end DataPageEntry[pageIndex] = pageData end local lineIndex = t[3] local resultData = pageData[lineIndex] return resultData[propertyIndex] end end, __newindex = function() error('Attempt to modify read-only table') end } local dataTable = { setmetatable({1,1,1},base), } return { dataTable = dataTable, propertyTable = propertyTable, primaryTable = primaryTable, }