@rpg-engine/long-bow 0.2.43 → 0.2.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- import { ItemContainerType, ItemType } from '@rpg-engine/shared';
1
+ import { IItem, ItemContainerType } from '@rpg-engine/shared';
2
2
  export interface IContextMenuItem {
3
3
  id: string;
4
4
  text: string;
5
5
  }
6
- export declare const generateContextMenu: (itemType: ItemType, itemContainerType: ItemContainerType | null) => IContextMenuItem[];
6
+ export declare const generateContextMenu: (item: IItem, itemContainerType: ItemContainerType | null) => IContextMenuItem[];
@@ -2,8 +2,9 @@ import { ITradeResponseItem } from '@rpg-engine/shared';
2
2
  import React from 'react';
3
3
  export interface ITradeComponentProps {
4
4
  traderItem: ITradeResponseItem;
5
- updateChartTotals: (traderItem: ITradeResponseItem) => void;
5
+ onQuantityChange: (traderItem: ITradeResponseItem, selectedQty: number) => void;
6
6
  atlasJSON: any;
7
7
  atlasIMG: any;
8
+ selectedQty: number;
8
9
  }
9
10
  export declare const TradingItemRow: React.FC<ITradeComponentProps>;
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  export interface ITrandingMenu {
4
4
  traderItems: ITradeResponseItem[];
5
5
  onClose: () => void;
6
- onConfirm: () => void;
6
+ onConfirm: (items: ITradeResponseItem[]) => void;
7
7
  type: TradeTransactionType;
8
8
  atlasJSON: any;
9
9
  atlasIMG: any;
@@ -27925,10 +27925,10 @@ var generateContextMenuListOptions = function generateContextMenuListOptions(act
27925
27925
  });
27926
27926
  return contextMenu;
27927
27927
  };
