]> hydra-www.ietfng.org Git - acmetensortoys-esp-lua_lamp/commitdiff
fixes shifty2 to not interrupt the animation when changing colors
authorRachael <srbennett@gmail.com>
Tue, 20 Feb 2018 00:54:08 +0000 (16:54 -0800)
committerRachael <srbennett@gmail.com>
Tue, 20 Feb 2018 00:54:08 +0000 (16:54 -0800)
draw-shifty2.lua

index 30a8d2a2e59bf4d38eaa8b7bfba41d173f44e553..3254a0d93b45143d1049e0d3738f2df2dac7349a 100644 (file)
@@ -1,21 +1,36 @@
 return function(t,fb,p)
     fb:fill(0,0,0)
     local ix = 0
-    local c = p[1]
+    local c
     local x = string.char(0,0,0)
-    fb:set( 3,c) fb:set( 8,c) fb:set(10,c) fb:set(15,c)
-    fb:set(17,c) fb:set(18,c) fb:set(22,c) fb:set(23,c)
-    fb:set(27,c) fb:set(28,c) fb:set(29,c) fb:set(32,c)
+
+    local function drawEyes()
+      fb:set( 3,c) fb:set( 8,c) fb:set(10,c) fb:set(15,c)
+      fb:set(17,c) fb:set(18,c) fb:set(22,c) fb:set(23,c)
+      fb:set(27,c) fb:set(28,c) fb:set(29,c) fb:set(32,c)
+    end
+
+    local function reinit()
+      c = p[1]
+      drawEyes()
+    end
+    reinit()
+
+    local ft = {
+      [0] = function() fb:set( 1,x) fb:set( 3,c) fb:set( 6,x) fb:set( 8,c)
+                fb:set(17,c) fb:set(19,x) fb:set(22,c) fb:set(24,x)
+                fb:set(25,x) fb:set(27,c) fb:set(30,x) fb:set(32,c) end,
+      [1] = function()  fb:set( 1,c) fb:set( 3,x) fb:set( 6,c) fb:set( 8,x)
+          fb:set(17,x) fb:set(19,c) fb:set(22,x) fb:set(24,c)
+          fb:set(25,c) fb:set(27,x) fb:set(30,c) fb:set(32,x) end
+    }
+
     t:register(1000,tmr.ALARM_AUTO, function()
-      if ix == 1
-        then fb:set( 1,c) fb:set( 3,x) fb:set( 6,c) fb:set( 8,x)
-            fb:set(17,x) fb:set(19,c) fb:set(22,x) fb:set(24,c)
-            fb:set(25,c) fb:set(27,x) fb:set(30,c) fb:set(32,x)
-       else fb:set( 1,x) fb:set( 3,c) fb:set( 6,x) fb:set( 8,c)
-            fb:set(17,c) fb:set(19,x) fb:set(22,c) fb:set(24,x)
-            fb:set(25,x) fb:set(27,c) fb:set(30,x) fb:set(32,c)
-      end
+      ft[ix]()
       ix = 1 - ix
       dodraw()
     end)
+
+    drawEyes()
+    return {['cccb'] = function() reinit(); ft[ix](); dodraw() end }
   end