a_pleasant_stroll/main.lua

109 lines
2.3 KiB
Lua

function _init()
init_data()
init_sound()
init_mapgen()
init_player(32, 32)
generate_map(0, 0)
init_debug()
end
function _update()
handle_input()
handle_map_update()
end
function _draw()
rectfill(0, 0, 127, 127, 0)
-- the screen is 128x128 pixels, so it fits 16x16 sprites
map(camera_pos_x, camera_pos_y, 0, 0, 16, 16)
draw_player()
debug_print()
end
-- decide whether we need to regenerate the map.
-- if so, call generate_map appropriately and reset coordinates.
function handle_map_update()
if out_of_bounds(camera_pos_x, camera_pos_y) then
-- out_of_bounds() checks all screen bounds
-- we need to regenerate the map, so we generate a map chunk that
-- places the player in the middle of it.
generate_map(player_pos_x-32, player_pos_y-32)
camera_pos_x, camera_pos_y = 24, 24
end
end
function out_of_bounds(pos_x, pos_y)
return pos_x < 0 or pos_x > 48 or
pos_y < 0 or pos_y > 48
end
-- debug functions toggle debug status displays along the
-- top of the screen
function init_debug()
debug_res = false
debug_map = false
debug_sfx = false
debug_mod_buffer = false
end
function debug_t(mode)
if mode == "res" then
debug_res = not debug_res
elseif mode == "map" then
debug_map = not debug_map
elseif mode == "sfx" then
debug_sfx = not debug_sfx
elseif mode == "" then
debug_mod_buffer = not debug_mod_buffer
end
end
function debug_print()
if debug_res then
debug_print_res()
end
if debug_map then
debug_print_map()
end
if debug_sfx then
debug_print_sfx()
end
if debug_mod_buffer then
debug_print_mod_buffer()
end
end
function debug_print_res()
clip(70, 0, 16, 24)
print(stat(0), 70, 0, 15)
print(stat(1), 70, 8, 15)
print(stat(9) .. " / " .. stat(8), 70, 16, 15)
clip()
end
function debug_print_sfx()
clip(64, 0, 8, 8)
print(stat(24), 64, 0, 15)
clip()
end
function debug_print_map()
clip(24, 0, 32, 24)
print(camera_pos_x .. " " .. camera_pos_y, 24, 0, 15)
print(player_pos_x .. " " .. player_pos_y, 24, 8, 15)
print(get_biome_name(player_pos_x, player_pos_y), 24, 16, 15)
clip()
end
function debug_print_mod_buffer()
clip(0, 0, 16, 128)
for k,v in pairs(mod_buffer) do
print(k .. ": " .. tostr(v))
end
clip()
end