app added

pull/600/head
abhinavgolwalkar 2020-11-19 20:02:27 +00:00
parent c1bc4a4a5b
commit 6eca09e917
16 changed files with 166 additions and 2 deletions

View File

@ -2407,5 +2407,28 @@
{"name":"tilthydro.app.js","url":"app.js"},
{"name":"tilthydro.img","url":"app-icon.js","evaluate":true}
]
}
]
},
{ "id": "supmariodark",
"name": "Super mario clock night mode",
"shortName":"supmariodark",
"icon": "supmariodark.png",
"version":"0.01",
"description": "Super mario clock in night mode",
"tags": "clock",
"type" : "clock",
"storage": [
{"name":"supmariodark.app.js","url":"supmariodark.js"},
{"name":"supmariodark.img","url":"supmariodark-icon.js","evaluate":true},
{"name":"supmario30x24.bin","url":"supmario30x24.bin.js"},
{"name":"supmario30x24.wdt","url":"supmario30x24.wdt.js"},
{"name":"banner-up.img","url":"banner-up.js","evaluate":true},
{"name":"banner-down.img","url":"banner-down.js","evaluate":true},
{"name":"brick2.img","url":"brick2.js","evaluate":true},
{"name":"enemy.img","url":"enemy.js","evaluate":true},
{"name":"flower.img","url":"flower.js","evaluate":true},
{"name":"flower_b.img","url":"flower_b.js","evaluate":true},
{"name":"mario_wh.img","url":"mario_wh.js","evaluate":true},
{"name":"pipe.img","url":"pipe.js","evaluate":true}
]
}
]

View File

@ -0,0 +1 @@
0.01: New App!

View File

@ -0,0 +1,39 @@
# Notifications (default)
A handler for displaying notifications that displays them in a bar at the top of the screen
This is not an app, but instead it is a library that can be used by
other applications or widgets to display messages.
## Usage
```JS
options = {
on : bool, // turn screen on, default true
size : int, // height of notification, default 80 (max)
title : string, // optional title
id // optional notification ID, used with hide()
src : string, // optional source name
body : string, // optional body text
icon : string, // optional icon (image string)
render function(area) {} // function callback to render in area{x,y,w,h}
};
// eg... show notification
require("notify").show({title:"Test", body:"Hello"});
// or display lots of text, with a phone icon
require("notify").show({
title:"Hello",
src:"Test",
body:"This is a really really really long bit of text that has to be wrapped",
icon:require("heatshrink").decompress(atob("jEYxH+ACcejwUUAAYWVjESCqoABCqoYNCpQXLCxgXJQowtTA4ZbSZiwW/C4gWWjAXVZwIuVWhxFIC6z6OLpIXSCywXYDAIWVAAYXTA=="))
});
// remove it (can also be removed by tapping)
require("notify").hide();
// Use ID to only hide a specific notification if it is still visible
require("notify").show({id:1, title:"Test", body:"Some Alert"});
require("notify").show({id:"msg", title:"Message", body:"Incoming Message"}); // replaces Test Alert
require("notify").hide({id:1}); // does nothing, because the Test Alert was already replaced
require("notify").hide({id:"msg"}); // hides Message
require("notify").hide(); // hides current notification, whatever it was
```

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("5EYxH+rVa/2KxX+6/X/wA/AH4A2XIS/CYoLH/AH4A/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y/5P/AH7H/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y87I/AH7G4Y5jWDAH4A/Y+wDBY5IIBa4TJ/AH7F0WoS+DY4jQDCQgA/ACZyLAH5fVXobGDAILRDNP7H/LvC8DYgbJCBYbJDAH4A/AGS5FYYbLDBwgA/ACpwLAH5hXYQgFGJv7H/L/TAFA4gIFAH4A/AGi7CXo4KDAH4AXNxIA/MC5jJMv7H/MP4AD"));

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("5EYxH+AAsvAH4AYMAxh/MMRj/Y/4A/MZDUNAH4A/AF69IA4tkAH4AWNw5H/L7TAFAohN/Y/5h9YQjGHOA4A/AH4AtZA7LEYovXAH4AUOA5H/LrC8DYgTGCBQRn/Y/5f7XobHEaIZyLAH4A/AFK1EXwbHGCIZT/AH7J3AYLHKa4YA/AH7H2XALHMKH4A/ZHLH/AH4A/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y/7H/AH7H/Y/4A/AH7H/AH4A/Y/4A/AH7H/AH4A/Y8oA="));

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("hsLxH+y3XAAkAA4YDBywAEgAHDAggMRFAIMJAIIABGZJFDIDIpCCZArCBoYMHIQIdCFgsAA="));

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("iEQxH+AAucAAQKGBw4QKBwoQIBw4QGAoMrBosrBQQdE6AQElfQEIgPEAAgPEDIYPBBQQEEAAvQAAIEGACIwFAAhxIBwoABRwpYCB5ZqFAAYGBB5AQDAoQgJAwgND"));

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("iEQxH+AAfXAAwMEBpARGAoXHAAwQDBom6AAgRFB5wvPJ6BvQAAkSiQIIBIgFHAwIQFAgwFCAgQFEBI4GFFAo0HB5gIEAApuKBg4="));

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("iEQxH+AAfHAAwMEBpARGAoV4AAwQDBom6AAgRFB5wvPJ6BvQAAkSiQKJB5IEDBIIFFBQ4ECAogJHAwoCEGgwPOFYxjNDY/+A"));

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("iEgxH+AAvPAAYLGBo3P44OOB5wyJ3QABDgICCEAwMFCYYRFBhAQFFggPDEAwbGIgQACJo4QHL4w9JQAogFV5G654rDAgIOHB44+HB5BfGB5IQCBIYPFEAgJIAowJFAAoPI44NDAgILDRIYfHUw4PL/wPNN4IOJCAbNDABQOIA5z1EB6qxEc4wHSWIoPHAA4PJA=="));

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("iUgxH+xQAG64AGBAOKmANBmAACCwwOECKAALCIn+EAYAL/xaBGxIiFCP4R/CP4R/CP4R/CP4RTA="));

