import {compose} from '@avocado/core'; import {hasGraphics, 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); if (hasGraphics) { this._container = new Container(); } } get container() { return this._container; } listeners() { const listeners = {}; const trackPosition = this.params.get('trackPosition'); if (trackPosition && hasGraphics) { listeners.traitAdded = (trait) => { if ('positioned' === trait.constructor.type()) { this.entity.container.position = this.entity.position; } }; listeners.xChanged = (x) => { this.entity.container.x = x; }; listeners.yChanged = (y) => { this.entity.container.y = y; }; } return listeners; } } export class Graphical extends decorate(GraphicalBase) {}