mirror of https://github.com/espruino/BangleApps
Merge pull request #3502 from only-meeps/master
8ball: add app and change boxclk to use clockbackgrounds apppull/3533/head
commit
84aabfade4
Binary file not shown.
After Width: | Height: | Size: 983 B |
|
@ -0,0 +1 @@
|
||||||
|
0.01: New App!
|
|
@ -0,0 +1 @@
|
||||||
|
atob("MDCBAAAAAAAAAAAAAAAAAAAAH/AAAAAAf/4AAAAB4AeAAAAHgAHgAAAOAABwAAAcAAA4AAA4AMAcAABwAMAOAABgA/AGAADAAeADAAHAAMADgAGAAAABgAGAAAABgAMAAAAAwAMBAAAAwAMDAAAAwAMHwAAAwAMHwAAAwAMDAACAwAMBAADAwAMAAAPgwAMAAAPgwAMAAADAwAGAAACBgAGAAAABgAHAAAADgADAAAADAADgAAAHAAB////+AAB////+AABgAAAGAABgAAAGAABgAAAGAADAAAADAADAAAADAADAAAADAAGAAAABgAGAAAABgAH/////gAP/////wAYAAAAAYAYAAAAAYAf/////4AP/////wAAAAAAAAAAAAAAAAA==")
|
|
@ -0,0 +1,92 @@
|
||||||
|
var keyboard = "textinput";
|
||||||
|
var Name = "";
|
||||||
|
Bangle.setLCDTimeout(0);
|
||||||
|
var menuOpen = 1;
|
||||||
|
var answers = new Array("no", "yes","WHAT????","What do you think", "That was a bad question", "YES!!!", "NOOOOO!!", "nope","100%","yup","why should I answer that?","think for yourself","ask again later, I'm busy", "what Was that horrible question","how dare you?","you wanted to hear yes? okay, yes", "Don't get angry when I say no","you are 100% wrong","totally, for sure","hmmm... I'll ponder it and get back to you later","wow, you really have a lot of questions", "NOPE","is the sky blue, hmmm...","I don't have time to answer","How many more questions before you change my name?","theres this thing called wikipedia","hmm... I don't seem to be able to reach the internet right now","if you phrase it like that, yes","Huh, never thought so hard in my life","The winds of time say no");
|
||||||
|
var consonants = new Array("b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z");
|
||||||
|
var vowels = new Array("a","e","i","o","u");
|
||||||
|
try {keyboard = require(keyboard);} catch(e) {keyboard = null;}
|
||||||
|
function generateName()
|
||||||
|
{
|
||||||
|
Name = "";
|
||||||
|
var nameLength = Math.round(Math.random()*5);
|
||||||
|
for(var i = 0; i < nameLength; i++){
|
||||||
|
var cosonant = consonants[Math.round(Math.random()*consonants.length/2)];
|
||||||
|
var vowel = vowels[Math.round(Math.random()*vowels.length/2)];
|
||||||
|
Name = Name + cosonant + vowel;
|
||||||
|
if(Name == "")
|
||||||
|
{
|
||||||
|
generateName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
generateName();
|
||||||
|
function menu()
|
||||||
|
{
|
||||||
|
g.clear();
|
||||||
|
E.showMenu();
|
||||||
|
menuOpen = 1;
|
||||||
|
E.showMenu({
|
||||||
|
"" : { title : Name },
|
||||||
|
"< Back" : () => menu(),
|
||||||
|
"Start" : () => {
|
||||||
|
E.showMenu();
|
||||||
|
g.clear();
|
||||||
|
menuOpen = 0;
|
||||||
|
Drawtext("ask " + Name + " a yes or no question");
|
||||||
|
},
|
||||||
|
"regenerate name" : () => {
|
||||||
|
menu();
|
||||||
|
generateName();
|
||||||
|
},
|
||||||
|
"show answers" : () => {
|
||||||
|
var menu = new Array([]);
|
||||||
|
for(var i = 0; i < answers.length; i++){
|
||||||
|
menu.push({title : answers[i]});
|
||||||
|
}
|
||||||
|
E.showMenu(menu);
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
"Add answer" : () => {
|
||||||
|
E.showMenu();
|
||||||
|
keyboard.input({}).then(result => {if(result != ""){answers.push(result);} menu();});
|
||||||
|
},
|
||||||
|
"Edit name" : () => {
|
||||||
|
E.showMenu();
|
||||||
|
keyboard.input({}).then(result => {if(result != ""){Name = result;} menu();});
|
||||||
|
|
||||||
|
},
|
||||||
|
"Exit" : () => load(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
menu();
|
||||||
|
|
||||||
|
var answer;
|
||||||
|
function Drawtext(text)
|
||||||
|
{
|
||||||
|
g.clear();
|
||||||
|
g.setFont("Vector", 20);
|
||||||
|
g.drawString(g.wrapString(text, g.getWidth(), -20).join("\n"));
|
||||||
|
}
|
||||||
|
function WriteAnswer()
|
||||||
|
{
|
||||||
|
if (menuOpen == 0)
|
||||||
|
{
|
||||||
|
var randomnumber = Math.round(Math.random()*answers.length);
|
||||||
|
answer = answers[randomnumber];
|
||||||
|
Drawtext(answer);
|
||||||
|
setTimeout(function() {
|
||||||
|
Drawtext("ask " + Name + " a yes or no question");
|
||||||
|
}, 3000);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
setWatch(function() {
|
||||||
|
menu();
|
||||||
|
|
||||||
|
}, (process.env.HWVERSION==2) ? BTN1 : BTN2, {repeat:true, edge:"falling"});
|
||||||
|
|
||||||
|
Bangle.on('touch', function(button, xy) { WriteAnswer(); });
|
|
@ -0,0 +1,19 @@
|
||||||
|
{ "id": "8ball",
|
||||||
|
"name": "Magic 8 ball",
|
||||||
|
"shortName":"8ball",
|
||||||
|
"icon": "8ball.png",
|
||||||
|
"version":"0.01",
|
||||||
|
"screenshots": [
|
||||||
|
{"url":"screenshot.png"},
|
||||||
|
{"url":"screenshot-1.png"},
|
||||||
|
{"url":"screenshot-2.png"}
|
||||||
|
],
|
||||||
|
"allow_emulator": true,
|
||||||
|
"description": "A very sarcastic magic 8ball",
|
||||||
|
"tags": "game",
|
||||||
|
"supports": ["BANGLEJS2"],
|
||||||
|
"storage": [
|
||||||
|
{"name":"8ball.app.js","url":"app.js"},
|
||||||
|
{"name":"8ball.img","url":"app-icon.js","evaluate":true}
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
|
@ -3,3 +3,4 @@
|
||||||
0.03: Allows showing the month in short or long format by setting `"shortMonth"` to true or false
|
0.03: Allows showing the month in short or long format by setting `"shortMonth"` to true or false
|
||||||
0.04: Improves touchscreen drag handling for background apps such as Pattern Launcher
|
0.04: Improves touchscreen drag handling for background apps such as Pattern Launcher
|
||||||
0.05: Fixes step count not resetting after a new day starts
|
0.05: Fixes step count not resetting after a new day starts
|
||||||
|
0.06 Added clockbackground app functionality
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
* ---------------------------------------------------------------
|
* ---------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
let background = require("clockbg");
|
||||||
let storage = require("Storage");
|
let storage = require("Storage");
|
||||||
let locale = require("locale");
|
let locale = require("locale");
|
||||||
let widgets = require("widget_utils");
|
let widgets = require("widget_utils");
|
||||||
let date = new Date();
|
let date = new Date();
|
||||||
let bgImage;
|
|
||||||
let configNumber = (storage.readJSON("boxclk.json", 1) || {}).selectedConfig || 0;
|
let configNumber = (storage.readJSON("boxclk.json", 1) || {}).selectedConfig || 0;
|
||||||
let fileName = 'boxclk' + (configNumber > 0 ? `-${configNumber}` : '') + '.json';
|
let fileName = 'boxclk' + (configNumber > 0 ? `-${configNumber}` : '') + '.json';
|
||||||
// Add a condition to check if the file exists, if it does not, default to 'boxclk.json'
|
// Add a condition to check if the file exists, if it does not, default to 'boxclk.json'
|
||||||
|
@ -71,14 +71,6 @@
|
||||||
* ---------------------------------------------------------------
|
* ---------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (let key in boxesConfig) {
|
|
||||||
if (key === 'bg' && boxesConfig[key].img) {
|
|
||||||
bgImage = storage.read(boxesConfig[key].img);
|
|
||||||
} else if (key !== 'selectedConfig') {
|
|
||||||
boxes[key] = Object.assign({}, boxesConfig[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let boxKeys = Object.keys(boxes);
|
let boxKeys = Object.keys(boxes);
|
||||||
|
|
||||||
boxKeys.forEach((key) => {
|
boxKeys.forEach((key) => {
|
||||||
|
@ -224,9 +216,7 @@
|
||||||
return function(boxes) {
|
return function(boxes) {
|
||||||
date = new Date();
|
date = new Date();
|
||||||
g.clear();
|
g.clear();
|
||||||
if (bgImage) {
|
background.fillRect(Bangle.appRect);
|
||||||
g.drawImage(bgImage, 0, 0);
|
|
||||||
}
|
|
||||||
if (boxes.time) {
|
if (boxes.time) {
|
||||||
boxes.time.string = modString(boxes.time, locale.time(date, isBool(boxes.time.short, true) ? 1 : 0));
|
boxes.time.string = modString(boxes.time, locale.time(date, isBool(boxes.time.short, true) ? 1 : 0));
|
||||||
updatePerMinute = isBool(boxes.time.short, true);
|
updatePerMinute = isBool(boxes.time.short, true);
|
||||||
|
@ -412,4 +402,4 @@
|
||||||
widgets.swipeOn();
|
widgets.swipeOn();
|
||||||
modSetColor();
|
modSetColor();
|
||||||
setup();
|
setup();
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -4,6 +4,7 @@
|
||||||
"version": "0.05",
|
"version": "0.05",
|
||||||
"description": "A customizable clock with configurable text boxes that can be positioned to show your favorite background",
|
"description": "A customizable clock with configurable text boxes that can be positioned to show your favorite background",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
|
"dependencies" : { "clockbg":"module" },
|
||||||
"screenshots": [
|
"screenshots": [
|
||||||
{"url":"screenshot.png"},
|
{"url":"screenshot.png"},
|
||||||
{"url":"screenshot-1.png"},
|
{"url":"screenshot-1.png"},
|
||||||
|
|
Loading…
Reference in New Issue