Changeset 6662 for code/branches/gamestates2/data/lua
- Timestamp:
- Mar 31, 2010, 1:05:28 AM (15 years ago)
- Location:
- code/branches/gamestates2
- Files:
-
- 2 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
code/branches/gamestates2
- Property svn:mergeinfo changed
/code/branches/gamestate merged: 6621-6630,6655-6661
- Property svn:mergeinfo changed
-
code/branches/gamestates2/data/lua/LuaStateInit.lua
r6536 r6662 1 1 -- Note: luaState is a pointer to the LuaState instance that created this lua state 2 2 3 -- Save original print function in debug4 debug = print5 6 3 -- Redirect print to the C++ print function 4 original_print = print 7 5 print = function(s) 8 6 luaState:luaPrint(s) … … 13 11 luaState:luaLog(level, message) 14 12 end 13 cout = logMessage 15 14 16 15 -- Redirect dofile in order to load with the resource manager 17 doFile = function(filename) 16 original_dofile = dofile 17 dofile = function(filename) 18 18 luaState:doFile(filename) 19 -- Required because the C++ function cannot return whatever might be on the stack19 -- Required because if the file returns a table, it cannot be passed through the C++ function 20 20 return LuaStateReturnValue -- C-injected global variable 21 21 end 22 original_dofile = dofile 23 dofile = doFile 22 doFile = dofile 24 23 25 24 -- Create includeFile function that preparses the file according … … 27 26 include = function(filename) 28 27 luaState:includeFile(filename) 29 -- Required because the C++ function cannot return whatever might be on the stack28 -- Required because if the file returns a table, it cannot be passed through the C++ function 30 29 return LuaStateReturnValue -- C-injected global variable 31 30 end … … 34 33 -- The loaded modules are then stored with their names (where name has no .lua extension) 35 34 -- Furthermore the ".lua" extension is appended to the moduleName parameter when looking for the file 36 old_require = require 35 original_require = require 36 _REQUIREDNAME = "" 37 LuaStateReturnValue = true 37 38 require = function(moduleName) 38 39 if not luaState:fileExists(moduleName .. ".lua") then 40 logMessage(2, "Warning: Lua function require() could not find file '" .. moduleName .. ".lua' ") 39 41 return nil 40 42 end … … 42 44 _LOADED = {} 43 45 end 44 if not _LOADED[moduleName]then46 if _LOADED[moduleName] == nil then 45 47 -- save old value 46 _REQUIREDNAME_OLD = _REQUIREDNAME48 local _REQUIREDNAME_OLD = _REQUIREDNAME 47 49 _REQUIREDNAME = moduleName 48 50 luaState:doFile(moduleName .. ".lua") 49 _LOADED[moduleName] = LuaStateReturnValue or true 51 -- LuaStateReturnValue is required because if the file returns a table, 52 -- it cannot be passed through the C++ function 53 if LuaStateReturnValue == nil then -- C-injected global variable 54 LuaStateReturnValue = true 55 end 56 _LOADED[moduleName] = LuaStateReturnValue -- This entry must never be nil 50 57 -- restore old value 51 58 _REQUIREDNAME = _REQUIREDNAME_OLD … … 53 60 return _LOADED[moduleName] 54 61 end 62 63 64 -- Include command line debugger for lua 5.1 65 -- Note: It doesn't work if the IOConsole was started. Then we replace pause() with a warning 66 if _VERSION ~= "Lua 5.0" and not luaState:usingIOConsole() then 67 require("Debugger") 68 else 69 -- Fallback pause function 70 pause = function() 71 logMessage(2, [["Warning: debug() called in Lua, but Debugger is not active. 72 Do you have the IOConsole disabled and are you using Lua version 5.1?"]]) 73 end 74 end 75 76 -- General error handler that gets called whenever an error happens at runtime 77 errorHandler = function(err) 78 -- Display the error message 79 if type(err) == "string" then 80 logMessage(1, "Lua runtime error: "..err) 81 end 82 83 -- Start debugger if possible 84 if _LOADED and _LOADED["Debugger"] ~= nil then 85 pause() 86 else 87 -- Fallback: print stack trace 88 logMessage(1, debug.traceback(2)) 89 end 90 return err -- Hello Lua debugger user! Please type 'set 2' to get to the 91 -- actual position in the stack where the error occurred 92 end 93 55 94 56 95 -- Convenience function for console commands
Note: See TracChangeset
for help on using the changeset viewer.