dirty initial commit

This commit is contained in:
Zutatensuppe 2020-11-07 11:35:29 +01:00
commit 2351c93677
24 changed files with 2203 additions and 0 deletions

58
game/CanvasAdapter.js Normal file
View file

@ -0,0 +1,58 @@
import BoundingRectangle from './BoundingRectangle.js'
export default class CanvasAdapter {
constructor(canvas) {
this._canvas = canvas
this._ctx = this._canvas.getContext('2d')
this._w = this._canvas.width
this._h = this._canvas.height
this._boundingRect = new BoundingRectangle(0, this._w - 1, 0, this._h - 1)
this._imageData = this._ctx.createImageData(this._w, this._h)
this._data = this._imageData.data
this.width = this._w
this.height = this._h
}
clear() {
this._imageData = this._ctx.createImageData(this._w, this._h)
this._data = this._imageData.data
this.apply()
}
getPix(x, y, out) {
if (x < 0 || y < 0 || x >= this._w || y >= this._h) {
return false;
}
x = Math.round(x)
y = Math.round(y)
const idx = (y * 4 * this._w) + (x * 4)
out[0] = this._data[idx]
out[1] = this._data[idx + 1]
out[2] = this._data[idx + 2]
out[3] = this._data[idx + 3]
return true
}
putPix(x, y, rgba) {
if (x < 0 || y < 0 || x >= this._w || y >= this._h) {
return null;
}
x = Math.round(x)
y = Math.round(y)
const idx = (y * 4 * this._w) + (x * 4)
this._data[idx] = rgba[0]
this._data[idx + 1] = rgba[1]
this._data[idx + 2] = rgba[2]
this._data[idx + 3] = rgba[3]
}
getBoundingRect() {
return this._boundingRect
}
apply() {
this._ctx.putImageData(this._imageData, 0, 0)
}
}