您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

65 行
1.2 KiB

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