39 lines
884 B
JavaScript
39 lines
884 B
JavaScript
import Component from '@/ecs/component.js';
|
|
|
|
export default class Position extends Component {
|
|
instanceFromSchema() {
|
|
const {ecs} = this;
|
|
return class PositionInstance extends super.instanceFromSchema() {
|
|
lastX;
|
|
lastY;
|
|
get x() {
|
|
return super.x;
|
|
}
|
|
set x(x) {
|
|
this.lastX = super.x;
|
|
super.x = x;
|
|
}
|
|
get y() {
|
|
return super.y;
|
|
}
|
|
set y(y) {
|
|
this.lastY = super.y;
|
|
super.y = y;
|
|
}
|
|
get tile() {
|
|
const {TileLayers} = ecs.get(1);
|
|
const {Position: {x, y}} = ecs.get(this.entity);
|
|
const {tileSize} = TileLayers.layers[0];
|
|
return {
|
|
x: (x - (x % tileSize.x)) / tileSize.x,
|
|
y: (y - (y % tileSize.y)) / tileSize.y,
|
|
}
|
|
}
|
|
};
|
|
}
|
|
static properties = {
|
|
x: {type: 'float32'},
|
|
y: {type: 'float32'},
|
|
};
|
|
}
|