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.
 
 
 

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