Implement more flexible handling of entities and collidables

This commit is contained in:
Matthias Schiffer 2018-11-08 22:03:08 +01:00
parent 40339947d1
commit 5eae6f29a8
Signed by: neocturne
GPG key ID: 16EF3F64CB201D9C
11 changed files with 204 additions and 73 deletions

View file

@ -0,0 +1,6 @@
export interface CollisionPolygon {
readonly type: 'polygon';
readonly vertices: Array<[number, number]>;
}
export type Collision = CollisionPolygon;

19
src/model/data/entity.ts Normal file
View file

@ -0,0 +1,19 @@
import { Collision } from './collision';
export interface EntityDataInput {
readonly sprite: string;
readonly anchor?: [number, number];
readonly collision?: Collision[];
}
export class EntityData {
public readonly sprite: string;
public readonly anchor: [number, number];
public readonly collision: Collision[];
constructor(input: EntityDataInput) {
this.sprite = input.sprite;
this.anchor = input.anchor || [0.5, 0.5];
this.collision = input.collision || [];
}
}

View file

@ -1,11 +1,6 @@
export interface CollisionPolygon {
readonly type: 'polygon';
readonly vertices: Array<[number, number]>;
}
import { Collision } from './collision';
export type Collision = CollisionPolygon;
export interface Input {
export interface MapDataInput {
readonly tiles: string[];
readonly layers: number[][][];
readonly collision: Collision[];
@ -19,7 +14,7 @@ export class MapData {
public readonly width: number;
public readonly height: number;
constructor(data: Input) {
constructor(data: MapDataInput) {
this.tiles = data.tiles;
this.layers = data.layers;
this.collision = data.collision;