Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 

77 righe
1.5 KiB

  1. define([
  2. 'js/system/events'
  3. ], function (
  4. events
  5. ) {
  6. return {
  7. type: 'inventory',
  8. items: [],
  9. init: function (blueprint) {
  10. this.items.forEach(function (i) {
  11. if ((i.stats) && (i.stats.hpMax)) {
  12. i.stats.vit = i.stats.hpMax;
  13. delete i.stats.hpMax;
  14. }
  15. });
  16. events.emit('onGetItems', this.items);
  17. },
  18. extend: function (blueprint) {
  19. var rerender = false;
  20. if (blueprint.destroyItems) {
  21. rerender = true;
  22. events.emit('onDestroyItems', blueprint.destroyItems);
  23. }
  24. if (blueprint.getItems) {
  25. var items = this.items;
  26. var newItems = blueprint.getItems || [];
  27. var nLen = newItems.length;
  28. for (var i = 0; i < nLen; i++) {
  29. var nItem = newItems[i];
  30. var nId = nItem.id;
  31. if ((nItem.stats) && (nItem.stats.hpMax)) {
  32. nItem.stats.vit = nItem.stats.hpMax;
  33. delete nItem.stats.hpMax;
  34. }
  35. var findItem = items.find(function (item) {
  36. return (item.id == nId);
  37. });
  38. if (findItem) {
  39. if (!rerender) {
  40. rerender = (
  41. (findItem.pos != nItem.pos) ||
  42. (findItem.eq != nItem.eq) ||
  43. (findItem.quantity != nItem.quantity)
  44. );
  45. }
  46. for (var p in findItem) {
  47. delete findItem[p];
  48. }
  49. $.extend(true, findItem, nItem);
  50. newItems.splice(i, 1);
  51. i--;
  52. nLen--;
  53. } else {
  54. rerender = true;
  55. nItem.isNew = true;
  56. }
  57. }
  58. this.items.push.apply(this.items, blueprint.getItems || []);
  59. events.emit('onGetItems', this.items, rerender);
  60. }
  61. }
  62. };
  63. });