import {compose} from '@avocado/core'; import {Container} from '@avocado/graphics'; import {simpleState, Trait} from '../trait'; const decorate = compose( ); class GraphicalBase extends Trait { static defaultParams() { return { trackPosition: true, }; } static defaultState() { return {}; } constructor(...args) { super(...args); this._container = new Container(); } get container() { return this._container; } listeners() { const listeners = {}; const trackPosition = this.params.get('trackPosition'); if (trackPosition && this._container.isValid) { listeners.traitAdded = (trait) => { if ('positioned' === trait.constructor.type()) { this._container.position = this.entity.position; } }; listeners.xChanged = (x) => { this._container.x = x; }; listeners.yChanged = (y) => { this._container.y = y; }; } return listeners; } } export class Graphical extends decorate(GraphicalBase) {}