Some slight refactoring
This commit is contained in:
36
util.ts
36
util.ts
@@ -44,4 +44,38 @@ export const drawTransparentRect = (x: number, y: number, w: number, h: number)
|
||||
const jy = Math.floor(j/w);
|
||||
setPixelColor(x+jx, y+jy, (jx+jy)%2 ? COLOR.BLACK : COLOR.DARKGRAY);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export const subgrid = <T>(array: Array<T>, gridW: number, x: number, y: number, w: number, h: number): Array<T> => {
|
||||
return Array(h).fill(0).flatMap((_, i) => {
|
||||
const start = (y+i)*gridW+x;
|
||||
return array.slice(start, start+w);
|
||||
})
|
||||
}
|
||||
|
||||
export const LinearGrid = <T>(array: Array<T>, gridW: number) => {
|
||||
return {
|
||||
get(x: number, y: number) {
|
||||
return array[this.coordsToIndex(x, y)]
|
||||
},
|
||||
getIndex(i: number) {
|
||||
return array[i];
|
||||
},
|
||||
set(x: number, y: number, value: T) {
|
||||
array[this.coordsToIndex(x, y)] = value;
|
||||
},
|
||||
setIndex(i: number, value: T) {
|
||||
array[i] = value;
|
||||
},
|
||||
values: array,
|
||||
indexToCoords: (i: number) => {
|
||||
return [i%gridW, Math.floor(i/gridW)];
|
||||
},
|
||||
coordsToIndex: (x: number, y: number) => {
|
||||
return y*gridW+x;
|
||||
},
|
||||
// TODO: make alterations to subgrid affect parent grid
|
||||
subgrid: (x: number, y: number, w: number, h: number) => LinearGrid(subgrid(array, gridW, x, y, w, h), w),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user