avocado-old/packages/entity/traits/existent.js

45 lines
781 B
JavaScript
Raw Normal View History

2019-03-17 23:45:48 -05:00
import {compose} from '@avocado/core';
2019-03-23 23:24:18 -05:00
import {StateProperty, Trait} from '../trait';
2019-03-17 23:45:48 -05:00
const decorate = compose(
2019-03-23 23:24:18 -05:00
StateProperty('name'),
StateProperty('isTicking'),
2019-03-17 23:45:48 -05:00
);
class ExistentBase extends Trait {
static defaultState() {
return {
name: 'Untitled entity',
isTicking: true,
2019-03-17 23:45:48 -05:00
};
}
2019-03-19 11:25:42 -05:00
initialize() {
this._isTicking = this.params.get('isTicking');
}
2019-03-20 18:32:54 -05:00
methods() {
2019-03-17 23:45:48 -05:00
return {
destroy: () => {
this.entity.isTicking = false;
2019-03-17 23:45:48 -05:00
this.entity.emit('destroy');
this.entity.emit('destroyed');
},
tick: (elapsed) => {
if (!this.entity.isTicking) {
2019-03-17 23:45:48 -05:00
return;
}
this.entity.emit('tick', elapsed);
},
};
}
}
export class Existent extends decorate(ExistentBase) {}