This is a function "cheat sheet" for Apollo extension by YellowAfterlife.
+The extension can be acquired from GM:Marketplace or itch.io.
+For questions/support, use forums (itch.io, GM forums), or send me an email.
+A most up-to-date version of the manual is always available online.
+The extension is currently available for Windows, Linux, and Mac (experimental).
+ This also causes newly made states to have IDs start at 0 again.
+
+
lua_state_reuse_indexes()➜count
+ Here's the deal: As you might know, reusing indexes can cause some really mysterious bugs
+ if your code accidentally continues to use an index (which is now taken up by something else).
+
+ So, by default, Apollo will not do that. Which, in turn, means that after states are destroyed,
+ 4 bytes worth of data (which were onece the state's address) will continue to be reserved per state.
+
+ While it would take about 500 000 states to run out of memory this way,
+ you might prefer not to have that anyway.
+
+ So, calling this function will mark that memory as available again, causing Apollo to reuse the
+ destroyed indexes for newly created states. This will only affect indexes of states that are
+ destroyed as of calling the function.
+
+ In other words, while developing your project, you would not call this at all
+ (so that if you use a destroyed state, you get an obvious error), and for final release
+ version you would call it once in a while (such as during room transitions - to further
+ reduce the odds of anything going strange).
+
+ The function returns the number of indexes that will be reused as result.
+
+ Attempts to load and run a snippet of Lua code from the file at the given path.
+
+ The function mimics GMS' file handling rules, preferring files in game's save directory over the files in game's installation directory.
+
+ It will, however, also accept absolute paths, bypassing sandbox restrictions.
+
+ So, if you added an included file called "some.lua", you could then load it with
+
+lua_add_file(state,"some.lua");
+
If chdir is left at true, the function will automatically call lua_chdir when given a relative path so that the Lua code would work with files in that directory.
+
+ Returns the type of a state's global variable as a constant.
+
+ Possible values are as following:
+
lua_type_none: placeholder for type ID 0
+
lua_type_nil: an equivalent of GML's undefined. Not-yet-set values are nil.
+
lua_type_bool: a boolean value (true or false).
+
lua_type_number: a numeric type, same as GML's real.
+
lua_type_string: same as GML's string type.
+
lua_type_table: a Lua table (array or dictionary).
+
lua_type_function: a Lua function (that can be called via lua_call group).
+
lua_type_thread: a Lua "thread"/coroutine.
+
lua_type_userdata: an external reference (see Lua doc).
+
lua_type_lightuserdata: an external struct (see Lua doc).
+
lua_type_unknown: unrecognized type (never returns with normal Lua library)
+
+ If the state does not exist, an error is thrown.
+
+if(lua_global_type(state,"test")==lua_type_function){
+ lua_call(state,"test");
+}elseshow_debug_message("The state does not have a function called `test`!");
+
+ Returns the type of a state's global variable as a string.
+
+ Outside of debugging, you should prefer to use lua_global_type, as numeric comparisons are much faster than string comparisons.
+
+ The usual returned values are as following:
+
+
"nil": an equivalent of GML's undefined. Not-yet-set values are nil.
+
"boolean": a boolean value (true or false).
+
"number": a numeric type, same as GML's real.
+
"string": same as GML' string type.
+
"table": a Lua table. You currently can't do much with these from GML side.
+
"function": a Lua function - as such, a thing that could be called via lua_call.
+
"thread": a Lua "thread"/coroutine (more on these later).
+
+ So you could use a snippet like this to check if a state has a function named "test":
+
+if(lua_global_typeof(state,"test")=="function"){
+ lua_call(state,"test");
+}elseshow_debug_message("The state does not have a function called `test`!");
+
+ Like lua_call, but allows to pass in the arguments as an array.
+
+lua_add_code(state,"function add(a, b) return a + b end");
+varargs=array_create(2,7);// [7, 7]
+show_debug_message(lua_call_w(state,"add",args));// 14
+
+ A combination of lua_call_w and lua_call_xm - takes arguments as an array, writes results to another array, and returns the number of results written.
+
+ Same as aforementioned lua_return, but returns the contents of an array as a value list instead.
+ Note this will not work for nested arrays, however.
+
The last line with an empty lua_return_add is needed to return 0 values if loop matches no instances (as runtime would otherwise assume that you are going to return something with a regular return).
+
+ While Lua has a separate boolean type, GameMaker uses 1 as true-value and 0 as false-value.
+ This makes it hard to tell whether you were meaning to send 1 or true.
+
+ So there's this function, which returns either a lua_true or a lua_false depending on argument, which can be told apart by the extension explicitly, and will become the according Lua values once sent to Lua.
+
+ When a Lua state calls the exposed GML script, this variable holds the ID of the "caller" state. Can be used if you want to do anything aside of just returning value(s).
+
+ Sends an error message to the currently executing Lua state.
+
+ This should only be used inside scripts exposed via lua_add_function.
+
+/// scr_variable_global_get(name)
+if(is_string(argument0)){
+ returnvariable_global_get(argument0);
+}elselua_show_error("Expected a variable name to be a string.");
+
+ If you are using GameMaker Studio 2 or an Early Access version of GameMaker: Studio 1, you can have Lua directly read and write variables on GameMaker instances.
+
+ To do so, you would add three scripts to your project:
+
(exposes the above scripts to a Lua state and sets it up to use them when trying to read/write a field on a numeric value (id)).
+
+ Then you can use them as following:
+
+// create a Lua state:
+state=lua_state_create();
+// allow the state to work with GM instances:
+ref_variable_instance_init(state);
+// add a test function to the state -
+// function takes an instance and modifies it's `result` variable.
+lua_add_code(state,"function test(q) q.result = 'Hello!' end");
+// call the test-function for the current instance and display the result:
+result="";
+lua_call(state,"test",id);
+show_debug_message(result);
+
+ If you are building a medium-scale scripting API, you may find yourself needing to expose a large number of scripts (and/or built-in functions), as well as introducing argument type checking to prevent GML-side errors.
+
+ To save you from having to deal with that, Apollo includes a small utility that generates wrapper and loader scripts.
+
+ It accepts function definitions in funcname(arg1:type1, arg2:type2, ...):rtype,
+
+
arg1, arg2, ...: argument names. Will be shown in errors returned to Lua.
+
type1, type2, ...: argument types. Optional.
+ If defined, code will be added to ensure that each argument matches it's type.
+ Known types are real, bool, string;
+ color, int, index, id can also be used, but are treated same as real.
+
rtype: returned type, if the function returns a specific one.
+ If set to bool, return-statement will be wrapped in lua_bool call.
+
If prefixed with :, function will be marked as "instance function" and will accept an instance ID as first argument, also allowing to call it as inst.func(...) if instance access scripts are set up.
+
+ Constants can be defined either as name# (uses the value of same-named constant/variable) or name = value (computes the given GML value at inclusion time).
+
+ The tool is included with the extension as ApolloGen.exe;
+
+ A web-based version is available below:
+
Whenever the contents of above field are changed, updated loader script will be output into the field below:
+
You can then save them into a .gml file and import it to your project.
+
+
+ If you have pre-existing GML code that you'd like to quickly port for use with Apollo, I have also developed an online GML->Lua compiler.
+
+ While automatic conversion won't make extensive use of Lua-specific language features, it produces functional code in vast majority of cases and the output is clean enough to tweak it manually if needed.
+
+ A coroutine, in short, is a function that can pause/resume execution at arbitrary points. These can be used for iterators, cutscenes (pausing/resuming allows to write timing in an intuitive way), tweening, AI, or anything else that benefits from maintaining the state across multi-call execution.
+
+ Creates a "thread" state for the given Lua state and returns it's ID.
+
+ Such "threads" share the global context (variables, functions, etc.) with their parent state, but have their own clal stack, meaning that they can do their own thing (namely, executing coroutines) while the parent state does something else.
+
+ Does not free resources of the parent state, only what was owned by the thread itself.
+ Is a convenience function and is interchangeable with lua_state_destroy.
+
+ Starts a coroutine call on the given sate, returns whether the operation succeeded.
+
+ Note that some functions will work oddly (or not work at all) on a state that is currently amidst the coroutine call, which is why you should generally create a thread for the coroutine call.
+
+ Executes the next iteration on the given state and returns whether the coroutine call is ongoing (as opposed to finishing or encountering a runtime error).
+
+ The general scheme of performing coroutine calls is thus as following:
+
+ In case you'd like a custom version (such as to use LuaJIT, or to use a Lua fork with
+ different syntax), C++ source code is included - it will work with any Lua build
+ down to 5.1.
+
+ The extension runs on Windows, Mac, and Linux - linked dynamically in all cases.
+
+ Apollo v2 beta currently only comes with a Windows (GMS1,GMS2) binary,
+ but you can compile it yourself (code is portable).
+
+ Mac may require additional tinkering (via install_name_tool - example), as library inclusion paths may vary depending on whether the game is running from IDE, whether YYC is enabled, and GMS version. If you are familiar with Mac extension development yourself, feel free to get in touch about better ways of handling this.
+
+ While these are roughly equivalent to GM's ds_maps, the two work very differently -
+ ds_maps are passed by-index and managed manually (ds_map_destroy),
+ Lua' tables are passed by-reference and managed by garbage collector.
+
+ While future iterations on GML should make it possible to automatically convert between tables and lightweight data structures, this would only allow to return a new table/structure rather than modifying an existing one.
+
+ The issue can be approached in several ways:
+
+
Expose ds_maps to Lua code and use them instead of tables for transfer.
+
Have a wrapper function on Lua side to expand the table into multiple values prior to calling the GML script and/or wrap multiple returned values from GML back into a table.
+
If you do not need to read data from the table (but store/retrieve it), you can convert it to index and back on Lua side via lookup tables (see below).
+
+ Lua supports several additional reference types (such as Lua function references),
+ but these cannot be safely sent to GML as pointers as they are garbage-collected,
+ and thus may get recycled while still referenced on the GML side of things
+ (resulting in hard crash when trying to use the passed back value).
+
+ A good way to deal with this is to make a pair of lookup tables - since Lua allows table indexes to be of any type, you can do something like the following:
+
ref ={
+ __r2i ={},
+ __i2r ={},
+ __next =0
+}
+function ref.toid(fn)
+ local id = ref.__r2i[fn]
+ if(id ==nil)then
+ id = ref.__next
+ ref.__next = id +1
+ ref.__r2i[fn]= id
+ ref.__i2r[id]= fn
+ end
+ return id
+end
+function ref.fromid(id)
+ return ref.__i2r[id]
+end
+function ref.free(fn)
+ local id
+ if(type(fn)=="number")then
+ id = fn
+ fn = ref.__i2r[id]
+ else
+ id = ref.__r2i[fn]
+ end
+ ref.__r2i[fn]=nil
+ ref.__i2r[id]=nil
+end
Which allow you to use ref.toid(some_reference) to return/create a numeric ID for a reference, ref.fromid(index) to convert one of those back to a reference, and ref.free(index_or_reference) to remove the lookup pairs (allowing Lua to safely recycle the reference when it is no longer used).
+
+
+
+
+
diff --git a/datafiles/LuaLicense.txt b/datafiles/LuaLicense.txt
new file mode 100644
index 000000000..8ed741f40
--- /dev/null
+++ b/datafiles/LuaLicense.txt
@@ -0,0 +1,6 @@
+Copyright 19942017 Lua.org, PUC-Rio.
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/datafiles/data/themes/default.zip b/datafiles/data/themes/default.zip
index 5c21a26cff71d83a354620cf61be7461f5a08911..50642872eb53a075ffb6f7c0398de13676f40623 100644
GIT binary patch
delta 261815
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