2019-03-17 23:45:48 -05:00
|
|
|
import {compose} from '@avocado/core';
|
|
|
|
import {Vector} from '@avocado/math';
|
|
|
|
|
|
|
|
import {simpleState, Trait} from '../trait';
|
|
|
|
|
|
|
|
const decorate = compose(
|
2019-03-18 20:05:11 -05:00
|
|
|
simpleState('direction', {
|
|
|
|
track: true,
|
|
|
|
}),
|
2019-03-17 23:45:48 -05:00
|
|
|
);
|
|
|
|
|
|
|
|
class DirectionalBase extends Trait {
|
|
|
|
|
|
|
|
static defaultParams() {
|
|
|
|
return {
|
|
|
|
directionCount: 1,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
static defaultState() {
|
|
|
|
return {
|
|
|
|
direction: 0,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
listeners() {
|
|
|
|
return {
|
|
|
|
movementRequest: (vector) => {
|
|
|
|
this.entity.direction = Vector.toDirection(
|
|
|
|
vector,
|
|
|
|
this.params.get('directionCount')
|
|
|
|
);
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
export class Directional extends decorate(DirectionalBase) {}
|