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.
 
 
 

102 lines
1.8 KiB

  1. define([
  2. 'js/system/events',
  3. 'js/objects/objects',
  4. 'js/rendering/renderer'
  5. ], function (
  6. events,
  7. objects,
  8. renderer
  9. ) {
  10. let scale = 40;
  11. let scaleMult = 5;
  12. return {
  13. list: [],
  14. init: function () {
  15. events.on('onGetDamage', this.onGetDamage.bind(this));
  16. },
  17. onGetDamage: function (msg) {
  18. let target = objects.objects.find(function (o) {
  19. return (o.id == msg.id);
  20. });
  21. if (!target)
  22. return;
  23. let addY = msg.event ? scale : -(scale * 0.75);
  24. let ttl = 35;
  25. let numberObj = {
  26. obj: target,
  27. amount: msg.amount,
  28. x: (target.x * scale),
  29. y: (target.y * scale) + scale - (scale / 4),
  30. ttl: ttl,
  31. ttlMax: ttl,
  32. event: msg.event,
  33. text: msg.text,
  34. crit: msg.crit,
  35. heal: msg.heal
  36. };
  37. if (numberObj.event)
  38. numberObj.y += (scale / 2);
  39. else if (numberObj.heal)
  40. numberObj.x -= scale;
  41. else
  42. numberObj.x += scale;
  43. let text = numberObj.text;
  44. if (!numberObj.event) {
  45. let amount = numberObj.amount;
  46. let div = ((~~(amount * 10) / 10) > 0) ? 10 : 100;
  47. text = (numberObj.heal ? '+' : '') + (~~(amount * div) / div);
  48. }
  49. numberObj.sprite = renderer.buildText({
  50. fontSize: numberObj.crit ? 22 : 18,
  51. layerName: 'effects',
  52. x: numberObj.x,
  53. y: numberObj.y,
  54. text: text
  55. });
  56. this.list.push(numberObj);
  57. },
  58. render: function () {
  59. let list = this.list;
  60. let lLen = list.length;
  61. for (let i = 0; i < lLen; i++) {
  62. let l = list[i];
  63. l.ttl--;
  64. if (l.ttl == 0) {
  65. renderer.destroyObject({
  66. layerName: 'effects',
  67. sprite: l.sprite
  68. });
  69. list.splice(i, 1);
  70. i--;
  71. lLen--;
  72. continue;
  73. }
  74. if (l.event)
  75. l.y += 1;
  76. else
  77. l.y -= 1;
  78. let alpha = l.ttl / l.ttlMax;
  79. l.sprite.x = ~~(l.x / scaleMult) * scaleMult;
  80. l.sprite.y = ~~(l.y / scaleMult) * scaleMult;
  81. l.sprite.alpha = alpha;
  82. }
  83. }
  84. };
  85. });