Tiled level editor support.

This commit is contained in:
KikooDX 2021-01-08 13:01:53 +01:00
parent ffc2b2d594
commit 39b96a5aef
6 changed files with 7 additions and 109 deletions

3
.gitmodules vendored
View File

@ -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

1
levels Submodule

@ -0,0 +1 @@
Subproject commit 2ca487d1a0954668a17ba730f64088cf6caec6b0

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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;