Start position object.
This commit is contained in:
parent
144f9142f3
commit
a310ffb5a6
|
@ -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
|
||||
|
|
10
level_1.tmx
10
level_1.tmx
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<objecttypes>
|
||||
<objecttype name="start_pos" color="#21a456"/>
|
||||
</objecttypes>
|
Loading…
Reference in New Issue