1
0
Fork 0
BangleApps/apps/life/life.min.js

6 lines
1.9 KiB
JavaScript
Raw Normal View History

2020-06-04 16:16:46 +00:00
Bangle.setLCDTimeout(30);var buf=Graphics.createArrayBuffer(160,160,1,{msb:!0});function flip(){g.setColor(1,1,1);g.drawImage({width:160,height:160,bpp:1,buffer:buf.buffer},40,40);buf.clear()}var genA=new Uint8Array(324),genB=new Uint8Array(324),generation=0,gentime=0,currentY=1;function initDraw(c){for(var a=1;17>a;++a)for(var h=1;17>h;++h){var d=.5>Math.random()?1:0;c[h+18*a]=d;if(1==d){d=10*(h-1);var f=10*(a-1);buf.fillRect(d,f,d+7,f+7)}}flip()}
function howlong(){++generation;g.setFont("6x8",2);g.setFontAlign(-1,-1,0);gentime=Math.floor(gentime);g.drawString("Gen:"+generation+" "+gentime+"ms ",20,220,!0);gentime=0}
function next(){"ram";for(var c=Date.now(),a=genA,h=genB,d=currentY,f=1;17>f;++f){var b=f+18*d,e=a[b-19]+a[b-18]+a[b-17]+a[b-1]+a[b+1]+a[b+17]+a[b+18]+a[b+19];e=1==a[b]&&2==e||3==e?1:0;h[b]=e;1==e&&(b=10*(f-1),e=10*(d-1),buf.fillRect(b,e,b+7,e+7))}gentime+=Date.now()-c;16==d?(flip(),c=genA,genA=genB,genB=c,howlong(),currentY=1):++currentY}var intervalRef=null;function stopdraw(){intervalRef&&clearInterval(intervalRef)}
function startdraw(c){void 0===c&&(c=!1);c||g.clear();Bangle.drawWidgets();g.reset();g.setColor(1,1,1);g.setFont("6x8",1);g.setFontAlign(0,0,3);g.drawString("RESET",230,200);g.drawString("LAUNCH",230,130);g.drawString("CLOCK",230,60);c||(intervalRef=setInterval(next,65))}function regen(){stopdraw();g.setColor(1,1,1);initDraw(genA);currentY=1;gentime=generation=0;intervalRef=setInterval(next,65)}
function setButtons(){setWatch(function(){load()},BTN1,{repeat:!1,edge:"falling"});setWatch(Bangle.showLauncher,BTN2,{repeat:!1,edge:"falling"});setWatch(regen,BTN3,{repeat:!0,edge:"rising"})}var SCREENACCESS={withApp:!0,request:function(){this.withApp=!1;stopdraw();clearWatch()},release:function(){this.withApp=!0;startdraw();setButtons()}};Bangle.on("lcdPower",function(c){SCREENACCESS.withApp&&(c?startdraw():stopdraw())});g.clear();Bangle.loadWidgets();regen();startdraw(!0);setButtons();