125 lines
2.9 KiB
JavaScript
125 lines
2.9 KiB
JavaScript
import document from "document";
|
|
import * as characters from "characters";
|
|
|
|
function getSquares(character) {
|
|
return characters.numbers[character];
|
|
}
|
|
|
|
function splitNumber(number) {
|
|
let numberString = number.toString();
|
|
return splitString(numberString);
|
|
}
|
|
|
|
function splitString(input) {
|
|
let chars = [];
|
|
for (let i = 0; i < input.length; i += 1) {
|
|
chars.push(input.charAt(i));
|
|
}
|
|
return chars;
|
|
}
|
|
|
|
const smallDigits = ['0','1','2','3','4','5','6','7','8','9','/'];
|
|
|
|
export function setSmallDigits(name, input, rightJustify) {
|
|
let chars = [];
|
|
let smallNumElem = document.getElementById(name);
|
|
|
|
if (typeof input === 'number') {
|
|
chars = splitNumber(input);
|
|
} else if (typeof input === 'string') {
|
|
chars = splitString(input);
|
|
}
|
|
if (rightJustify) {
|
|
chars = chars.reverse();
|
|
}
|
|
for (let i=0; i<6; i++) {
|
|
let digitElem = smallNumElem.getElementById('digit'+(i+1));
|
|
let char = chars[i];
|
|
if (rightJustify) {
|
|
char = chars[5-i];
|
|
}
|
|
if (typeof char === 'number') {
|
|
char = char.toString();
|
|
}
|
|
if (typeof char !== 'undefined' && smallDigits.indexOf(char) > -1) {
|
|
if (char == "/") {
|
|
char = "slash";
|
|
}
|
|
digitElem.href="img/"+char+".png";
|
|
} else {
|
|
digitElem.href="";
|
|
}
|
|
}
|
|
}
|
|
|
|
export function setDigits(chars, colors) {
|
|
let matrix = [
|
|
[0,0,0,0,0,0,0],
|
|
[0,0,0,0,0,0,0],
|
|
[0,0,0,0,0,0,0],
|
|
[0,0,0,0,0,0,0],
|
|
[0,0,0,0,0,0,0],
|
|
[0,0,0,0,0,0,0],
|
|
[0,0,0,0,0,0,0],
|
|
];
|
|
|
|
for (let char = 0; char < 4; char++) {
|
|
let squares = getSquares(chars[char]);
|
|
let offsX = 0;
|
|
let offsY = 0;
|
|
let color = 0;
|
|
switch (char) {
|
|
case 0:
|
|
color = 1;
|
|
break;
|
|
case 1:
|
|
color = 1;
|
|
offsX = 4;
|
|
break;
|
|
case 2:
|
|
color = 2;
|
|
offsY = 2;
|
|
break;
|
|
case 3:
|
|
color = 2;
|
|
offsX = 4;
|
|
offsY = 2;
|
|
break;
|
|
}
|
|
for (let i = 0; i < (characters.charwidth*characters.charheight); i++) {
|
|
let row = Math.floor(i/characters.charwidth);
|
|
let col = i%characters.charwidth;
|
|
matrix[row+offsY][col+offsX] += color*squares[row][col];
|
|
}
|
|
}
|
|
|
|
for (let i = 0; i < (7*7); i++) {
|
|
let col = i%7;
|
|
let row = Math.floor(i/7);
|
|
let square = matrix[row][col];
|
|
let locationCode = (row+1)+'-'+(col+1);
|
|
let squareElem = document.getElementById('squares').getElementById(locationCode);
|
|
|
|
if (square >= 1) {
|
|
squareElem.style.display = 'inline';
|
|
squareElem.href = "img/"+locationCode+".png";
|
|
switch (square) {
|
|
case 1:
|
|
squareElem.layer = 1;
|
|
squareElem.style.fill = colors[0];
|
|
break;
|
|
case 2:
|
|
squareElem.layer = 2;
|
|
squareElem.style.fill = colors[1];
|
|
break;
|
|
case 3:
|
|
squareElem.layer = 3;
|
|
squareElem.style.fill = colors[2];
|
|
break;
|
|
}
|
|
} else {
|
|
squareElem.style.display = 'none';
|
|
squareElem.href = "";
|
|
}
|
|
}
|
|
} |