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]



