mirror of https://github.com/espruino/BangleApps
Added NATO Alphabet app files
parent
1689973abc
commit
0aad2a3082
|
@ -0,0 +1,13 @@
|
|||
{ "id": "nato",
|
||||
"name": "NATO Alphabet",
|
||||
"shortName" : "NATOAlphabet",
|
||||
"icon": "nato.png",
|
||||
"version":"0.01",
|
||||
"type": "app",
|
||||
"description": "Learn the NATO Phonetic alphabet plus some numbers.",
|
||||
"tags": "app,learn,visual",
|
||||
"storage": [
|
||||
{"name":"nato.app.js","url":"nato.js"},
|
||||
{"name":"nato.img","url":"nato-icon.js","evaluate":true}
|
||||
],
|
||||
},
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwwgFCiIABiAGFiINJAAUS///CAgGEgMT//zBoYXFmIiCC40fEooXF+QXJn4lCC5ARDC4oFC//xMAoXDJAQXFBgY9DC4wKCC4p2CPA4XDCQQXEOwXxPA4XBEQJICC4p2BmICCC44KBJAIXEiIJBkMvPAwXCWgYXFAgQMBPAoXCBwUxC4jtDeI4XDJAQXDFYXxHAoXGJAYXDLYPykUieIwXDJAYXDG4IAEPAgXCRgJICPYoAEPAgXDZ4TcDmYXGMAgXDUAZiEPwIABCALEBC5BZC+YQCRwRsEC45ID+S5BCAkBEYJ4DC4hID+IbCIAYjCCIYXGEgMxXoJwEgI3CA4JQDAAwaBmQGDFIQ3CC5UzkSLBdwIIDmYXCWY4jBCAJBCPYQ0EC5bXGkLuDC5QtEAAXzPoZMCmZwB+YFCbYkykQFCVoZMDWALnDQwRjDeoZIDZAgJCWwYeBFATWFC5LuHawgXKdwyJDD4YXIOAMzH4gICmIXKEwQXXkQXFKAKQFC85HNO64XDU44XMX48Sa5zvCmJICA4YXLE4fziIACJ4PyM4gXHCAQwBCwI2GC5JADAApGFC5ERmYWFFwwXHDARJCMgYWFB4MTmYiFLgMjCwMyiIuGE4QABNIyPDBQgA=="))
|
|
@ -0,0 +1,116 @@
|
|||
/**
|
||||
* Teach a user the NATO Phonetic Alphabet + numbers
|
||||
*/
|
||||
|
||||
/**
|
||||
* Constants
|
||||
*/
|
||||
const FONT_NAME = 'Vector12';
|
||||
const FONT_SIZE = 80;
|
||||
const SCREEN_PIXELS = 240;
|
||||
const UNIT = 100;
|
||||
const NATO_MAP = {
|
||||
A: 'ALFA',
|
||||
B: 'BRAVO',
|
||||
C: 'CHARLIE',
|
||||
D: 'DELTA',
|
||||
E: 'ECHO',
|
||||
F: 'FOXTROT',
|
||||
G: 'GOLF',
|
||||
H: 'HOTEL',
|
||||
I: 'INDIA',
|
||||
J: 'JULIETT',
|
||||
K: 'KILO',
|
||||
L: 'LIMA',
|
||||
M: 'MIKE',
|
||||
N: 'NOVEMBER',
|
||||
O: 'OSCAR',
|
||||
P: 'PAPA',
|
||||
Q: 'QUEBEC',
|
||||
R: 'ROMEO',
|
||||
S: 'SIERRA',
|
||||
T: 'TANGO',
|
||||
U: 'UNIFORM',
|
||||
V: 'VICTOR',
|
||||
W: 'WHISKEY',
|
||||
X: 'X-RAY',
|
||||
Y: 'YANKEE',
|
||||
Z: 'ZULU',
|
||||
'0': 'ZE-RO',
|
||||
'1': 'WUN',
|
||||
'2': 'TOO',
|
||||
'3': 'TREE',
|
||||
'4': 'FOW-ER',
|
||||
'5': 'FIFE',
|
||||
'6': 'SIX',
|
||||
'7': 'SEV-EN',
|
||||
'8': 'AIT',
|
||||
'9': 'NIN-ER',
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the local state
|
||||
*/
|
||||
let INDEX = 0;
|
||||
let showLetter = true;
|
||||
|
||||
/**
|
||||
* Utility functions for writing text, changing state
|
||||
*/
|
||||
const writeText = (txt) => {
|
||||
g.clear();
|
||||
g.setFont(FONT_NAME, FONT_SIZE);
|
||||
|
||||
var width = g.stringWidth(txt);
|
||||
|
||||
var fontFix = FONT_SIZE;
|
||||
while(width > SCREEN_PIXELS-10){
|
||||
fontFix--;
|
||||
g.setFont(FONT_NAME, fontFix);
|
||||
width = g.stringWidth(txt);
|
||||
}
|
||||
g.drawString(txt, (SCREEN_PIXELS / 2) - (width / 2), SCREEN_PIXELS / 2);
|
||||
};
|
||||
const writeLetter = () => {
|
||||
writeText(Object.keys(NATO_MAP)[INDEX]);
|
||||
};
|
||||
const writeCode = () => {
|
||||
writeText(NATO_MAP[Object.keys(NATO_MAP)[INDEX]]);
|
||||
};
|
||||
const toggle = () => {
|
||||
showLetter = !showLetter;
|
||||
if(showLetter){
|
||||
writeLetter();
|
||||
}else {
|
||||
writeCode();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Bootstrapping
|
||||
*/
|
||||
g.clear();
|
||||
g.setFont(FONT_NAME, FONT_SIZE);
|
||||
g.setColor(0, 1, 0);
|
||||
g.setFontAlign(-1, 0, 0);
|
||||
|
||||
|
||||
const step = (positive) => () => {
|
||||
if (positive) {
|
||||
INDEX = INDEX + 1;
|
||||
if (INDEX > Object.keys(NATO_MAP).length - 1) INDEX = 0;
|
||||
} else {
|
||||
INDEX = INDEX - 1;
|
||||
if (INDEX < 0) INDEX = Object.keys(NATO_MAP).length - 1;
|
||||
}
|
||||
showLetter = true;
|
||||
writeLetter();
|
||||
};
|
||||
|
||||
writeLetter();
|
||||
|
||||
// Press the middle button to see the NATO Phonetic wording
|
||||
setWatch(toggle, BTN2, { repeat: true });
|
||||
// Allow user to switch between letters
|
||||
setWatch(step(true), BTN1, { repeat: true });
|
||||
setWatch(step(false), BTN3, { repeat: true });
|
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
Loading…
Reference in New Issue