76 lines
1.6 KiB
TypeScript
76 lines
1.6 KiB
TypeScript
import {
|
|
setPixelsInRect,
|
|
clearScreen,
|
|
} from "./window.ts";
|
|
import { font } from "./font.ts";
|
|
import { keyDown, keyPressed, keyReleased } from "./keyboard.ts";
|
|
import { addToContext } from "./runcode.ts";
|
|
|
|
// deno-fmt-ignore
|
|
const sprites = [
|
|
[
|
|
2, 2, 2, 2, 2, 2, 2, 2,
|
|
2, 1, 1, 1, 1, 1, 1, 2,
|
|
2, 1, 1, 1, 1, 1, 1, 2,
|
|
2, 1, 1, 1, 1, 1, 1, 2,
|
|
2, 1, 1, 1, 1, 1, 1, 2,
|
|
2, 1, 1, 1, 1, 1, 1, 2,
|
|
2, 1, 1, 1, 1, 1, 1, 2,
|
|
2, 2, 2, 2, 2, 2, 2, 2,
|
|
],
|
|
[
|
|
2, 2, 2, 2, 2, 2, 2, 2,
|
|
2, 3, 3, 1, 1, 3, 3, 2,
|
|
2, 3, 3, 1, 1, 3, 3, 2,
|
|
2, 1, 1, 1, 1, 1, 1, 2,
|
|
2, 1, 1, 1, 1, 1, 1, 2,
|
|
2, 3, 3, 1, 1, 3, 3, 2,
|
|
2, 3, 3, 1, 1, 3, 3, 2,
|
|
2, 2, 2, 2, 2, 2, 2, 2,
|
|
],
|
|
[
|
|
2, 2, 2, 2, 2, 2, 2, 2,
|
|
2, 4, 4, 4, 4, 5, 5, 2,
|
|
2, 4, 4, 4, 5, 5, 5, 2,
|
|
2, 4, 4, 5, 5, 5, 6, 2,
|
|
2, 4, 5, 5, 5, 6, 6, 2,
|
|
2, 5, 5, 5, 6, 6, 6, 2,
|
|
2, 5, 5, 6, 6, 6, 6, 2,
|
|
2, 2, 2, 2, 2, 2, 2, 2,
|
|
],
|
|
]
|
|
|
|
const drawSprite = (x: number, y: number, spr: number) => {
|
|
setPixelsInRect(x, y, 8, sprites[spr]);
|
|
}
|
|
|
|
const drawChar = (x: number, y: number, char: string) => {
|
|
setPixelsInRect(x, y, 4, font[char]);
|
|
}
|
|
|
|
const drawText = (x: number, y: number, text: string) => {
|
|
[...text].forEach((char, i) => {
|
|
drawChar(x+4*i, y, char);
|
|
});
|
|
}
|
|
|
|
const drawRect = (x: number, y: number, w: number, h: number, color: number) => {
|
|
setPixelsInRect(x, y, w, Array(w*h).fill(color));
|
|
}
|
|
|
|
const faux = {
|
|
clear_screen: clearScreen,
|
|
draw_sprite: drawSprite,
|
|
draw_text: drawText,
|
|
draw_rect: drawRect,
|
|
key_down: keyDown,
|
|
key_pressed: keyPressed,
|
|
key_released: keyReleased,
|
|
log: console.log,
|
|
};
|
|
|
|
for (const key in faux) {
|
|
addToContext(key, faux[key as keyof typeof faux]);
|
|
}
|
|
|
|
export default faux; |