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.
 
 
 

117 lines
2.0 KiB

  1. define([
  2. 'js/system/events',
  3. 'js/rendering/renderer'
  4. ], function (
  5. events,
  6. renderer
  7. ) {
  8. let scale = 40;
  9. return {
  10. type: 'stats',
  11. values: null,
  12. hpSprite: null,
  13. hpSpriteInner: null,
  14. init: function (blueprint) {
  15. if (this.obj.self)
  16. events.emit('onGetStats', this.values);
  17. let serverId = this.obj.serverId;
  18. if (serverId != null)
  19. events.emit('onGetPartyStats', serverId, this.values);
  20. let obj = this.obj;
  21. let yOffset = -12;
  22. if (obj.isChampion)
  23. yOffset = -18;
  24. this.hpSprite = renderer.buildRectangle({
  25. layerName: 'effects',
  26. x: obj.x * scale,
  27. y: obj.y * scale,
  28. w: 1,
  29. h: 1,
  30. color: 0x802343
  31. });
  32. this.hpSpriteInner = renderer.buildRectangle({
  33. x: 0,
  34. y: 0,
  35. w: 1,
  36. h: 1,
  37. layerName: 'effects',
  38. color: 0xd43346
  39. });
  40. this.updateHpSprite();
  41. },
  42. updateHpSprite: function () {
  43. if (this.obj.dead)
  44. return;
  45. let obj = this.obj;
  46. let yOffset = -12;
  47. if (obj.isChampion)
  48. yOffset = -18;
  49. let x = obj.x * scale;
  50. let y = (obj.y * scale) + yOffset;
  51. renderer.moveRectangle({
  52. sprite: this.hpSprite,
  53. x: x + 4,
  54. y: y,
  55. w: (scale - 8),
  56. h: 5
  57. });
  58. renderer.moveRectangle({
  59. sprite: this.hpSpriteInner,
  60. x: x + 4,
  61. y: y,
  62. w: (this.values.hp / this.values.hpMax) * (scale - 8),
  63. h: 5
  64. });
  65. this.hpSprite.visible = (this.values.hp < this.values.hpMax);
  66. this.hpSpriteInner.visible = this.hpSprite.visible;
  67. },
  68. extend: function (blueprint) {
  69. let bValues = blueprint.values || {};
  70. let values = this.values;
  71. for (let b in bValues)
  72. values[b] = bValues[b];
  73. if (this.obj.self)
  74. events.emit('onGetStats', this.values);
  75. let serverId = this.obj.serverId;
  76. if (serverId != null)
  77. events.emit('onGetPartyStats', serverId, this.values);
  78. this.updateHpSprite();
  79. },
  80. destroy: function () {
  81. renderer.destroyObject({
  82. sprite: this.hpSprite,
  83. layerName: 'effects'
  84. });
  85. renderer.destroyObject({
  86. sprite: this.hpSpriteInner,
  87. layerName: 'effects'
  88. });
  89. }
  90. };
  91. });