Start position object.

This commit is contained in:
KikooDX 2021-01-13 14:23:07 +01:00
parent 144f9142f3
commit a310ffb5a6
3 changed files with 46 additions and 7 deletions

View File

@ -1,7 +1,9 @@
local function write_header()
io.write('#include <gint/display.h>\n')
io.write('#include "conf.h"\n')
io.write('#include "level.h"\n')
io.write('#include "tiles.h"\n')
io.write('#include "vec.h"\n')
end
local function load_level(level_id)
@ -21,6 +23,30 @@ local function write_layer(layer, level_id)
io.write("};\n")
end
local function count_tile_layers(level)
local count = 0
for _, layer in ipairs(level.layers) do
if layer.type == "tilelayer" then
count = count + 1
end
end
return count
end
local function find_start_pos(level)
for _, layer in ipairs(level.layers) do
if layer.type == "objectgroup" then
for _, object in ipairs(layer.objects) do
if object.visible and object.type == "start_pos" then
return { x = object.x / level.tilewidth,
y = object.y / level.tileheight }
end
end
end
end
return { x = 1, y = 1 }
end
local function write_level(level, level_id)
solid_layer = 1
bg_color = level.backgroundcolor or { 255, 255, 255 }
@ -32,17 +58,24 @@ local function write_level(level, level_id)
if layer.name == "solid" then
solid_layer = i
end
write_layer(layer, level_id)
if layer.type == "tilelayer" then
write_layer(layer, level_id)
end
end
io.write("const Tile *layers_", level_id, "[] = {")
for i, layer in ipairs(level.layers) do
io.write("tiles_", level_id, "_", layer.name, ",")
if layer.type == "tilelayer" then
io.write("tiles_", level_id, "_", layer.name, ",")
end
end
io.write("};\n")
-- create level struct
io.write("const Level level_", level_id, " = {\n")
io.write("\t.width = ", level.width, ",\n")
io.write("\t.height = ", level.height, ",\n")
local start_pos = find_start_pos(level)
io.write("\t.start_pos = { ", start_pos.x, " * TILE_SIZE, ",
start_pos.y, " * TILE_SIZE },\n")
io.write("\t#ifdef FXCG50\n")
io.write("\t.bg_color = C_RGB(", bg_color[1], ", ",
bg_color[2], ", ", bg_color[3], "),\n")
@ -50,7 +83,7 @@ local function write_level(level, level_id)
io.write("\t.bg_color = C_WHITE,\n")
io.write("\t#endif\n")
io.write("\t.layers = layers_", level_id, ",\n")
io.write("\t.layers_count = ", #level.layers, ",\n")
io.write("\t.layers_count = ", count_tile_layers(level), ",\n")
io.write("\t.solid_layer = ", solid_layer - 1, "\n")
io.write("};\n")
end

View File

@ -1,13 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="64" height="64" tilewidth="16" tileheight="16" infinite="0" backgroundcolor="#e246f0" nextlayerid="3" nextobjectid="1">
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="64" height="64" tilewidth="16" tileheight="16" infinite="0" backgroundcolor="#e246f0" nextlayerid="4" nextobjectid="4">
<editorsettings>
<export target="level_1.lua" format="lua"/>
</editorsettings>
<tileset firstgid="1" source="tileset.tsx"/>
<layer id="1" name="solid" width="64" height="64">
<properties>
<property name="solid" type="bool" value="true"/>
</properties>
<data encoding="csv">
227,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,227,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,227,
228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,
@ -75,4 +72,9 @@
227,227,227,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,227
</data>
</layer>
<objectgroup id="3" name="markers">
<object id="1" name="start_pos" type="start_pos" x="48" y="144">
<point/>
</object>
</objectgroup>
</map>

4
objecttypes.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<objecttypes>
<objecttype name="start_pos" color="#21a456"/>
</objecttypes>