local propertyTable = { ID = 1,PerspectiveType = 2,CameraType = 3,MoveType = 4,DisMin = 5,DisMax = 6,DisInit = 7,BornAngle = 8,DisSpeed = 9,CRXMin = 10,CRXMax = 11,AngleMax = 12,PredictCallID = 13,CatapultAimEffect = 14,BallistaAimImage = 15,ExtraUIType = 16,IsAttackHideExtraUI = 17,SelectFeatureID = 18,AimRadius = 19,IndicatorFeatureID = 20,RandomAngle1 = 21,RandomAngle2 = 22,FireMissileNeedY = 23,CameraPos = 24,CameraRotate = 25,DistanceModelUI = 26,ReverseSpeed = 27,CameraID = 28,IsAntiShake = 29,CameraRotateMode = 30, } local mainPropertyTable = { ID = 1,PageIndex = 2,LineIndex = 3, } local primaryTable = { "ID", } 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/DriveData-page'..pageIndex) if DataSheetUtil then --skip fixedpoint process for data sheet checker DataSheetUtil.ProcessFixedPoint('DriveData', 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), setmetatable({2,1,2},base), setmetatable({3,1,3},base), setmetatable({4,1,4},base), setmetatable({5,1,5},base), setmetatable({6,1,6},base), setmetatable({10,1,7},base), setmetatable({11,1,8},base), setmetatable({101,1,9},base), setmetatable({102,1,10},base), setmetatable({131,1,11},base), setmetatable({201,1,12},base), setmetatable({202,1,13},base), setmetatable({203,1,14},base), setmetatable({204,1,15},base), setmetatable({205,1,16},base), setmetatable({206,1,17},base), setmetatable({211,1,18},base), setmetatable({212,1,19},base), setmetatable({251,1,20},base), setmetatable({252,1,21},base), setmetatable({253,1,22},base), setmetatable({254,1,23},base), setmetatable({255,1,24},base), setmetatable({256,1,25},base), setmetatable({257,1,26},base), setmetatable({10000,1,27},base), setmetatable({503101,1,28},base), setmetatable({503102,1,29},base), setmetatable({53057301,1,30},base), setmetatable({622011,1,31},base), setmetatable({622022,1,32},base), setmetatable({622023,1,33},base), setmetatable({622026,1,34},base), setmetatable({622061,1,35},base), } return { dataTable = dataTable, propertyTable = propertyTable, primaryTable = primaryTable, }