@rpg-engine/long-bow 0.2.42 → 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.
- package/dist/components/Item/Inventory/itemContainerHelper.d.ts +2 -2
- package/dist/components/TradingMenu/TradingItemRow.d.ts +2 -1
- package/dist/components/TradingMenu/TradingMenu.d.ts +1 -1
- package/dist/long-bow.cjs.development.js +67 -45
- package/dist/long-bow.cjs.development.js.map +1 -1
- package/dist/long-bow.cjs.production.min.js +1 -1
- package/dist/long-bow.cjs.production.min.js.map +1 -1
- package/dist/long-bow.esm.js +67 -45
- package/dist/long-bow.esm.js.map +1 -1
- package/dist/stories/ItemTradingComponent.stories.d.ts +2 -2
- package/package.json +1 -1
- package/src/components/Item/Inventory/ItemSlot.tsx +2 -2
- package/src/components/Item/Inventory/itemContainerHelper.ts +11 -5
- package/src/components/TradingMenu/TradingItemRow.tsx +15 -26
- package/src/components/TradingMenu/TradingMenu.tsx +47 -14
- package/src/mocks/itemContainer.mocks.ts +2 -2
- package/src/stories/ItemTradingComponent.stories.tsx +20 -24
- package/src/stories/TradingMenu.stories.tsx +7 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
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: (
|
|
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
|
-
|
|
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>;
|
|
@@ -27925,10 +27925,10 @@ var generateContextMenuListOptions = function generateContextMenuListOptions(act
|
|
|
27925
27925
|
});
|
|
27926
27926
|
return contextMenu;
|
|
27927
27927
|
};
|
|
27928
|
-
var generateContextMenu = function generateContextMenu(
|
|
27928
|
+
var generateContextMenu = function generateContextMenu(item, itemContainerType) {
|
|
27929
27929
|
var contextActionMenu = [];
|
|
27930
27930
|
if (itemContainerType === shared.ItemContainerType.Inventory) {
|
|
27931
|
-
switch (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
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
|
-
|
|
29361
|
-
traderItem = _ref.traderItem
|
|
29362
|
-
|
|
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 (
|
|
29367
|
-
var newQuantity =
|
|
29368
|
-
|
|
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
|
-
|
|
29380
|
-
|
|
29381
|
-
|
|
29382
|
-
|
|
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,
|
|
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
|
|
29462
|
-
|
|
29463
|
-
|
|
29464
|
-
|
|
29465
|
-
|
|
29466
|
-
|
|
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
|
-
|
|
29469
|
-
|
|
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
|
-
|
|
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)),
|
|
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:
|
|
29521
|
+
disabled: !hasGoldForSale(),
|
|
29500
29522
|
onClick: function onClick() {
|
|
29501
|
-
return
|
|
29523
|
+
return onConfirmClick();
|
|
29502
29524
|
}
|
|
29503
29525
|
}, "Confirm"), React__default.createElement(Button, {
|
|
29504
29526
|
buttonType: exports.ButtonTypes.RPGUIButton,
|