Camera implemented.

This commit is contained in:
Mal
2020-02-09 22:06:59 +01:00
parent d43cd56d65
commit f6890eec24
8 changed files with 116 additions and 23 deletions

View File

@@ -140,10 +140,15 @@ export default class RetroArchitecture
return 0;
}
draw(context)
draw(context, camera = null)
{
for (let y = 0; y < this.rows; y++) {
for (let x = 0; x < this.columns; x++) {
let viewX = parseInt(Math.floor(Math.max(0, camera.position.x) / this.tileWidth));
let viewWidth = parseInt(Math.min(Math.ceil(camera.width), this.columns));
let viewY = parseInt(Math.floor(Math.max(0, camera.position.y)) / this.tileHeight);
let viewHeight = parseInt(Math.min(Math.ceil(camera.height), this.rows));
for (let y = viewY; y < viewHeight; y++) {
for (let x = viewX; x < viewWidth; x++) {
let field = this.matrix[y][x];
if (field !== null) {
@@ -153,8 +158,8 @@ export default class RetroArchitecture
0,
this.tileWidth,
this.tileHeight,
x * this.tileWidth,
y * this.tileHeight,
x * this.tileWidth - camera.position.x,
y * this.tileHeight - camera.position.y,
this.tileWidth,
this.tileHeight
);