tabs, since app is p. much finalized

master
Le~Kat 2023-02-27 18:41:10 -05:00
parent b2679d7b9b
commit a40d7cee5c
1 changed files with 148 additions and 148 deletions

View File

@ -5,174 +5,174 @@ const SELECTION_ARRAY = [6, 0, 0, 0, 0, 0, 0, 0]; // default to selecting a sing
// function to draw the selection menu // function to draw the selection menu
function drawMenu() { function drawMenu() {
stringArr = new Array ("", "", "", "", "", "", "", ""); stringArr = new Array ("", "", "", "", "", "", "", "");
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
if (SELECTION_ARRAY [i] != 0) { if (SELECTION_ARRAY [i] != 0) {
stringArr [i] = "" + DICE_ARRAY [SELECTION_ARRAY [i]]; stringArr [i] = "" + DICE_ARRAY [SELECTION_ARRAY [i]];
} else { } else {
stringArr [i] = " . "; // more clearly defines where the user can tap stringArr [i] = " . "; // more clearly defines where the user can tap
} }
} }
g.clear(); g.clear();
g.setFont ("Vector", 40); g.setFont ("Vector", 40);
// " ".slice(-3) left-pads all numbers with spaces // " ".slice(-3) left-pads all numbers with spaces
g.drawString ((" " + stringArr [0]).slice (-3), 5, 10); g.drawString ((" " + stringArr [0]).slice (-3), 5, 10);
g.drawString ((" " + stringArr [1]).slice (-3), 5, 50); g.drawString ((" " + stringArr [1]).slice (-3), 5, 50);
g.drawString ((" " + stringArr [2]).slice (-3), 5, 90); g.drawString ((" " + stringArr [2]).slice (-3), 5, 90);
g.drawString ((" " + stringArr [3]).slice (-3), 5, 130); g.drawString ((" " + stringArr [3]).slice (-3), 5, 130);
g.drawString ((" " + stringArr [4]).slice (-3), 96, 10); g.drawString ((" " + stringArr [4]).slice (-3), 96, 10);
g.drawString ((" " + stringArr [5]).slice (-3), 96, 50); g.drawString ((" " + stringArr [5]).slice (-3), 96, 50);
g.drawString ((" " + stringArr [6]).slice (-3), 96, 90); g.drawString ((" " + stringArr [6]).slice (-3), 96, 90);
g.drawString ((" " + stringArr [7]).slice (-3), 96, 130); g.drawString ((" " + stringArr [7]).slice (-3), 96, 130);
} }
// function to change what dice is selected in the menu // function to change what dice is selected in the menu
function touchHandler (button, xy) { function touchHandler (button, xy) {
if (! menu) { // if menu isn't open, open it & return if (! menu) { // if menu isn't open, open it & return
menu = true; menu = true;
drawMenu(); drawMenu();
return; return;
} }
if (xy.x <= 87) { // left if (xy.x <= 87) { // left
if (xy.y <= 43) { // first if (xy.y <= 43) { // first
selection = 0; selection = 0;
} else if (xy.y <= 87) { // second } else if (xy.y <= 87) { // second
selection = 1; selection = 1;
} else if (xy.y <= 131) { // third } else if (xy.y <= 131) { // third
selection = 2; selection = 2;
} else { // fourth } else { // fourth
selection = 3; selection = 3;
} }
} else { // right } else { // right
if (xy.y <= 43) { // first if (xy.y <= 43) { // first
selection = 4; selection = 4;
} else if (xy.y <= 87) { // second } else if (xy.y <= 87) { // second
selection = 5; selection = 5;
} else if (xy.y <= 131) { // third } else if (xy.y <= 131) { // third
selection = 6; selection = 6;
} else { // fourth } else { // fourth
selection = 7; selection = 7;
} }
} }
if (SELECTION_ARRAY [selection] == SELECTION_ARRAY.length - 1) { // if last dice is selected, go back to first if (SELECTION_ARRAY [selection] == SELECTION_ARRAY.length - 1) { // if last dice is selected, go back to first
SELECTION_ARRAY [selection] = 0; SELECTION_ARRAY [selection] = 0;
} else { } else {
SELECTION_ARRAY [selection] += 1; SELECTION_ARRAY [selection] += 1;
} }
drawMenu(); drawMenu();
} }
function accelHandler (xyz) { function accelHandler (xyz) {
if (xyz.diff >= 0.3) { if (xyz.diff >= 0.3) {
menu = false; menu = false;
mutex (rollDice).catch (() => { mutex (rollDice).catch (() => {
return; // not necessary, but prevents spamming the logs return; // not necessary, but prevents spamming the logs
}); });
} }
} }
// returns a resolved promise if no other mutex call is active, all further ones return a rejected one // returns a resolved promise if no other mutex call is active, all further ones return a rejected one
let lock = false; let lock = false;
function mutex (functionRef) { function mutex (functionRef) {
if (lock) { if (lock) {
return Promise.reject (new Error ("mutex is busy")); return Promise.reject (new Error ("mutex is busy"));
} }
lock = true; lock = true;
return new Promise ((resolve, reject) => { return new Promise ((resolve, reject) => {
functionRef().then ((result) => { functionRef().then ((result) => {
lock = false; lock = false;
resolve (result); resolve (result);
}).catch ((error) => { }).catch ((error) => {
lock = false; lock = false;
reject (error); reject (error);
}); });
}); });
} }
// function to roll all selected dice, and display them // function to roll all selected dice, and display them
function rollDice() { function rollDice() {
resultsArr = new Uint8Array (8); resultsArr = new Uint8Array (8);
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
if (SELECTION_ARRAY [i] != 0) { if (SELECTION_ARRAY [i] != 0) {
resultsArr [i] = random (DICE_ARRAY [SELECTION_ARRAY [i]]); resultsArr [i] = random (DICE_ARRAY [SELECTION_ARRAY [i]]);
} }
} }
g.clear(); g.clear();
g.setFont ("Vector", 40); g.setFont ("Vector", 40);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (SELECTION_ARRAY [i] != 0) { if (SELECTION_ARRAY [i] != 0) {
g.drawString ((" " + resultsArr [i]).slice (-3), 5, 10 + 40 * i); g.drawString ((" " + resultsArr [i]).slice (-3), 5, 10 + 40 * i);
} }
} }
for (i = 4; i < 8; i++) { for (i = 4; i < 8; i++) {
if (SELECTION_ARRAY [i] != 0) { if (SELECTION_ARRAY [i] != 0) {
g.drawString ((" " + resultsArr [i]).slice (-3), 96, 10 + 40 * (i - 4)); g.drawString ((" " + resultsArr [i]).slice (-3), 96, 10 + 40 * (i - 4));
} }
} }
return vibrate(); return vibrate();
} }
// triggers the vibration, then pauses before returning // triggers the vibration, then pauses before returning
function vibrate() { function vibrate() {
return new Promise ((resolve, reject) => { return new Promise ((resolve, reject) => {
return Bangle.buzz (50, 1).then ((value) => { return Bangle.buzz (50, 1).then ((value) => {
setTimeout (() => { setTimeout (() => {
resolve (value); resolve (value);
}, 200); }, 200);
}); });
}); });
} }
// returns a integer [1, max] // returns a integer [1, max]
function random (max) { function random (max) {
return Math.round (Math.random() * (max - 1) + 1); return Math.round (Math.random() * (max - 1) + 1);
} }
drawMenu(); drawMenu();
@ -180,6 +180,6 @@ Bangle.on ('touch', touchHandler);
Bangle.on ('accel', accelHandler); Bangle.on ('accel', accelHandler);
setWatch (function() { setWatch (function() {
menu = false; menu = false;
mutex (rollDice); mutex (rollDice);
}, BTN, {repeat: true, edge: "falling", debounce: 10}); }, BTN, {repeat: true, edge: "falling", debounce: 10});