You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

77 lines
1.3 KiB

  1. define([
  2. 'js/rendering/renderer'
  3. ], function (
  4. renderer
  5. ) {
  6. return {
  7. type: 'chatter',
  8. cd: 0,
  9. cdMax: 150,
  10. color: 0xffffff,
  11. init: function (blueprint) {
  12. if ((blueprint) && (blueprint.msg))
  13. this.extend(blueprint);
  14. },
  15. update: function () {
  16. let chatSprite = this.obj.chatSprite;
  17. if (!chatSprite)
  18. return;
  19. if (this.cd > 0)
  20. this.cd--;
  21. else if (this.cd === 0) {
  22. renderer.destroyObject({
  23. sprite: chatSprite
  24. });
  25. this.obj.chatSprite = null;
  26. }
  27. },
  28. extend: function (serverMsg) {
  29. let msg = serverMsg.msg + '\n\'';
  30. this.msg = msg;
  31. let obj = this.obj;
  32. if (obj.chatSprite) {
  33. renderer.destroyObject({
  34. sprite: obj.chatSprite
  35. });
  36. }
  37. if (obj.sprite && !obj.sprite.visible)
  38. return;
  39. let color = this.color;
  40. if (msg[0] === '*')
  41. color = 0xffeb38;
  42. let yOffset = (msg.split('\r\n').length - 1);
  43. obj.chatSprite = renderer.buildText({
  44. layerName: 'effects',
  45. text: msg,
  46. color: color,
  47. x: (obj.x * scale) + (scale / 2),
  48. y: (obj.y * scale) - (scale * 0.8) - (yOffset * scale * 0.8)
  49. });
  50. obj.chatSprite.visible = true;
  51. this.cd = this.cdMax;
  52. },
  53. destroy: function () {
  54. let chatSprite = this.obj.chatSprite;
  55. if (!chatSprite)
  56. return;
  57. renderer.destroyObject({
  58. sprite: chatSprite
  59. });
  60. }
  61. };
  62. });