define([ 'js/rendering/renderer' ], function ( renderer ) { return { type: 'chatter', cd: 0, cdMax: 150, color: 0xffffff, init: function (blueprint) { if ((blueprint) && (blueprint.msg)) this.extend(blueprint); }, update: function () { let chatSprite = this.obj.chatSprite; if (!chatSprite) return; if (this.cd > 0) this.cd--; else if (this.cd === 0) { renderer.destroyObject({ sprite: chatSprite }); this.obj.chatSprite = null; } }, extend: function (serverMsg) { let msg = serverMsg.msg + '\n\''; this.msg = msg; let obj = this.obj; if (obj.chatSprite) { renderer.destroyObject({ sprite: obj.chatSprite }); } if (obj.sprite && !obj.sprite.visible) return; let color = this.color; if (msg[0] === '*') color = 0xffeb38; let yOffset = (msg.split('\r\n').length - 1); obj.chatSprite = renderer.buildText({ layerName: 'effects', text: msg, color: color, x: (obj.x * scale) + (scale / 2), y: (obj.y * scale) - (scale * 0.8) - (yOffset * scale * 0.8) }); obj.chatSprite.visible = true; this.cd = this.cdMax; }, destroy: function () { let chatSprite = this.obj.chatSprite; if (!chatSprite) return; renderer.destroyObject({ sprite: chatSprite }); } }; });