avocado-old/packages/entity/traits/directional.trait.js
2019-04-19 12:30:11 -05:00

42 lines
779 B
JavaScript

import {compose} from '@avocado/core';
import {Vector} from '@avocado/math';
import {StateProperty, Trait} from '../trait';
const decorate = compose(
StateProperty('direction', {
track: true,
}),
);
export class Directional extends decorate(Trait) {
static defaultParams() {
return {
directionCount: 1,
trackMovement: true,
};
}
static defaultState() {
return {
direction: 0,
};
}
initialize() {
this.directionCount = this.params.get('directionCount');
}
listeners() {
const listeners = {};
if (this.params.get('trackMovement')) {
listeners.movementRequest = (vector) => {
this.entity.direction = Vector.toDirection(vector, this.directionCount);
};
}
return listeners;
}
}