27928
- var generateContextMenu = function generateContextMenu(itemType, itemContainerType) {
27928
+ var generateContextMenu = function generateContextMenu(item, itemContainerType) {
27929
27929
  var contextActionMenu = [];
27930
27930
  if (itemContainerType === shared.ItemContainerType.Inventory) {
27931
- switch (itemType) {
27931
+ switch (item.type) {
27932
27932
  case shared.ItemType.Weapon:
27933
27933
  case shared.ItemType.Armor:
27934
27934
  case shared.ItemType.Accessory:
@@ -27953,7 +27953,7 @@ var generateContextMenu = function generateContextMenu(itemType, itemContainerTy
27953
27953
  }
27954
27954
  }
27955
27955
  if (itemContainerType === shared.ItemContainerType.Equipment) {
27956
- switch (itemType) {
27956
+ switch (item.type) {
27957
27957
  case shared.ItemType.Container:
27958
27958
  contextActionMenu = generateContextMenuListOptions(shared.ActionsForEquipmentSet.Container);
27959
27959
  break;
@@ -27962,7 +27962,7 @@ var generateContextMenu = function generateContextMenu(itemType, itemContainerTy
27962
27962
  }
27963
27963
  }
27964
27964
  if (itemContainerType === shared.ItemContainerType.Loot) {
27965
- switch (itemType) {
27965
+ switch (item.type) {
27966
27966
  case shared.ItemType.Weapon:
27967
27967
  case shared.ItemType.Armor:
27968
27968
  case shared.ItemType.Accessory:
@@ -27984,7 +27984,7 @@ var generateContextMenu = function generateContextMenu(itemType, itemContainerTy
27984
27984
  }
27985
27985
  }
27986
27986
  if (itemContainerType === shared.ItemContainerType.MapContainer) {
27987
- switch (itemType) {
27987
+ switch (item.type) {
27988
27988
  case shared.ItemType.Weapon:
27989
27989
  case shared.ItemType.Armor:
27990
27990
  case shared.ItemType.Accessory:
@@ -28005,6 +28005,12 @@ var generateContextMenu = function generateContextMenu(itemType, itemContainerTy
28005
28005
  break;
28006
28006
  }
28007
28007
  }
28008
+ if (item.hasUseWith) {
28009
+ contextActionMenu.push({
28010
+ id: 'use-with',
28011
+ text: 'Use With...'
28012
+ });
28013
+ }
28008
28014
  return contextActionMenu;
28009
28015
  };
28010
28016
 
@@ -28042,7 +28048,7 @@ var ItemSlot = /*#__PURE__*/mobxReactLite.observer(function (_ref) {
28042
28048
  setContextActions = _useState3[1];
28043
28049
  React.useEffect(function () {
28044
28050
  if (item) {
28045
- setContextActions(generateContextMenu(item.type, containerType));
28051
+ setContextActions(generateContextMenu(item, containerType));
28046
28052
  }
28047
28053
  }, [item]);
28048
28054
  var getLeftPositionValue = function getLeftPositionValue(quantity) {
@@ -29357,35 +29363,20 @@ var TextArea = function TextArea(_ref) {
29357
29363
  var TradingItemRow = function TradingItemRow(_ref) {
29358
29364
  var atlasIMG = _ref.atlasIMG,
29359
29365
  atlasJSON = _ref.atlasJSON,
29360
- updateChartTotals = _ref.updateChartTotals,
29361
- traderItem = _ref.traderItem;
29362
- var _useState = React.useState(0),
29363
- itemQuantity = _useState[0],
29364
- setItemQuantity = _useState[1];
29366
+ onQuantityChange = _ref.onQuantityChange,
29367
+ traderItem = _ref.traderItem,
29368
+ selectedQty = _ref.selectedQty;
29365
29369
  var onLeftClick = function onLeftClick() {
29366
- if (itemQuantity > 0) {
29367
- var newQuantity = itemQuantity - 1;
29368
- setItemQuantity(newQuantity);
29369
- updateChartTotals({
29370
- key: traderItem.key,
29371
- qty: newQuantity,
29372
- price: traderItem.price,
29373
- texturePath: traderItem.texturePath,
29374
- name: traderItem.name
29375
- });
29370
+ if (selectedQty > 0) {
29371
+ var newQuantity = selectedQty - 1;
29372
+ onQuantityChange(traderItem, newQuantity);
29376
29373
  }
29377
29374
  };
29378
29375
  var onRightClick = function onRightClick() {
29379
- if (itemQuantity < 999) {
29380
- var newQuantity = itemQuantity + 1;
29381
- setItemQuantity(newQuantity);
29382
- updateChartTotals({
29383
- key: traderItem.key,
29384
- qty: newQuantity,
29385
- price: traderItem.price,
29386
- texturePath: traderItem.texturePath,
29387
- name: traderItem.name
29388
- });
29376
+ var _traderItem$qty;
29377
+ if (selectedQty < ((_traderItem$qty = traderItem.qty) != null ? _traderItem$qty : 999)) {
29378
+ var newQuantity = selectedQty + 1;
29379
+ onQuantityChange(traderItem, newQuantity);
29389
29380
  }
29390
29381
  };
29391
29382
  return React__default.createElement(ItemWrapper, null, React__default.createElement(ItemIconContainer, null, React__default.createElement(SpriteContainer$1, null, React__default.createElement(SpriteFromAtlas, {
@@ -29402,7 +29393,7 @@ var TradingItemRow = function TradingItemRow(_ref) {
29402
29393
  direction: "left",
29403
29394
  onClick: onLeftClick,
29404
29395
  onTouchStart: onLeftClick
29405
- }), React__default.createElement(QuantityDisplay, null, React__default.createElement(TextOverlay$2, null, React__default.createElement(Item$1, null, itemQuantity))), React__default.createElement(SelectArrow, {
29396
+ }), React__default.createElement(QuantityDisplay, null, React__default.createElement(TextOverlay$2, null, React__default.createElement(Item$1, null, selectedQty))), React__default.createElement(SelectArrow, {
29406
29397
  size: 32,
29407
29398
  className: "arrow-selector",
29408
29399
  direction: "right",
@@ -29458,20 +29449,49 @@ var TradingMenu = function TradingMenu(_ref) {
29458
29449
  var _useState = React.useState(0),
29459
29450
  sum = _useState[0],
29460
29451
  setSum = _useState[1];
29461
- var newSumArray = 0;
29462
- var updateChartTotals = function updateChartTotals(item) {
29463
- var itemIndex = traderItems.findIndex(function (itemArray) {
29464
- return itemArray.key === item.key;
29465
- });
29466
- traderItems[itemIndex] = item;
29452
+ var _useState2 = React.useState(new Map()),
29453
+ qtyMap = _useState2[0],
29454
+ setQtyMap = _useState2[1];
29455
+ var onQuantityChange = function onQuantityChange(item, selectedQty) {
29456
+ setQtyMap(new Map(qtyMap.set(item.key, selectedQty)));
29457
+ var newSum = 0;
29467
29458
  traderItems.forEach(function (item) {
29468
- if (item.qty) newSumArray += item.qty * item.price;
29469
- setSum(newSumArray);
29459
+ var qty = qtyMap.get(item.key);
29460
+ if (qty) newSum += qty * item.price;
29461
+ setSum(newSum);
29470
29462
  });
29471
29463
  };
29464
+ var isBuy = function isBuy() {
29465
+ return type == 'buy';
29466
+ };
29467
+ var hasGoldForSale = function hasGoldForSale() {
29468
+ if (isBuy()) {
29469
+ return !(sum > characterAvailableGold);
29470
+ }
29471
+ return true;
29472
+ };
29473
+ var getFinalGold = function getFinalGold() {
29474
+ if (isBuy()) {
29475
+ return characterAvailableGold - sum;
29476
+ } else {
29477
+ return characterAvailableGold + sum;
29478
+ }
29479
+ };
29472
29480
  var Capitalize = function Capitalize(word) {
29473
29481
  return word[0].toUpperCase() + word.substring(1);
29474
29482
  };
29483
+ var onConfirmClick = function onConfirmClick() {
29484
+ var items = [];
29485
+ traderItems.forEach(function (item) {
29486
+ var qty = qtyMap.get(item.key);
29487
+ if (qty) {
29488
+ items.push(Object.assign({}, item, {
29489
+ qty: qty
29490
+ }));
29491
+ }
29492
+ });
29493
+ onConfirm(items);
29494
+ };
29475
29495
  return React__default.createElement(DraggableContainer, {
29476
29496
  type: exports.RPGUIContainerTypes.Framed,
29477
29497
  onCloseButton: function onCloseButton() {
@@ -29486,19 +29506,21 @@ var TradingMenu = function TradingMenu(_ref) {
29486
29506
  }, React__default.createElement(Title$3, null, Capitalize(type), " Menu"), React__default.createElement("hr", {
29487
29507
  className: "golden"
29488
29508
  })), React__default.createElement(TradingComponentScrollWrapper, null, traderItems.map(function (tradeItem, index) {
29509
+ var _qtyMap$get;
29489
29510
  return React__default.createElement(ItemWrapper$1, {
29490
29511
  key: tradeItem.key + "_" + index
29491
29512
  }, React__default.createElement(TradingItemRow, {
29492
29513
  atlasIMG: atlasIMG,
29493
29514
  atlasJSON: atlasJSON,
29494
- updateChartTotals: updateChartTotals,
29495
- traderItem: tradeItem
29515
+ onQuantityChange: onQuantityChange,
29516
+ traderItem: tradeItem,
29517
+ selectedQty: (_qtyMap$get = qtyMap.get(tradeItem.key)) != null ? _qtyMap$get : 0
29496
29518
  }));
29497
- })), React__default.createElement(GoldWrapper, null, React__default.createElement("p", null, "Available Gold:"), React__default.createElement("p", null, "$", characterAvailableGold)), React__default.createElement(TotalWrapper, null, React__default.createElement("p", null, "Total:"), React__default.createElement("p", null, "$", sum)), sum > characterAvailableGold ? React__default.createElement(AlertWrapper, null, React__default.createElement("p", null, " Sorry, not enough money.")) : React__default.createElement(GoldWrapper, null, React__default.createElement("p", null, "Final Gold:"), React__default.createElement("p", null, "$", characterAvailableGold - sum)), React__default.createElement(ButtonWrapper, null, React__default.createElement(Button, {
29519
+ })), React__default.createElement(GoldWrapper, null, React__default.createElement("p", null, "Available Gold:"), React__default.createElement("p", null, "$", characterAvailableGold)), React__default.createElement(TotalWrapper, null, React__default.createElement("p", null, "Total:"), React__default.createElement("p", null, "$", sum)), !hasGoldForSale() ? React__default.createElement(AlertWrapper, null, React__default.createElement("p", null, " Sorry, not enough money.")) : React__default.createElement(GoldWrapper, null, React__default.createElement("p", null, "Final Gold:"), React__default.createElement("p", null, "$", getFinalGold())), React__default.createElement(ButtonWrapper, null, React__default.createElement(Button, {
29498
29520
  buttonType: exports.ButtonTypes.RPGUIButton,
29499
- disabled: sum > characterAvailableGold,
29521
+ disabled: !hasGoldForSale(),
29500
29522
  onClick: function onClick() {
29501
- return onConfirm();
29523
+ return onConfirmClick();
29502
29524
  }
29503
29525
  }, "Confirm"), React__default.createElement(Button, {
29504
29526
  buttonType: exports.ButtonTypes.RPGUIButton,