[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: RE: Cleaning up specific lua scripts
- From: "Ricky Haggett" <ricky@...>
- Date: Wed, 24 Mar 2010 12:06:14 -0000
How would I go about loading the level script into a table?
I support both compiled and uncompiled lua, so I load my levels with:
error = luaL_loadbuffer(lua, buffer, length, filename);
lua_pcall (lua, 0, 0, 0);
.. if they're compiled or:
error = luaL_dostring(lua, scriptString);
if they're uncompiled...
Also, if I used setfenv to change the environment, aren't I just moving the
problem? If I then have to add global functions to this same table, how will
I differentiate them from the level functions when I need to clean up?
I am thinking maybe my solution is going to be (shallow) copying _G before
loading a level, then comparing the copy with _G after the level load. Any
objects which don't exist in the copy, but do exist in _G should be the
[mailto:firstname.lastname@example.org] On Behalf Of Enrico Colombini
Sent: 24 March 2010 11:47
To: Lua list
Subject: Re: Cleaning up specific lua scripts
Ricky Haggett wrote:
> Yep, we could store a table of all of the functions / tables within a
> specific level script, but it would be awkward for the designers to
> maintain, and a potential source of error...
You could load the level into a table, use setfenv to have level
functions see this table as 'global', and add true global functions to
the table when you load a level.