View File

@ -0,0 +1 @@
atob("A/4AA/4AA/4AH//AH//AH//A4AH44AH44AH44AA44AA44AA4/AA4/AA4/AA4H//AH//AH//AA/4AA/4AA/4AAAAAAAA4AAA4AAA4HAA4HAA4HAA4///4///4///4///4///4///4AAA4AAA4AAA4AAA4AAA4AAA4AAAAHAH4HAH4HAH4/A/4/A/4/A/44H/44H/44H/44H444H444H444/444/444/44//A4//A4//A4H4A4H4A4H4A4AAAAAAHAAAHAAAHA4AH44AH44AH44HA44HA44HA44/A44/A44/A4//A4//A4//A4/H/4/H/4/H/44A/A4A/A4A/AAAAAAH4AAH4AAH4AA/4AA/4AA/4AH44AH44AH44A/A4A/A4A/A4A///4///4///4///4///4///4AA4AAA4AAA4AAAAA/4HA/4HA/4HA/4H4/4H4/4H444A444A444A444A444A444A444A444A444A44//44//44//4AH/AAH/AAH/AAAAAA//AA//AA//AH//4H//4H//4/HA4/HA4/HA44HA44HA44HA44HA44HA44HA44H/44H/44H/4AA/AAA/AAA/AAAAA/AAA/AAA/AAA/AAA/AAA/AAA4A/44A/44A/44H/44H/44H/44/AA4/AA4/AA/4AA/4AA/4AA/AAA/AAA/AAAAAAAH4/AH4/AH4/A//A4//A4//A44/A44/A44/A44HA44HA44HA44HA44HA44HA4H4/4H4/4H4/4AA/AAA/AAA/AAAAAH4AAH4AAH4AA//A4//A4//A44HA44HA44HA44HA44HA44HA44HH44HH44HH4///A///A///AH/4AH/4AH/4AAAAAPw/APw/APw/APw/APw/APw/APw/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AA/4AA/4A//4A//4A//4//4A//4A//4A//4A//4A//4AA//4A//4A//4AA/4AA/4AA/4AAAA///4///4///4///4///4///44HA44HA44HA44HA44HA44HA4///4///4///4H4/AH4/AH4/AAAAAA/4AA/4AA/4AH//AH//AH//A/AH4/AH4/AH44AA44AA44AA44AA44AA44AA44AA44AA44AA4AAAA///4///4///4///4///4///44AA44AA44AA4/AH4/AH4/AH4H//AH//AH//AA/4AA/4AA/4AAAAA///4///4///4///4///4///44HA44HA44HA44HA44HA44HA44AA44AA44AA4AAAA///4///4///4///4///4///44HAA4HAA4HAA4HAA4HAA4HAA4AAA4AAA4AAAAAAAA/4AA/4AA/4AH//AH//AH//A/AH4/AH4/AH44HA44HA44HA44HA44HA44HA44H/44H/44H/44H/44H/44H/4AAAA///4///4///4///4///4///4AHAAAHAAAHAAAHAAAHAAAHAA///4///4///4///4///4///4AAAA///4///4///4///4///4///4AAAAAAA4AAA4AAA4AAA4AAA4AAA4AAA4AAA4AAA4///4///4///4///A///A///AAAAA///4///4///4///4///4///4A/4AA/4AA/4AH4/AH4/AH4/A/AH4/AH4/AH44AA44AA44AA4AAAA///4///4///4///4///4///4AAA4AAA4AAA4AAA4AAA4AAA4AAAA///4///4///4///4///4///4//4A//4A//4AA//4A//4A//4A//4A//4A//4//4A//4A//4A///4///4///4///4///4///4AAAA///4///4///4///4///4///4//AA//AA//AAA//AA//AA//A///4///4///4///4///4///4AAAAA/4AA/4AA/4AH//AH//AH//A/AH4/AH4/AH44AA44AA44AA44AA44AA44AA4/AH4/AH4/AH4H//AH//AH//AA/4AA/4AA/4AAAAA///4///4///4///4///4///44HAA4HAA4HAA4HAA4HAA4HAA//AA//AA//AAH4AAH4AAH4AAAAAAA/4AA/4AA/4AH//AH//AH//A/AH4/AH4/AH44AA44AA44AA44AA44AA44AA4/AH//AH//AH/H//HH//HH//HA/4HA/4HA/4HAAAA///4///4///4///4///4///44HAA4HAA4HAA4H4A4H4A4H4A///4///4///4H4H4H4H4H4H4AAAAH4A4H4A4H4A4//A4//A4//A44HA44HA44HA44HA44HA44HA44H/44H/44H/44A/A4A/A4A/AAAAA4AAA4AAA4AAA4AAA4AAA4AAA///4///4///4///4///4///44AAA4AAA4AAA4AAA4AAA4AAAAAAA///A///A///A///4///4///4AAA4AAA4AAA4AAA4AAA4AAA4///4///4///4///A///A///AAAAA/4AA/4AA/4AA//4A//4A//4AAH/4AH/4AH/4AH/4AH/4AH/4//4A//4A//4A/4AA/4AA/4AAAAAA/AAA/AAA/AAA//4A//4A//4AA//4A//4A//4A//4A//4A//4//4A//4A//4A//4A//4A//4AA//4A//4A//4A//4A//4A//4//4A//4A//4A/AAA/AAA/AAA/AH4/AH4/AH4/4/4/4/4/4/4A/4AA/4AA/4AA/4AA/4AA/4A/4/4/4/4/4/4/AH4/AH4/AH4AAAA/AAA/AAA/AAA/4AA/4AA/4AAA//4A//4A//4A//4A//4A//4/4AA/4AA/4AA/AAA/AAA/AAAAAAA4A/44A/44A/44H/44H/44H/44/A44/A44/A4/4A4/4A4/4A4/AA4/AA4/AA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

View File

@ -0,0 +1 @@
atob("FhMWFhYWFhYWFggQEBAQEBATExMTEBAWEwcQEw0ZExkTGRMTExMTHhMTEBAQEBAQ");

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEwwgGDgeAmALCCQ0IgYeIn/4wYbBxETEIc4xAABBgIAFgf///4gE43eYBIUIxOZAAOYHQ2YC4u7wAEBCwYABGAsDx/5C4MwhO5xO4FomP/GJC4s4CoIBBxGJ3OY3eICwWIHgP5KIQAC3AWB/+P/+JL4OLIYY8BzIXFIwIUBAAWIC4W4OYX/z+Zz+YmYYDCwn/3AXG/OfGAOYzIXI/G4zeYzZ2BzC+CAAOZ3IXD34XD/eILoO5OgJ/CPYYXJTgKQBxKLBF4jAGC4gMBKgIDCKYIWBDwLxFC4m4BwIrBPIJHBEQQwCC4amFIQQICxgECJA7vBLwQOBMIIDB/P+C4IHB/AXBwDYEFwTmB/JIBz/4C4Q3BYwQXFKoLjB3OfUIIgB/3Ix+I5YIBxBfDgEwWgW/3OPF4O//f/9A6B95gBmEzDIk4UAQXBRwJlBAAI7BxB0BhDgBC4pCBI4IVBDoP5TYeYgZ9CC4cBLQQRDdoQXD/c4ToQXBgYABC4OYFAgXGUAQXCMwQXCboYXG3YDC5AuBNARgCDAe4BQIFC/ZSDYAM4xGb3AXCXgX/z4XBGAO734iDxeDhGL3e4mZIBMIeJUgWJLQI0DAoTdBxB4CJAYTBGAQABQgn4YYIjBBQIABxwVBxK2BPQScFOYIIB3YXCzHMLQOJCoOPzO4C4KVCmcQF4OLzHICIOO5nI/4dBCIRGCGwODdgKnBIwIrBxHIC4OP/eZVQQWBwczgYWBgEwnGYxgXCDgPIxGfYIYWBCgQADGAIXBxisBLYKYCBQOIiYWGC4IvDzY+BSgZ9BFo4ABhZHEAAaJCxAXL5hzBCoQEEC5U7CIIABCwQdDze5wAXI3ImDCoQXCxO5zEwOxCGDAAZlBJARGJnCJCABIWIgCEBC5QuJC4RIHCxgXBGAc5GgmDOhBfDc4WDhA0DmYVKC4eJxEwhA0CIhYADmcziCsBGgIcBC5w1GCx4="))

View File

@ -0,0 +1,90 @@
// place your const, vars, functions or classes here
var s=require("Storage");
let stid;
let hour = -1;
let minute = -1;
const resetFace = ()=>{
Bangle.setLCDMode();
g.setClipRect(0,24,239,239)
g.clear();
};
const readImage =(img) =>{
return (s.read(img));
};
const drawFace = ()=>{
resetFace();
g.drawImages([
{image:readImage("pipe.img"),x:180,y:160,scale:2},
{image:readImage("flower_b.img"),x:180,y:128,scale:2},
{image:readImage("mario_wh.img"),x:100,y:132,scale:2},
{image:readImage("enemy.img"),x:20,y:165,scale:2},
]).drawImages([
{image:readImage("brick2.img"),x:0,y:196,repeat:true,scale:2}
]);
drawBanner();
};
const resetTimer =()=>{
if (stid) {
clearInterval(stid);
stid = undefined;
}
}
const startTimer =() =>{
hour = -1;
minute = -1;
stid = setInterval(onHalfSecond,500);
}
const drawBanner = (h) =>{
if(h == undefined) h=24;
g.drawImages([
{image:readImage("banner-up.img"),x:g.getWidth()/2-100,y:50},
{image:readImage("banner-down.img"),x:g.getWidth()/2-100,y:(50+24+h)}
])
};
const updateTimeBanner = (h,m)=>{
m = (m<10?'0':'')+m;
h = (h<10?'0':'')+h;
bx1=g.getWidth()/2-90;
by1=50+10;
bx2=g.getWidth()/2+90;
by2=50+62;
g.setFontCustom(eval(s.read("supmario30x24.bin")), 48, eval(s.read("supmario30x24.wdt")), 24);
g.setClipRect(bx1,by1,bx2,by2).clearRect(bx1,by1,bx2,by2);
g.drawString(h,bx1+35,75).drawString(":",g.getWidth()/2,75).drawString(m,bx1+110,75).flip();
};
let om = 0;
const onHalfSecond =()=>{
var d = new Date();
var sec = d.getSeconds();
hour = d.getHours();
minute = d.getMinutes();
if(minute>om)updateTimeBanner(hour,minute);
let im, pos;
if(sec%2 == 0){im = "flower_b.img";pos = 20;}
else{im = "flower.img";pos = 25;}
g.setClipRect(180,128,180+32,128+32).clearRect(180,128,180+32,128+32).drawImage(readImage(im),180,128,{scale:2});
g.setClipRect(20,165,25+32,165+32).clearRect(20,165,25+32,165+32).drawImage(readImage("enemy.img"),pos,165,{scale:2});
om = minute;
};
Bangle.on('lcdPower', (on) => {
resetTimer();
if (on) {
om=-1;
startTimer();
drawFace();
}
else {
resetTimer();
}
});
resetTimer();
Bangle.loadWidgets();
Bangle.drawWidgets();
drawFace();
startTimer();
setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"});

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB