It would be helpful if calling color() to change the default color would return the previously default color. I am currently using a snippet like this to restore a previous default color:
t=band(peek(24357),15) color(c) blah blah color(t) |
Zep has said on Twitter that the next version (0.1.12) would have this behaviour, as well as pal(), cursor() and several others.
Could write a function I suppose:
-- push me pull you colors -- written by dw817 (01-28-20) function _init() colt={} -- maximum # of colors to -- remember. cstack=32 cls() for z=0,3 do for i=0,15 do colr(rnd(15)+1) rectfill(i*8,60,i*8+6,63) end repeat flip() until btnp()>0 for i=15,0,-1 do colr(-1) rectfill(i*8,65,i*8+6,68) end repeat flip() until btnp()>0 end end function colr(n) local c=colt[#colt] if n>=0 then color(n) if #colt==cstack then del(colt,colt[1]) end add(colt,n) else color(c) del(colt,c) end end |
While I agree that the API should do this by default for all state-setting calls, for the time being you should remember that you can replace the API if you want to, e.g.:
hooked_color=color function color(...) local t=peek(24357) hooked_color(...) return t end |
(Note that "..." is a Lua language feature for argument forwarding, and not just my own shorthand.)
Also, no need to band(,15). The value in 24357 is exactly the one passed into color(). The upper 4 bits are only nonzero if you set them nonzero yourself, e.g. 0xb8 for red/green xmas patterns. You'd want to preserve them and not mask them off.
[Please log in to post a comment]