function _init() init_sound() init_mapgen() init_player({block_size/2, block_size/2}) generate_map({0, 0}) debug = false end function _update() handle_input() handle_map_update() if (btn(5) and btn(4) and btnp(3)) debug = not debug end function _draw() rectfill(0, 0, 127, 127, 0) -- the screen is 128x128 pixels, so it fits 16x16 sprites map(camera_pos[1], camera_pos[2], 0, 0, 16, 16) draw_player() if debug then render_debug_info() end 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) 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[1]-block_size/2, player_pos[2]-block_size/2}) camera_pos = {block_size/2 - 8, block_size/2 - 8} end end function out_of_bounds(pos) return pos[1] < 0 or pos[1] > block_size-16 or pos[2] < 0 or pos[2] > block_size-16 end function render_debug_info() clip(0, 0, 32, 24) rectfill(0, 0, 32, 24, 0) print(stat(0), 0, 0, 15) print(camera_pos[1], 0, 8, 15) print(camera_pos[2], 16, 8, 15) print(player_pos[1], 0, 16, 15) print(player_pos[2], 16, 16, 15) clip() end