Implement more flexible handling of entities and collidables
This commit is contained in:
parent
40339947d1
commit
5eae6f29a8
11 changed files with 204 additions and 73 deletions
6
src/model/data/collision.ts
Normal file
6
src/model/data/collision.ts
Normal 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
19
src/model/data/entity.ts
Normal 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 || [];
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
Reference in a new issue