From 39b96a5aef314234af0847d77fa6cd0ceeee95c3 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Fri, 8 Jan 2021 13:01:53 +0100 Subject: [PATCH] Tiled level editor support. --- .gitmodules | 3 ++ levels | 1 + levels/create_demo.lua | 19 ---------- levels/generate_c.lua | 85 ------------------------------------------ make_levels.sh | 3 +- src/main.c | 5 +-- 6 files changed, 7 insertions(+), 109 deletions(-) create mode 160000 levels delete mode 100755 levels/create_demo.lua delete mode 100755 levels/generate_c.lua diff --git a/.gitmodules b/.gitmodules index 091f4ab..aad5048 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "assets-fx"] path = assets-fx url = https://gitea.planet-casio.com/KikooDX/jtmm2-assets-fx +[submodule "levels"] + path = levels + url = https://gitea.planet-casio.com/KikooDX/jtmm2-levels diff --git a/levels b/levels new file mode 160000 index 0000000..2ca487d --- /dev/null +++ b/levels @@ -0,0 +1 @@ +Subproject commit 2ca487d1a0954668a17ba730f64088cf6caec6b0 diff --git a/levels/create_demo.lua b/levels/create_demo.lua deleted file mode 100755 index ebe906d..0000000 --- a/levels/create_demo.lua +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env luajit - -math.randomseed(os.time()) --set randomseed -local function create_random_level(width, height, layers) - io.write(width, "\n") - io.write(height, "\n") - for i = 1, layers, 1 do - for r = 1, width * height, 1 do - local var = math.ceil(math.random() * 4) * math.floor(math.random() * 1.5) - if var ~= 0 then var = var + math.floor(math.random() * 4) * 16 end - io.write(var, "\n") - end - if i ~= layers then - io.write("n\n") - end - end -end - -create_random_level(64, 64, 1) diff --git a/levels/generate_c.lua b/levels/generate_c.lua deleted file mode 100755 index 1835c6b..0000000 --- a/levels/generate_c.lua +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env luajit - -local function create_includes_c() - io.write[[#include "level.h" -#include "tiles.h" -]] -end - -local function read_level(id) - local file = io.open(id..".jtmm2") - if not file then - return nil - else - local content = {width = nil, height = nil, layers = {{}}} - local line_nb = 0 - local layer_nb = 1 - for line in file:lines() do - line_nb = line_nb + 1 - if line_nb < 3 then - if content.width then - content.height = tonumber(line) - else - content.width = tonumber(line) - end - else - if line == "n" then - layer_nb = layer_nb + 1 - table.insert(content.layers, {}) - else - table.insert(content.layers[layer_nb], line) - end - end - end - file:close() - return content - end -end - -local function create_structure_c(id) - local content = read_level(id) - if content then - -- layers - for i, layer in ipairs(content.layers) do - io.write("const Tile tiles_", id, "_", i, "[] = {\n\t") - for i, v in ipairs(layer) do - io.write(v, ", ") - if i % 14 == 0 and i ~= #layer then - io.write("\n\t") - end - end - io.write("\n};\n"); - end - -- array - io.write("const Tile *layers_", id, "[] = {") - for i = 1, #content.layers, 1 do - io.write("tiles_", id, "_", i, ", ") - end - io.write("};\n") - -- structure - io.write("const Level level_", id, " = {\n") - io.write("\t.width = ", content.width, ",\n") - io.write("\t.height = ", content.height, ",\n") - io.write("\t.layers = layers_", id, ",\n") - io.write("\t.layers_count = ", #content.layers, ",\n") - io.write("\t.solid_layer = 0\n") - io.write("};\n") - end -end - -local function create_function_c(max) - io.write("void level_set(const Level **level, uint level_id)\n") - io.write("{\n") - io.write("\tswitch(level_id)\n") - io.write("\t{\n") - io.write() - for i = 0, max, 1 do - io.write("\t\tcase ", i, ": ") - io.write("*level = &level_", i, "; break;\n") - end - io.write("\t}\n}\n") -end - -create_includes_c() -create_structure_c(0) -create_function_c(0) diff --git a/make_levels.sh b/make_levels.sh index 2977c58..2208bea 100755 --- a/make_levels.sh +++ b/make_levels.sh @@ -1,4 +1,3 @@ #!/bin/sh cd levels -./create_demo.lua > 0.jtmm2 -./generate_c.lua > ../src/gen_levels.c +lua build_levels.lua > ../src/gen_levels.c diff --git a/src/main.c b/src/main.c index 2413e7d..8c4ecab 100644 --- a/src/main.c +++ b/src/main.c @@ -20,7 +20,7 @@ int main(void) { init(); /* initialize gint */ /* main game loop */ - play_level(0); + play_level(1); /* return to menu */ return 1; @@ -29,7 +29,7 @@ int main(void) { int play_level(uint level_id) { /* create player */ Player player = { - //.pos = {TILE_SIZE, TILE_SIZE}, + .pos = {TILE_SIZE, TILE_SIZE}, .spd = {0, 0}, .hbox = {TILE_SIZE - 1, TILE_SIZE - 1}, .vbox = {7, 7}, @@ -37,7 +37,6 @@ int play_level(uint level_id) { .grace = 0, .jump_held = false }; - vec_cpy(&player.pos, (Vec){0, 0}); /* place the player at "0/0"*/ /* set level */ const Level *level;