/apps/demos/crawl: cleanup, document
This commit is contained in:
@@ -1,56 +1,57 @@
|
||||
|
||||
-- if this is too wasteful, one could check nerby tiles to see whether faces could be visible
|
||||
-- more robust solution would be to travel the level from observer point of view
|
||||
function render_dungeon(dungeon)
|
||||
for y = 1, dungeon.size.y do
|
||||
for x = 1, dungeon.size.x do
|
||||
if dungeon.grid[y][x].wall_texture ~= nil then
|
||||
draw_quad {
|
||||
texture = dungeon.grid[y][x].wall_texture,
|
||||
v3 = { x = y, y = 1, z = x },
|
||||
v2 = { x = y, y = 0, z = x },
|
||||
v1 = { x = y + 1, y = 0, z = x },
|
||||
v0 = { x = y + 1, y = 1, z = x },
|
||||
v3 = { x = x, y = 1, z = y },
|
||||
v2 = { x = x, y = 0, z = y },
|
||||
v1 = { x = x + 1, y = 0, z = y },
|
||||
v0 = { x = x + 1, y = 1, z = y },
|
||||
texture_region = { w = 128, h = 128 },
|
||||
}
|
||||
draw_quad {
|
||||
texture = dungeon.grid[y][x].wall_texture,
|
||||
v3 = { x = y + 1, y = 1, z = x },
|
||||
v2 = { x = y + 1, y = 0, z = x },
|
||||
v1 = { x = y + 1, y = 0, z = x + 1 },
|
||||
v0 = { x = y + 1, y = 1, z = x + 1 },
|
||||
v3 = { x = x + 1, y = 1, z = y },
|
||||
v2 = { x = x + 1, y = 0, z = y },
|
||||
v1 = { x = x + 1, y = 0, z = y + 1 },
|
||||
v0 = { x = x + 1, y = 1, z = y + 1 },
|
||||
texture_region = { w = 128, h = 128 },
|
||||
}
|
||||
draw_quad {
|
||||
texture = dungeon.grid[y][x].wall_texture,
|
||||
v3 = { x = y + 1, y = 1, z = x + 1 },
|
||||
v2 = { x = y + 1, y = 0, z = x + 1 },
|
||||
v1 = { x = y, y = 0, z = x + 1 },
|
||||
v0 = { x = y, y = 1, z = x + 1 },
|
||||
v3 = { x = x + 1, y = 1, z = y + 1 },
|
||||
v2 = { x = x + 1, y = 0, z = y + 1 },
|
||||
v1 = { x = x, y = 0, z = y + 1 },
|
||||
v0 = { x = x, y = 1, z = y + 1 },
|
||||
texture_region = { w = 128, h = 128 },
|
||||
}
|
||||
draw_quad {
|
||||
texture = dungeon.grid[y][x].wall_texture,
|
||||
v3 = { x = y, y = 1, z = x + 1 },
|
||||
v2 = { x = y, y = 0, z = x + 1 },
|
||||
v1 = { x = y, y = 0, z = x },
|
||||
v0 = { x = y, y = 1, z = x },
|
||||
v3 = { x = x, y = 1, z = y + 1 },
|
||||
v2 = { x = x, y = 0, z = y + 1 },
|
||||
v1 = { x = x, y = 0, z = y },
|
||||
v0 = { x = x, y = 1, z = y },
|
||||
texture_region = { w = 128, h = 128 },
|
||||
}
|
||||
|
||||
elseif dungeon.grid[y][x].tile_texture ~= nil then
|
||||
draw_quad {
|
||||
texture = dungeon.grid[y][x].tile_texture,
|
||||
v0 = { x = y + 1, y = 0, z = x },
|
||||
v1 = { x = y, y = 0, z = x },
|
||||
v2 = { x = y, y = 0, z = x + 1 },
|
||||
v3 = { x = y + 1, y = 0, z = x + 1},
|
||||
v0 = { x = x + 1, y = 0, z = y },
|
||||
v1 = { x = x, y = 0, z = y },
|
||||
v2 = { x = x, y = 0, z = y + 1 },
|
||||
v3 = { x = x + 1, y = 0, z = y + 1},
|
||||
texture_region = { w = 128, h = 128 },
|
||||
}
|
||||
draw_quad {
|
||||
texture = dungeon.grid[y][x].tile_texture,
|
||||
v3 = { x = y + 1, y = 1, z = x },
|
||||
v2 = { x = y, y = 1, z = x },
|
||||
v1 = { x = y, y = 1, z = x + 1 },
|
||||
v0 = { x = y + 1, y = 1, z = x + 1},
|
||||
v3 = { x = x + 1, y = 1, z = y },
|
||||
v2 = { x = x, y = 1, z = y },
|
||||
v1 = { x = x, y = 1, z = y + 1 },
|
||||
v0 = { x = x + 1, y = 1, z = y + 1},
|
||||
texture_region = { w = 128, h = 128 },
|
||||
}
|
||||
end
|
||||
@@ -59,24 +60,25 @@ function render_dungeon(dungeon)
|
||||
if dungeon.grid[y][x].face == "horizon" then
|
||||
draw_quad {
|
||||
texture = dungeon.grid[y][x].face_texture,
|
||||
v3 = { x = y, y = 1, z = x + 1 },
|
||||
v2 = { x = y, y = 0, z = x + 1 },
|
||||
v1 = { x = y + 1, y = 0, z = x + 1 },
|
||||
v0 = { x = y + 1, y = 1, z = x + 1 },
|
||||
texture_region = { w = 64, h = 96 },
|
||||
v3 = { x = x + 1, y = 1, z = y },
|
||||
v2 = { x = x + 1, y = 0, z = y },
|
||||
v1 = { x = x + 1, y = 0, z = y + 1 },
|
||||
v0 = { x = x + 1, y = 1, z = y + 1 },
|
||||
texture_region = { w = 64, h = 64 },
|
||||
}
|
||||
draw_quad {
|
||||
texture = dungeon.grid[y][x].face_texture,
|
||||
v3 = { x = y + 1, y = 1, z = x + 1 },
|
||||
v2 = { x = y + 1, y = 0, z = x + 1 },
|
||||
v1 = { x = y, y = 0, z = x + 1 },
|
||||
v0 = { x = y, y = 1, z = x + 1 },
|
||||
texture_region = { w = 64, h = 96 },
|
||||
v3 = { x = x, y = 1, z = y + 1 },
|
||||
v2 = { x = x, y = 0, z = y + 1 },
|
||||
v1 = { x = x, y = 0, z = y },
|
||||
v0 = { x = x, y = 1, z = y },
|
||||
texture_region = { w = 64, h = 64 },
|
||||
}
|
||||
|
||||
elseif dungeon.grid[y][x].face == "observer" then
|
||||
draw_billboard {
|
||||
texture = dungeon.grid[y][x].face_texture,
|
||||
position = { x = y + 0.5, y = 0.5, z = x + 0.5 },
|
||||
position = { x = x + 0.5, y = 0.5, z = y + 0.5 },
|
||||
size = { x = 0.5, y = 0.5 },
|
||||
}
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user