2025-02-20 22:12:41 +00:00
|
|
|
|
|
|
|
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 * 2, y = 2, z = x * 2 },
|
|
|
|
v2 = { x = y * 2, y = 0, z = x * 2 },
|
|
|
|
v1 = { x = y * 2 + 2, y = 0, z = x * 2 },
|
|
|
|
v0 = { x = y * 2 + 2, y = 2, z = x * 2 },
|
|
|
|
texture_region = { w = 128, h = 128 },
|
|
|
|
}
|
|
|
|
draw_quad {
|
|
|
|
texture = dungeon.grid[y][x].wall_texture,
|
|
|
|
v3 = { x = y * 2 + 2, y = 2, z = x * 2 },
|
|
|
|
v2 = { x = y * 2 + 2, y = 0, z = x * 2 },
|
|
|
|
v1 = { x = y * 2 + 2, y = 0, z = x * 2 + 2 },
|
|
|
|
v0 = { x = y * 2 + 2, y = 2, z = x * 2 + 2 },
|
|
|
|
texture_region = { w = 128, h = 128 },
|
|
|
|
}
|
|
|
|
draw_quad {
|
|
|
|
texture = dungeon.grid[y][x].wall_texture,
|
|
|
|
v3 = { x = y * 2 + 2, y = 2, z = x * 2 + 2 },
|
|
|
|
v2 = { x = y * 2 + 2, y = 0, z = x * 2 + 2 },
|
|
|
|
v1 = { x = y * 2, y = 0, z = x * 2 + 2 },
|
|
|
|
v0 = { x = y * 2, y = 2, z = x * 2 + 2 },
|
|
|
|
texture_region = { w = 128, h = 128 },
|
|
|
|
}
|
|
|
|
draw_quad {
|
|
|
|
texture = dungeon.grid[y][x].wall_texture,
|
|
|
|
v3 = { x = y * 2, y = 2, z = x * 2 + 2 },
|
|
|
|
v2 = { x = y * 2, y = 0, z = x * 2 + 2 },
|
|
|
|
v1 = { x = y * 2, y = 0, z = x * 2 },
|
|
|
|
v0 = { x = y * 2, y = 2, z = x * 2 },
|
|
|
|
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 * 2 + 2, y = 0, z = x * 2 },
|
|
|
|
v1 = { x = y * 2, y = 0, z = x * 2 },
|
|
|
|
v2 = { x = y * 2, y = 0, z = x * 2 + 2 },
|
|
|
|
v3 = { x = y * 2 + 2, y = 0, z = x * 2 + 2},
|
|
|
|
texture_region = { w = 128, h = 128 },
|
|
|
|
}
|
|
|
|
draw_quad {
|
|
|
|
texture = dungeon.grid[y][x].tile_texture,
|
|
|
|
v3 = { x = y * 2 + 2, y = 2, z = x * 2 },
|
|
|
|
v2 = { x = y * 2, y = 2, z = x * 2 },
|
|
|
|
v1 = { x = y * 2, y = 2, z = x * 2 + 2 },
|
|
|
|
v0 = { x = y * 2 + 2, y = 2, z = x * 2 + 2},
|
|
|
|
texture_region = { w = 128, h = 128 },
|
|
|
|
}
|
|
|
|
end
|
2025-02-20 23:00:00 +00:00
|
|
|
|
|
|
|
if dungeon.grid[y][x].face_texture ~= nil then
|
|
|
|
if dungeon.grid[y][x].face == "horizon" then
|
|
|
|
draw_quad {
|
|
|
|
texture = dungeon.grid[y][x].face_texture,
|
|
|
|
v3 = { x = y * 2, y = 2, z = x * 2 + 1 },
|
|
|
|
v2 = { x = y * 2, y = 0, z = x * 2 + 1 },
|
|
|
|
v1 = { x = y * 2 + 2, y = 0, z = x * 2 + 1 },
|
|
|
|
v0 = { x = y * 2 + 2, y = 2, z = x * 2 + 1 },
|
|
|
|
texture_region = { w = 64, h = 96 },
|
|
|
|
}
|
|
|
|
draw_quad {
|
|
|
|
texture = dungeon.grid[y][x].face_texture,
|
|
|
|
v3 = { x = y * 2 + 2, y = 2, z = x * 2 + 1 },
|
|
|
|
v2 = { x = y * 2 + 2, y = 0, z = x * 2 + 1 },
|
|
|
|
v1 = { x = y * 2, y = 0, z = x * 2 + 1 },
|
|
|
|
v0 = { x = y * 2, y = 2, z = x * 2 + 1 },
|
|
|
|
texture_region = { w = 64, h = 96 },
|
|
|
|
}
|
|
|
|
elseif dungeon.grid[y][x].face == "observer" then
|
|
|
|
draw_billboard {
|
|
|
|
texture = dungeon.grid[y][x].face_texture,
|
|
|
|
position = { x = y * 2 + 1, y = 1, z = x * 2 + 1 },
|
|
|
|
size = { x = 1, y = 1 },
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
2025-02-20 22:12:41 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|