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.
 
 
 

64 line
1.5 KiB

  1. define([
  2. 'js/system/events',
  3. 'html!ui/templates/hud/template',
  4. 'css!ui/templates/hud/styles'
  5. ], function (
  6. events,
  7. template,
  8. styles
  9. ) {
  10. return {
  11. tpl: template,
  12. stats: null,
  13. postRender: function () {
  14. this.onEvent('onGetStats', this.onGetStats.bind(this));
  15. this.onEvent('onGetPortrait', this.onGetPortrait.bind(this));
  16. },
  17. onGetStats: function (stats) {
  18. this.stats = stats;
  19. this.build();
  20. },
  21. onGetPortrait: function (portrait) {
  22. var spritesheet = portrait.spritesheet || '../../../images/portraitIcons.png';
  23. var x = portrait.x * -64;
  24. var y = portrait.y * -64;
  25. this.find('.portrait')
  26. .css({
  27. background: 'url("' + spritesheet + '") ' + x + 'px ' + y + 'px',
  28. visibility: 'visible'
  29. });
  30. },
  31. build: function () {
  32. var stats = this.stats;
  33. var boxes = this.find('.statBox');
  34. [
  35. stats.hp / stats.hpMax,
  36. stats.mana / stats.manaMax,
  37. stats.xp / stats.xpMax
  38. ].forEach(function (s, i) {
  39. boxes.eq(i).find('div:first-child').width(Math.max(0, Math.min(100, ~~(s * 100))) + '%');
  40. });
  41. this.find('.statManaReserve').width(Math.max(0, Math.min(100, ~~(stats.manaReservePercent * 100))) + '%');
  42. boxes.eq(0).find('.text').html(Math.floor(stats.hp) + '/' + ~~stats.hpMax);
  43. boxes.eq(1).find('.text').html(Math.floor(stats.mana) + '/' + ~~stats.manaMax);
  44. var level = stats.level;
  45. if ((stats.originalLevel) && (stats.originalLevel != level))
  46. level = stats.originalLevel + ' (' + stats.level + ')';
  47. boxes.eq(2).find('.text').html('level: ' + level);
  48. }
  49. }
  50. });