]> hydra-www.ietfng.org Git - acmetensortoys-esp-lua_lamp/commitdiff
draw-happy: add optional animated "hearts" in the corners
authorNathaniel Wesley Filardo <nwfilardo@gmail.com>
Sat, 23 Jan 2021 01:25:00 +0000 (01:25 +0000)
committerNathaniel Wesley Filardo <nwfilardo@gmail.com>
Sat, 23 Jan 2021 01:25:00 +0000 (01:25 +0000)
draw-happy.lua

index 963479dbb72eb510e5d4b29a9040f836932b808f..eec10aafdaa5ed0c20a6458bcb101c1eec5b71ef 100644 (file)
@@ -4,10 +4,44 @@
 -- 08 x o x o o x o x
 -- 16 o o o o o o o o
 -- 24 o o o x x o o o
---
+
+local face = {2,7,9,11,14,16,28,29}
+local dots = {1,8,32,25}
+
 return function(t,fb,p)
   local c = p[1]
   local i,v
   fb:fill(0,0,0)
-  for i,v in ipairs({2,7,9,11,14,16,28,29}) do fb:set(v,c) end
+  for i,v in ipairs(face) do fb:set(v,c) end
+
+  local hc = p[2]
+  local z = string.char(0,0,0)
+  if hc then
+    local ix = 1
+    local nix = 2
+
+    local adv, blink_off, blink_on
+    function blink_off()
+      fb:set(dots[ix], z)
+      t:alarm(100, tmr.ALARM_SINGLE, blink_on)
+      dodraw()
+    end
+
+    function blink_on()
+      fb:set(dots[ix], hc)
+      t:alarm(400, tmr.ALARM_SINGLE, adv)
+      dodraw()
+    end
+
+    function adv()
+      fb:set(dots[ix], z)
+      fb:set(dots[nix], hc)
+      ix = nix
+      nix = (nix == #dots) and 1 or (nix + 1)
+      t:alarm(400, tmr.ALARM_SINGLE, blink_off)
+      dodraw()
+    end
+
+    adv()
+  end
 end