Better debug mouse (#20)
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. Simplify debug info display. Save tokens by omitting parentheses and map coordinates. Adjust location to match. Instead of cycling between symbols, the cursor shape can be chosen by using left, right, or both mouse buttons. Reviewed-on: #20 Co-authored-by: Kistaro Windrider <kistaro@gmail.com> Co-committed-by: Kistaro Windrider <kistaro@gmail.com>
This commit is contained in:
parent
526f5021d1
commit
a1a4ad4d56
@ -33,6 +33,11 @@ function gsv(s,sep1,sep2)
|
||||
return ret
|
||||
end
|
||||
|
||||
function cycle(tbl,period)
|
||||
period = period or 1
|
||||
return tbl[t()%period*#tbl\period+1]
|
||||
end
|
||||
|
||||
mnames={}
|
||||
function names(root)
|
||||
local n=mnames[root]
|
||||
@ -1774,20 +1779,12 @@ function hints:init()
|
||||
end
|
||||
menuitem(1,"get hint",function() level.hintlevel+=1 end)
|
||||
menuitem(2,"hide hints",function() level.hintlevel=0 end)
|
||||
-- debug mode: enable mouse
|
||||
poke(0x5f2d,1)
|
||||
end
|
||||
|
||||
hintflicker={7,10,9,8,8,9,10,7}
|
||||
hintflicker=split"7,10,9,8,8,9,10,7"
|
||||
function hints:draw2()
|
||||
pal()
|
||||
local c=hintflicker[t()%1*#hintflicker\1+1]
|
||||
-- debug mode: mouse coord display
|
||||
if stat(34) != 0 then
|
||||
local mousex, mousey = stat(32), stat(33)
|
||||
print("x ("..mousex..", "..mousey..")",mousex,mousey,c)
|
||||
end
|
||||
|
||||
local c=cycle(hintflicker)
|
||||
|
||||
local function body()
|
||||
for i,h in ipairs(self[level.ix]) do
|
||||
@ -1819,6 +1816,37 @@ function hints:draw2()
|
||||
pal()
|
||||
end
|
||||
|
||||
-->8
|
||||
-- debug mouse support
|
||||
|
||||
debugmouse = {}
|
||||
|
||||
-- comment this out to disable debug mode
|
||||
add(real_modules, debugmouse)
|
||||
|
||||
function debugmouse:init()
|
||||
poke(0x5f2d,1)
|
||||
end
|
||||
|
||||
debugflicker=split"5,6,7,15,14,8,2,4,9,10,11,3,12,13"
|
||||
debugchs = split" ,□,x"
|
||||
|
||||
function debugmouse:draw3()
|
||||
if (stat(34) == 0) return
|
||||
pal(15,cycle(debugflicker,1.5))
|
||||
local x, y, c = stat(32), stat(33), debugchs[stat(34) & 0x3]
|
||||
if not c or c == " " then
|
||||
spr(50,x,y)
|
||||
else
|
||||
print(c,x,y,15)
|
||||
end
|
||||
print(x..", "..y,
|
||||
mid(0,x,97),
|
||||
mid(0, y > 117 and y - 6 or y + 6, 117),
|
||||
15)
|
||||
pal()
|
||||
end
|
||||
|
||||
__gfx__
|
||||
000030000000002200003000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeff1ff1ff1fffffff1ffffff1fffffff1dddddddd111111110005000000000000
|
||||
003333300000332200333330eeffffffffffffffffffffeee5e555e55e555e5eff1ff1ffffffffffffffffffffffffffdddddddd111111110000500000000000
|
||||
@ -1844,10 +1872,10 @@ eeee0000cc04405500444400efeeee5e11111111e5eeeefeeeeeeeeeeeeeeeeeffffffffffffffff
|
||||
0a000aa4441a91a1bbabbbbbeffeeeeeeeeeeeeeeeeeeffeff1ff1ff11111111ff1111ff00000000000000000000000000000000000000000000000000000000
|
||||
00a0044449a110a1bbbbbbbbeeffffffffffffffffffffeeff1ff1ffffffffffffffffff00000000000000000000000000000000000000000000000000000000
|
||||
000aa111991111103bbbbbb3eeeeeeeeeeeeeeeeeeeeeeeeff1ff1ffffffffffffffffff00000000000000000000000000000000000000000000000000000000
|
||||
00000000991000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111999999111111111
|
||||
00000000990000000000000000000000000000000000000000000000000000000000000000000000000000000000000019911991999999911999999119999999
|
||||
00000000990000000000000000000000000000000000000000000000000000000000000000000000000000000000000019977991999999911999999119999999
|
||||
00000000090000000000000000000000000000000000000000000000000000000000000000000000000000000000000019911991999117111991199111711999
|
||||
0000000099100000f765000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111999999111111111
|
||||
00000000990000007700000000000000000000000000000000000000000000000000000000000000000000000000000019911991999999911999999119999999
|
||||
00000000990000006060000000000000000000000000000000000000000000000000000000000000000000000000000019977991999999911999999119999999
|
||||
00000000090000005005000000000000000000000000000000000000000000000000000000000000000000000000000019911991999117111991199111711999
|
||||
00000000aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000019911991999117111991199111711999
|
||||
0000000077a000000000000000000000000000000000000000000000000000000000000000000000000000000000000019999991999999911997799119999999
|
||||
00000007777a00000000000000000000000000000000000000000000000000000000000000000000000000000000000019999991999999911991199119999999
|
||||
|
Loading…
Reference in New Issue
Block a user