Scripting API
From FreeSpace Wiki
The FS2_Open scripting API is intended to be as cross-platform and as language non-specific as possible. However, it is generally assumed that the most popular language will be Lua.
Contents
Code Description
Part One: Basic API and Scripting Hooks
Things To Know
- script_system
- This object abstracts a scripting session. It is generally used to allow for easy construction/destruction of whatever is necessary to initialize scripting system objects, and make sure that the right language session data is passed. Its constructor takes one argument, the name of the scripting session (for easy debugging)
- script_system->CreateLuaSession(libraries)
- Initializes a Lua session. Until this is called, you will not be able to use Lua at all and fs2_open should ignore code chunks that use it.
- script_system->ParseChunk(debugname)
- Parses a 'code chunk'. These are snippets of code encapsulated by symbols such as square brackets or parentheses. It stores a handle to the parsed script in memory (Probably bytecode).
- script_system->RunBytecode(handle)
- Actually executes a code chunk that has been parsed with ParseChunk
Example
This snippet of code (using FS2_Open functions) will parse a file that has scripting after each "$Global:" variable identifier. After all the scripting has been parsed, it will evaluate every hook, once.
script_system Script_system; std::vector<script_hook> Script_globalhooks; //Initialize Lua Script_system.CreateLuaState(Lua_libraries); //Parse file read_file_text("scripting.tbl"); reset_parse(); while(optional_string("$Global:")) { Script_globalhooks.push_back(st->ParseChunk()); } //Execute hooks for(uint i = 0; i < Script_globalhooks.size(); i++) { Script_system.RunBytecode(Script_globalhooks[i]); }