Camera and outline rect functions

This commit is contained in:
dylan
2023-05-10 00:06:08 -07:00
parent b394f81477
commit e955a4c00d
6 changed files with 59 additions and 24 deletions

View File

@@ -4,7 +4,7 @@ import {
gl,
} from "./deps.ts";
export {mainloop} from "./deps.ts";
import { palette } from "./colors.ts";
import { COLOR, palette } from "./colors.ts";
export const gameWindow = createWindow({
title: "Faux",
@@ -128,7 +128,12 @@ const allPixelColors = new Float32Array(
Array(pixelsPerRow*pixelsPerRow).fill(null).flatMap(() => c(1))
)
export const setPixelColor = (x: number, y: number, color: number) => {
export const cameraPos = {
x: 0,
y: 0,
}
export const setPixelColorRaw = (x: number, y: number, color: number) => {
if (x < 0 || y < 0 || x > 127 || y > 127) {
return;
}
@@ -138,18 +143,33 @@ export const setPixelColor = (x: number, y: number, color: number) => {
}
}
export const setPixelColor = (x: number, y: number, color: number) => {
return setPixelColorRaw(x - cameraPos.x, y - cameraPos.y, color);
}
export const setPixelsInRect = (x: number, y: number, w: number, pixels: Array<number>) => {
for (let i = 0; i < pixels.length; i++) {
setPixelColor(x+i%w, y+Math.floor(i/w), pixels[i]);
}
}
export const setPixelsInRectRaw = (x: number, y: number, w: number, pixels: Array<number>) => {
for (let i = 0; i < pixels.length; i++) {
setPixelColorRaw(x+i%w, y+Math.floor(i/w), pixels[i]);
}
}
export const fillRect = (x: number, y: number, w: number, h: number, color: number) => {
setPixelsInRect(x, y, w, Array(w*h).fill(color));
}
export const clearScreen = () => {
allPixelColors.fill(0);
export const fillRectRaw = (x: number, y: number, w: number, h: number, color: number) => {
setPixelsInRectRaw(x, y, w, Array(w*h).fill(color));
}
export const clearScreen = (color?: number) => {
fillRectRaw(0, 0, 128, 128, color ?? COLOR.BLACK);
// allPixelColors.fill(0);
}
export const frame = () => {