From a75408fb220d6e4cb2d0d4aee5c3f1c0d33218fd Mon Sep 17 00:00:00 2001 From: Anna Wiggins Date: Wed, 11 Dec 2019 00:29:02 -0500 Subject: [PATCH] Some debug code cleanup, change the format for the mod buffer key. --- data.lua | 16 +++++++++--- main.lua | 75 +++++++++++++++++++++++++++++++++++++++++++----------- mapgen.lua | 2 +- 3 files changed, 74 insertions(+), 19 deletions(-) diff --git a/data.lua b/data.lua index cebbda0..ab8510a 100644 --- a/data.lua +++ b/data.lua @@ -49,7 +49,7 @@ function init_data() } -- initialize a ring buffer of changed positions. In use, this will be keyed - -- using strings of the form mod_buffer["x+y"], using absolute world + -- using strings of the form mod_buffer["x:y"], using absolute world -- coordinates. this is to flatten the buffer so that #mod_cache is useful -- for checking against max_mod_entries. max_mod_entries = 4096 @@ -57,13 +57,23 @@ function init_data() end -- x and y are global coords +function get_mod_key(x, y) + return tostr(x) .. ":" .. tostr(y) +end + +-- x and y are map-local coords function write_map_change(new_sprite, x, y) local global_x, global_y = calculate_world_pos(x, y) if #mod_buffer >= max_mod_entries then - -- todo: make the buffer ring + cull_mod_buffer() end - mod_buffer[tostr(global_x) .. "+" .. tostr(global_y)] = new_sprite + mod_buffer[get_mod_key(global_x, global_y)] = new_sprite +end + +function cull_mod_buffer() + -- we cull 10% of the mod buffer at a time + -- todo: implement this end function calculate_world_pos(x, y) diff --git a/main.lua b/main.lua index ae45c13..2514d73 100644 --- a/main.lua +++ b/main.lua @@ -4,7 +4,7 @@ function _init() init_mapgen() init_player(32, 32) generate_map(0, 0) - debug = false + init_debug() end @@ -18,9 +18,7 @@ function _draw() -- the screen is 128x128 pixels, so it fits 16x16 sprites map(camera_pos_x, camera_pos_y, 0, 0, 16, 16) draw_player() - if debug then - render_debug_info() - end + debug_print() end -- decide whether we need to regenerate the map. @@ -40,24 +38,71 @@ function out_of_bounds(pos_x, pos_y) pos_y < 0 or pos_y > 48 end -function debug_res() - print("mem: " + stat(0)) - print("cpu: " + stat(1)) - print("fps: " .. stat(9) .. " / " .. stat(8)) +-- 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_sfx() - print("Music pattern: " .. stat(24)) +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_map() - print("Local: " .. camera_pos_x .. " " .. camera_pos_y) - print("Global: " .. player_pos_x .. " " .. player_pos_y) - print(get_biome_name(player_pos_x, player_pos_y)) +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_mod_buffer() +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 diff --git a/mapgen.lua b/mapgen.lua index 45e018b..5d41a59 100644 --- a/mapgen.lua +++ b/mapgen.lua @@ -90,7 +90,7 @@ end -- pos_x and pos_y are global coordinates. function get_tile(pos_x, pos_y) -- lookup changes in the change buffer - local modded_sprite = mod_buffer[tostr(pos_x) .. "+" .. tostr(pos_y)] + local modded_sprite = mod_buffer[get_mod_key(pos_x, pos_y)] if (modded_sprite) return modded_sprite local biome_name = get_biome_name(pos_x, pos_y)