57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import {
|
|
setPixelsInRect,
|
|
clearScreen,
|
|
fillRect,
|
|
} from "./window.ts";
|
|
import { font } from "./font.ts";
|
|
// import { keyDown, keyPressed, keyReleased } from "./keyboard.ts";
|
|
import { addToContext, runCode } from "./runcode.ts";
|
|
import { resetRepl } from "./repl.ts";
|
|
import { COLOR } from "./colors.ts";
|
|
import { getSheet, getCodeSheet } from "./sheet.ts";
|
|
|
|
export const drawSprite = (x: number, y: number, spr: number) => {
|
|
const {sheet_type, value: sprites} = getSheet(2);
|
|
if (sheet_type !== "spritesheet") {
|
|
throw "Trying to run a non-code sheet as code."
|
|
}
|
|
setPixelsInRect(x, y, 8, sprites[spr]);
|
|
}
|
|
|
|
export const drawIcon = (x: number, y: number, icon: Array<number>, color: number) => {
|
|
setPixelsInRect(x, y, 8, icon.map(n => n*color));
|
|
}
|
|
|
|
export const drawChar = (x: number, y: number, char: string, color: number) => {
|
|
setPixelsInRect(x, y, 4, font[char].map(n => n*color));
|
|
}
|
|
|
|
export const drawText = (x: number, y: number, text: string, color?: number) => {
|
|
[...text].forEach((char, i) => {
|
|
drawChar(x+4*i, y, char, color ?? COLOR.WHITE);
|
|
});
|
|
}
|
|
|
|
const faux = {
|
|
cls: () => {
|
|
resetRepl();
|
|
clearScreen();
|
|
},
|
|
spr: drawSprite,
|
|
txt: drawText,
|
|
rect: fillRect,
|
|
// key_down: keyDown,
|
|
// key_pressed: keyPressed,
|
|
// key_released: keyReleased,
|
|
code: (n: number) => {
|
|
return runCode(getCodeSheet(n));
|
|
},
|
|
log: console.log,
|
|
JSON: JSON,
|
|
};
|
|
|
|
for (const key in faux) {
|
|
addToContext(key, faux[key as keyof typeof faux]);
|
|
}
|
|
|
|
export default faux; |