summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2025-08-06 11:47:03 +0200
committerMitja Felicijan <mitja.felicijan@gmail.com>2025-08-06 11:47:03 +0200
commita007b4dd156ae1eae302cd43e22186caf854069b (patch)
tree2e8d95a2d93776ce555232bbc20b6a8dd644a6b3
parent116124155ce9a36b50c0b606154547fffe549e49 (diff)
downloadbidi-a007b4dd156ae1eae302cd43e22186caf854069b.tar.gz
Added JSON example via Lua script
-rw-r--r--main.c14
-rw-r--r--test/main.lua38
-rw-r--r--test/test.json4
3 files changed, 38 insertions, 18 deletions
diff --git a/main.c b/main.c
index 7515e57..82319d2 100644
--- a/main.c
+++ b/main.c
@@ -6,6 +6,7 @@
#include "lauxlib.h"
#include "stdlib/color.h"
+#include "stdlib/json.h"
#define IN_FILE "test/main.lua"
#define DEBUG_LEVEL LOG_DEBUG
@@ -86,6 +87,7 @@ int main(void) {
lua_State *L = luaL_newstate();
luaL_openlibs(L);
+ // Registring Raylib mappings.
lua_register(L, "open_window", l_open_window);
lua_register(L, "close_window", l_close_window);
lua_register(L, "window_running", l_window_running);
@@ -95,6 +97,7 @@ int main(void) {
lua_register(L, "draw_fps", l_draw_fps);
lua_register(L, "clear_window", l_clear_window);
+ // Embedding color module.
if (luaL_loadbuffer(L, color, color_len, "color") || lua_pcall(L, 0, 1, 0)) {
fprintf(stderr, "Error loading color.lua: %s\n", lua_tostring(L, -1));
lua_close(L);
@@ -102,8 +105,15 @@ int main(void) {
}
lua_setglobal(L, "color");
- // TODO: This should probably use loadbuffer instead.
- // https://www.lua.org/manual/5.4/manual.html#luaL_loadbuffer
+ // Embedding JSON module.
+ if (luaL_loadbuffer(L, json, json_len, "json") || lua_pcall(L, 0, 1, 0)) {
+ fprintf(stderr, "Error loading json.lua: %s\n", lua_tostring(L, -1));
+ lua_close(L);
+ return 1;
+ }
+ lua_setglobal(L, "json");
+
+ // Interpreting and running input file Lua script.
if (luaL_loadfile(L, IN_FILE) || lua_pcall(L, 0, 0, 0)) {
fprintf(stderr, "Error: %s\n", lua_tostring(L, -1));
return 1;
diff --git a/test/main.lua b/test/main.lua
index a8d87f3..0fc9be3 100644
--- a/test/main.lua
+++ b/test/main.lua
@@ -1,23 +1,29 @@
-for i = 0, 3 do
- print(string.format("Hi %d times", i))
-end
+function test_json()
+ local file = io.open("test/test.json", "r")
+ local content = file:read("*a")
+ file:close()
-local file = io.open("test/test.txt", "r")
-local content = file:read("*a")
-print(content)
-file:close()
+ local data = json.decode(content)
-open_window(600, 600, "My Game")
-set_fps(60)
+ print("name: " .. data.name)
+ for _, n in pairs(data.numbers) do
+ print(" - number: " .. n)
+ end
+end
-BLACK = { r = 0, g = 0, b = 0 }
+function test_graphics()
+ open_window(600, 600, "My Game")
+ set_fps(60)
-while window_running() do
- begin_drawing()
- clear_window(color.VIOLET)
+ while window_running() do
+ begin_drawing()
+ clear_window(color.RAYWHITE)
+ draw_fps()
+ end_drawing()
+ end
- draw_fps()
- end_drawing()
+ close_window()
end
-close_window()
+test_json()
+test_graphics()
diff --git a/test/test.json b/test/test.json
new file mode 100644
index 0000000..4bd3e38
--- /dev/null
+++ b/test/test.json
@@ -0,0 +1,4 @@
+{
+ "name": "Bob",
+ "numbers": [1, 3, 5, 2]
+}