featuredefs.lua
来自「这是整套横扫千军3D版游戏的源码」· LUA 代码 · 共 129 行
LUA
129 行
-------------------------------------------------------------------------------------------------------------------------------------------------------------------- file: featuredefs.lua-- brief: featuredef parser-- author: Dave Rodgers---- Copyright (C) 2007.-- Licensed under the terms of the GNU GPL, v2 or later.------------------------------------------------------------------------------------------------------------------------------------------------------------------local featureDefs = {}local shared = {} -- shared amongst the lua featuredef enviromentslocal preProcFile = 'gamedata/featuredefs_pre.lua'local postProcFile = 'gamedata/featuredefs_post.lua'local TDF = TDFparser or VFS.Include('gamedata/parse_tdf.lua')local system = VFS.Include('gamedata/system.lua')-------------------------------------------------------------------------------------------------------------------------------------------------------------------- Run a pre-processing script if one exists--if (VFS.FileExists(preProcFile)) then Shared = shared -- make it global FeatureDefs = featureDefs -- make it global VFS.Include(preProcFile) FeatureDefs = nil Shared = nilend-------------------------------------------------------------------------------------------------------------------------------------------------------------------- Load the TDF featuredef files--local tdfFiles = {}do tdfFiles = VFS.DirList('features/all worlds/', '*.tdf') local corpses = VFS.DirList('features/corpses/', '*.tdf') for _, f in ipairs(corpses) do table.insert(tdfFiles, f) endendfor _, filename in ipairs(tdfFiles) do local fds, err = TDF.Parse(filename) if (fds == nil) then Spring.Echo('Error parsing ' .. filename .. ': ' .. err) else for name, fd in pairs(fds) do fd.filename = filename featureDefs[name] = fd end endend-------------------------------------------------------------------------------------------------------------------------------------------------------------------- Load the raw LUA format featuredef files-- (these will override the TDF versions)--local luaFiles = {}do luaFiles = VFS.DirList('features/all worlds/', '*.lua') local corpses = VFS.DirList('features/corpses/', '*.lua') for _, f in ipairs(corpses) do table.insert(luaFiles, f) endendfor _, filename in ipairs(luaFiles) do local fdEnv = {} fdEnv._G = fdEnv fdEnv.Shared = shared fdEnv.GetFilename = function() return filename end setmetatable(fdEnv, { __index = system }) local success, fds = pcall(VFS.Include, filename, fdEnv) if (not success) then Spring.Echo('Error parsing ' .. filename .. ': ' .. fd) elseif (fds == nil) then Spring.Echo('Missing return table from: ' .. filename) else for fdName, fd in pairs(fds) do if ((type(fdName) == 'string') and (type(fd) == 'table')) then fd.filename = filename featureDefs[fdName] = fd end end end end-------------------------------------------------------------------------------------------------------------------------------------------------------------------- Run a post-processing script if one exists--if (VFS.FileExists(postProcFile)) then Shared = shared -- make it global FeatureDefs = featureDefs -- make it global VFS.Include(postProcFile) FeatureDefs = nil Shared = nilend----------------------------------------------------------------------------------------------------------------------------------------------------------------return featureDefs----------------------------------------------------------------------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?