From 2cc63b989132f36f6d4d62fc7409cb12a09e6b49 Mon Sep 17 00:00:00 2001 From: Rachael Date: Wed, 16 Nov 2016 22:15:34 -0800 Subject: [PATCH] Adds stary eyes animation. Not entirely happy with it --- draw-staryeyes.lua | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 draw-staryeyes.lua diff --git a/draw-staryeyes.lua b/draw-staryeyes.lua new file mode 100644 index 0000000..a2b8798 --- /dev/null +++ b/draw-staryeyes.lua @@ -0,0 +1,31 @@ +return function(t,fb,g,r,b) + local c = string.char(g,r,b) + local cmax = math.max(r,g,b) + local i,v + + -- off channels stay off, on channels stay on, just minimally dim + local function adjust(val,bias) if val == 0 then return 0 elseif val <= bias then return 1 else return val - bias end end + -- update many pixels together with the same bias + local function drawbiased(...) + local i,v + local bias = math.random(cmax) + local ag = adjust(g,bias) + local ar = adjust(r,bias) + local ab = adjust(b,bias) + for i,v in ipairs(arg) do fb:set(v,ag,ar,ab) end + end + + local function drawEq() for i,v in ipairs({3,6}) do fb:set(v,g,r,b) end end + local function drawTwinkleEyes() drawbiased(3,6) end + local ft = { [0] = drawEq, drawEq, drawTwinkleEyes } + fb:fill(0,0,0) + fb:set(3,c) fb:set(6,c) fb:set(10,c) fb:set(15,c) fb:set(17,c) + fb:set(18,c) fb:set(23,c) fb:set(24,c) fb:set(28,c) fb:set(29,c) + -- TODO make eyes (3&6 flicker) + + local ix = 1; + t:register(400, tmr.ALARM_AUTO, function() + ft[math.random(#ft)]() + dodraw() + end) +end \ No newline at end of file -- 2.50.1