Skip to content

Commit 4d1e64b

Browse files
committed
Grid is now updating with dynamic points
1 parent c1faf85 commit 4d1e64b

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

packages/demos/tiled-rendering/README.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ Example of rendering individual tiles:
66
![Basic rendering of layers](resources/demo1.png)
77

88
Example of rendering collision tiles:
9-
![Basic rendering of layers](resources/demo2.png)
9+
![Basic rendering of layers](resources/demo2.png)
10+
11+
Example of random points moving on a static grid
12+
interacting with themselves and colliding with static tiles:
13+
![Basic rendering of layers](resources/demo3.png)
Loading

packages/demos/tiled-rendering/src/MoveSystem.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,18 @@ export default class MoveSystem extends System {
2828
let futureX = tile.properties.x + randomInt(-1, 1);
2929
let futureY = tile.properties.y + randomInt(-1, 1);
3030

31+
const currentTile = tile.properties.tile;
3132
const futureTile = getTileFromCoordinates(futureX, futureY, matrixComponent.properties);
32-
if (matrix[futureTile] === 0) {
33+
if (currentTile === futureTile || matrix[futureTile] === 0) {
3334
tile.properties.x = futureX;
3435
tile.properties.y = futureY;
3536
tile.properties.point.x = futureX;
3637
tile.properties.point.y = futureY;
3738
tile.properties.tile = futureTile;
39+
40+
// Update the tile on the "matrix".
41+
matrix[currentTile] = 0;
42+
matrix[futureTile] = 2;
3843
}
3944
});
4045
}

packages/demos/tiled-rendering/src/index.ts

+14-3
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ import { PreRenderTiledMapSystem } from "@serbanghita-gamedev/renderer";
55
import { IsTiledMap, Renderable } from "@serbanghita-gamedev/component";
66
import { loadSprites } from "./assets";
77
import { Point, Rectangle } from "@serbanghita-gamedev/geometry";
8-
import { randomInt } from "./helpers";
98
import IsMatrix from "./IsMatrix";
109
import { TiledMap } from "@serbanghita-gamedev/tiled";
11-
import { getTileCoordinates } from "@serbanghita-gamedev/matrix";
10+
import { getTileCoordinates, getTileFromCoordinates } from "@serbanghita-gamedev/matrix";
1211
import { QuadTree } from "@serbanghita-gamedev/quadtree";
1312
import QuadTreeSystem from "./QuadTreeSystem";
1413
import IsCollisionTile from "./IsCollisionTile";
@@ -84,10 +83,22 @@ async function setup() {
8483
const x = event.clientX | 0;
8584
const y = event.clientY | 0;
8685

86+
const map = world.getEntity("map");
87+
if (!map) {
88+
throw new Error(`Map entity has not been defined yet.`);
89+
}
90+
const mapMatrix = map.getComponent(IsMatrix);
91+
const tile = getTileFromCoordinates(x, y, mapMatrix.properties);
92+
93+
if (mapMatrix.properties.matrix[tile] !== 0) {
94+
return;
95+
}
96+
8797
const playerId = `player-${x}-${y}`;
8898
const player = world.createEntity(playerId);
8999
const point = new Point(x, y, playerId);
90-
player.addComponent(IsCollisionTile, { x, y, point });
100+
101+
player.addComponent(IsCollisionTile, { x, y, point, tile });
91102
player.addComponent(IsRenderedInForeground);
92103
player.addComponent(IsPlayer);
93104
quadtree.addPoint(point);

0 commit comments

Comments
 (0)