forked from FOSS/BangleApps
Sort kanas by AIUEO instead of AEIOU
parent
2b66f37045
commit
9a91595e41
|
@ -8,3 +8,4 @@
|
||||||
0.08: Speedup next/prev and fix autogenerated hiragana bitmaps
|
0.08: Speedup next/prev and fix autogenerated hiragana bitmaps
|
||||||
0.09: Optimize loading and rendering times, introduce transition animations
|
0.09: Optimize loading and rendering times, introduce transition animations
|
||||||
0.10: Swipe up/down for Hiragana/Katakana, right/left for next/prev letter
|
0.10: Swipe up/down for Hiragana/Katakana, right/left for next/prev letter
|
||||||
|
0.11: Sort by 'AIUEO' instead of 'AEIOU', draw Widgets every minute :?
|
||||||
|
|
|
@ -1,14 +1,19 @@
|
||||||
# kanawatch
|
# kanawatch
|
||||||
|
|
||||||
A simple watchface design with hiragana and katakana
|
A simple watchface design perfect for learning hiragana and katakana.
|
||||||
cards for learning.
|
|
||||||
|
|
||||||
## Changelog
|
* Interact with the interface using swipes
|
||||||
|
* Swipe up/down to switch between hiragana (H) and katakana (K)
|
||||||
|
* Swipe right/left to display the next or previous letter
|
||||||
|
* Tap to change accent color (always 24h, not configurable)
|
||||||
|
* Non-intrustive transition animations
|
||||||
|
* Low battery consumption
|
||||||
|
|
||||||
0.01: First release
|
## TODO
|
||||||
0.02: Improve battery life, sprite resolution, fix launcher issue and unaligned text bug
|
|
||||||
0.03: Reduce code size, refresh once a minute and faster refresh
|
* Only render what needs to be repainted
|
||||||
0.04: Show a random kana every minute to improve learning
|
* Dont redraw the widgets if not necessary
|
||||||
|
* Minigame to guess kata/hira phonem
|
||||||
|
|
||||||
## Author
|
## Author
|
||||||
|
|
||||||
|
@ -16,4 +21,5 @@ Written by pancake in 2022, maintained during 2023 and powered by insomnia
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||

|

|
||||||
|

|
||||||
|
|
|
@ -131,16 +131,26 @@ WO: image(52, 49, "AAMf+AFDgP+Bgk/8AFDgYMM/gkD/4AC+EBAof/BkA5FhEAg45Cg/AgF/AQMBB
|
||||||
N: image(54, 49, "AAMHAwsf8AGE/+AAocD/wTF+AGEv/ACZUP/ATKgP/CYv8Awk/IQgTBIQkHCYxCFCYxWTIQxWGFAhCBAwkPAwJCE/5KDCYQiBhhCBAwJlBn+Aj/+/49BDoP/8IDBgf8IQIDBKgUf/EPLAJUBv/gn/AFgKZCAIMHCIP4DQSXBAIIaC/+BCIIaBYwKZCLwIuBCYLRCFwIKBEYX/CYUfEYP4TIRACCYQ+BwZUBDwIYBOgITCRAQVCEIP//0BYISjB+CtDUYRNBAwQ5Bg7gDBQIA="),
|
N: image(54, 49, "AAMHAwsf8AGE/+AAocD/wTF+AGEv/ACZUP/ATKgP/CYv8Awk/IQgTBIQkHCYxCFCYxWTIQxWGFAhCBAwkPAwJCE/5KDCYQiBhhCBAwJlBn+Aj/+/49BDoP/8IDBgf8IQIDBKgUf/EPLAJUBv/gn/AFgKZCAIMHCIP4DQSXBAIIaC/+BCIIaBYwKZCLwIuBCYLRCFwIKBEYX/CYUfEYP4TIRACCYQ+BwZUBDwIYBOgITCRAQVCEIP//0BYISjB+CtDUYRNBAwQ5Bg7gDBQIA="),
|
||||||
|
|
||||||
};
|
};
|
||||||
|
const keys = [
|
||||||
|
"A","I","U","E","O",
|
||||||
|
"HA","HI","HU","HE","HO",
|
||||||
|
"KA","KI","KU","KE","KO",
|
||||||
|
"MA","MI","MU","ME","MO",
|
||||||
|
"NA","NI","NU","NE","NO",
|
||||||
|
"RA","RI","RU","RE","RO",
|
||||||
|
"SA","SI","SU","SE","SO",
|
||||||
|
"TA","TI","TU","TE","TO",
|
||||||
|
"WA","WO","YO","YU","N",
|
||||||
|
];
|
||||||
let kana = katakana.KA;
|
let kana = katakana.KA;
|
||||||
let scroll = 0;
|
let scroll = 0;
|
||||||
const keys = Object.keys(katakana).sort();
|
// const keys = Object.keys(katakana).sort();
|
||||||
|
// console.log(keys);
|
||||||
let hiramode = false;
|
let hiramode = false;
|
||||||
let curkana = 'KA';
|
let curkana = 'KA';
|
||||||
|
|
||||||
console.log("StartupTime: "+startupTime.diff());
|
console.log("StartupTime: "+startupTime.diff());
|
||||||
|
|
||||||
|
|
||||||
function next () {
|
function next () {
|
||||||
const off = keys.indexOf(curkana);
|
const off = keys.indexOf(curkana);
|
||||||
if (off !== -1 && off + 1 < keys.length) {
|
if (off !== -1 && off + 1 < keys.length) {
|
||||||
|
@ -318,7 +328,7 @@ function hiraPush(d,dx) {
|
||||||
}
|
}
|
||||||
zpos -= 0.04;
|
zpos -= 0.04;
|
||||||
render(ohhmm);
|
render(ohhmm);
|
||||||
setTimeout(paint, 5);
|
setTimeout(paint, 100);
|
||||||
}
|
}
|
||||||
setTimeout (paint, 5);
|
setTimeout (paint, 5);
|
||||||
}
|
}
|
||||||
|
@ -352,7 +362,7 @@ function hiraSwipe(d,dx, dostuff) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (dx) {
|
if (dx) {
|
||||||
xpos += (4*d);
|
xpos += (8*d);
|
||||||
} else {
|
} else {
|
||||||
ypos -= (4*d);
|
ypos -= (4*d);
|
||||||
}
|
}
|
||||||
|
@ -405,5 +415,13 @@ g.clear(true);
|
||||||
Bangle.setUI('clock');
|
Bangle.setUI('clock');
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
||||||
|
// redraw widgets every 10 minutes
|
||||||
|
setInterval(function() {
|
||||||
|
// maybe not always necessary
|
||||||
|
Bangle.drawWidgets();
|
||||||
|
}, 1000 * 60 * 10);
|
||||||
tickWatch();
|
tickWatch();
|
||||||
setInterval(tickWatch, 1000 * 60);
|
setInterval(tickWatch, 1000 * 60);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "kanawatch",
|
"id": "kanawatch",
|
||||||
"name": "Kanawatch",
|
"name": "Kanawatch",
|
||||||
"shortName": "Kanawatch",
|
"shortName": "Kanawatch",
|
||||||
"version": "0.10",
|
"version": "0.11",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"description": "Learn Hiragana and Katakana",
|
"description": "Learn Hiragana and Katakana",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
|
|
Loading…
Reference in New Issue