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"; import { saveCart, loadCart } from "./cart.ts"; let spritesheet: number | null = null; export const useSpritesheet = (sheet: number) => { spritesheet = sheet; } export const drawSprite = (x: number, y: number, spr: number) => { if (!spritesheet) { return; } const {sheet_type, value: sprites} = getSheet(spritesheet); 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, 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(); }, sprsht: useSpritesheet, spr: drawSprite, txt: drawText, rect: fillRect, btn: keyDown, btnp: keyPressed, btnr: keyReleased, code: (n: number) => { return runCode(getCodeSheet(n)); }, log: console.log, JSON: JSON, save: saveCart, load: loadCart, }; for (const key in faux) { addToContext(key, faux[key as keyof typeof faux]); } export default faux;