Compare commits

..

1 Commits

Author SHA1 Message Date
aefdfeb99c
Better debug mouse
Debug mouse is now its own module, so it can be separated from the hint system, since it is useful for more than just positioning hints. It now has the following enhancements:

1. Clock-based table cyclng now has a helper function (cycle)
2. Debug mouse color cycling is distinct from hint color cycling, so debug position readout remains legible
3. Debug position readout now stays on screen even when the cursor is near or past the edges
4. Debug cursor cycles between a mouse sprite specifically marking the exact pixel that is being sampled, an "X" for text character sizing, and a "□" for positioning the centered 3x3 characters often used as hint target markers
5. Map cell coordinates (in square brackets) are displayed in addition to pixel coordnates (in parentheses)

Sprite 50 is now the mouse cursor. Color 15 is color cycling for debug readouts.

Debug mouse features can be disabled by commenting out `add(real_modules, debugmouse)`.

I've done a little bit of golfing but this is stiill a token expense. I'm going to write a crappy sprintf function to save tokens everywhere we're assembling strings from their component parts.
2023-01-01 12:06:22 -08:00

View File

@ -1748,41 +1748,20 @@ function rot13(s)
end end
return chr(unpack(sord)) return chr(unpack(sord))
end end
--hint file format: --hint file format:
-- each row is one hint. -- each row is one hint. 4 columns per row
-- 4 or 5 columns -- separated with a grave (`) character
-- separated with a -- room# ` X (screen px) ` Y (screen px) ` message
-- grave (`) character -- message is ROT13d; works for a-zA-Z
-- [1] room#
-- [2] x coord
-- [3] y coord
-- [4] message line 1 (rot13)
-- [5] message llne 2 (rot13)
-- row 5 can be omitted
-- for a 1-line hint
--
-- multiple hints for the same
-- room are revealed in order
hints = {} hints = {}
add(real_modules,hints) add(real_modules,hints)
function hints:init() function hints:init()
local h = gsv[[0`42`57`🅾️ yVPX` ■ local h = gsv[[0`64`64`zYRZ
0`42`73`❎, ❎ cHYY 0`32`32`fCYHOC]]
1`35`34`⁘ sVYY
1`99`82`■ cHYY
1`42`98`⁘`VTABER
2`75`65`i <`⁘
2`104`73` ■`cHYY
2`27`42`⁘
3`51`106`■ cHYY
3`27`81`⁘ HAOYBPX ZR
3`91`33`■ FGNAQ` URER]]
for rec in all(h) do for rec in all(h) do
rec[4]=rot13(rec[4]) rec[4]=rot13(rec[4])
if(rec[5]) rec[5]=rot13(rec[5])
local lh = self[rec[1]] local lh = self[rec[1]]
if lh then if lh then
add(lh,rec) add(lh,rec)
@ -1794,11 +1773,6 @@ function hints:init()
menuitem(2,"hide hints",function() level.hintlevel=0 end) menuitem(2,"hide hints",function() level.hintlevel=0 end)
end end
function shdprint(txt,x,y,c)
print(txt,x-1,y+1,1)
print(txt,x,y,c)
end
hintflicker=split"7,10,9,8,8,9,10,7" hintflicker=split"7,10,9,8,8,9,10,7"
function hints:draw2() function hints:draw2()
pal() pal()
@ -1806,9 +1780,9 @@ function hints:draw2()
for i,h in ipairs(self[level.ix]) do for i,h in ipairs(self[level.ix]) do
if (i > level.hintlevel) return if (i > level.hintlevel) return
local _,x,y,txt,txt2=unpack(h) local _,x,y,txt=unpack(h)
shdprint(txt,x,y,c) print(txt,x-1,y+1,1)
if (txt2) shdprint(txt2,x,y+8,c) print(txt,x,y,c)
end end
end end