@rpg-engine/long-bow 0.3.96 → 0.3.98

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.
Files changed (182) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +181 -181
  3. package/dist/components/CircularController/CircularController.d.ts +1 -0
  4. package/dist/components/Shortcuts/Shortcuts.d.ts +1 -0
  5. package/dist/components/Shortcuts/useShortcutCooldown.d.ts +4 -0
  6. package/dist/components/Spellbook/Spell.d.ts +5 -4
  7. package/dist/components/Spellbook/Spellbook.d.ts +3 -2
  8. package/dist/components/Spellbook/cards/MobileSpellTooltip.d.ts +15 -0
  9. package/dist/components/Spellbook/cards/SpellInfo.d.ts +7 -0
  10. package/dist/components/Spellbook/cards/SpellInfoDisplay.d.ts +7 -0
  11. package/dist/components/Spellbook/cards/SpellInfoWrapper.d.ts +9 -0
  12. package/dist/components/Spellbook/cards/SpellTooltip.d.ts +6 -0
  13. package/dist/components/Spellbook/mockSpells.d.ts +2 -2
  14. package/dist/libs/CastingTypeHelper.d.ts +1 -0
  15. package/dist/long-bow.cjs.development.js +1525 -1255
  16. package/dist/long-bow.cjs.development.js.map +1 -1
  17. package/dist/long-bow.cjs.production.min.js +1 -1
  18. package/dist/long-bow.cjs.production.min.js.map +1 -1
  19. package/dist/long-bow.esm.js +1531 -1261
  20. package/dist/long-bow.esm.js.map +1 -1
  21. package/dist/stories/SpellInfoDisplay.stories.d.ts +8 -0
  22. package/package.json +100 -100
  23. package/src/.DS_Store +0 -0
  24. package/src/components/.DS_Store +0 -0
  25. package/src/components/Abstractions/ModalPortal.tsx +22 -22
  26. package/src/components/Abstractions/SlotsContainer.tsx +62 -62
  27. package/src/components/Arrow/SelectArrow.tsx +69 -69
  28. package/src/components/Arrow/img/arrow01-left-clicked.png +0 -0
  29. package/src/components/Arrow/img/arrow01-left.png +0 -0
  30. package/src/components/Arrow/img/arrow01-right-clicked.png +0 -0
  31. package/src/components/Arrow/img/arrow01-right.png +0 -0
  32. package/src/components/Arrow/img/arrow02-left-clicked.png +0 -0
  33. package/src/components/Arrow/img/arrow02-left.png +0 -0
  34. package/src/components/Arrow/img/arrow02-right-clicked.png +0 -0
  35. package/src/components/Arrow/img/arrow02-right.png +0 -0
  36. package/src/components/Button.tsx +40 -40
  37. package/src/components/Character/CharacterSelection.tsx +98 -98
  38. package/src/components/CharacterStatus/CharacterStatus.tsx +120 -120
  39. package/src/components/Chat/Chat.tsx +196 -196
  40. package/src/components/Chatdeprecated/ChatDeprecated.tsx +198 -198
  41. package/src/components/CheckButton.tsx +65 -65
  42. package/src/components/CircularController/CircularController.tsx +282 -249
  43. package/src/components/CraftBook/CraftBook.tsx +286 -286
  44. package/src/components/CraftBook/CraftingRecipe.tsx +161 -161
  45. package/src/components/CraftBook/MockItems.ts +101 -101
  46. package/src/components/DraggableContainer.tsx +180 -180
  47. package/src/components/DropdownSelectorContainer.tsx +42 -42
  48. package/src/components/Equipment/EquipmentSet.tsx +199 -199
  49. package/src/components/HistoryDialog.tsx +104 -104
  50. package/src/components/Input.tsx +15 -15
  51. package/src/components/InputRadio.tsx +41 -41
  52. package/src/components/Item/Cards/ItemInfo.tsx +298 -288
  53. package/src/components/Item/Cards/ItemInfoDisplay.tsx +135 -135
  54. package/src/components/Item/Cards/ItemInfoWrapper.tsx +62 -62
  55. package/src/components/Item/Cards/ItemTooltip.tsx +83 -83
  56. package/src/components/Item/Cards/MobileItemTooltip.tsx +149 -149
  57. package/src/components/Item/Inventory/ErrorBoundary.tsx +42 -42
  58. package/src/components/Item/Inventory/ItemContainer.tsx +231 -231
  59. package/src/components/Item/Inventory/ItemContainerTypes.ts +6 -6
  60. package/src/components/Item/Inventory/ItemQuantitySelector.tsx +138 -138
  61. package/src/components/Item/Inventory/ItemSlot.tsx +580 -580
  62. package/src/components/Item/Inventory/itemContainerHelper.ts +175 -175
  63. package/src/components/ListMenu.tsx +63 -63
  64. package/src/components/Marketplace/Marketplace.tsx +132 -132
  65. package/src/components/Marketplace/MarketplaceRows.tsx +171 -171
  66. package/src/components/Marketplace/__mocks__/index.tsx +65 -65
  67. package/src/components/Multitab/Tab.tsx +66 -66
  68. package/src/components/Multitab/TabBody.tsx +13 -13
  69. package/src/components/Multitab/TabsContainer.tsx +97 -97
  70. package/src/components/NPCDialog/.DS_Store +0 -0
  71. package/src/components/NPCDialog/NPCDialog.tsx +121 -121
  72. package/src/components/NPCDialog/NPCDialogText.tsx +113 -113
  73. package/src/components/NPCDialog/NPCMultiDialog.tsx +159 -159
  74. package/src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx +237 -237
  75. package/src/components/NPCDialog/img/.DS_Store +0 -0
  76. package/src/components/ProgressBar.tsx +92 -92
  77. package/src/components/PropertySelect/PropertySelect.tsx +106 -106
  78. package/src/components/QuestInfo/QuestInfo.tsx +233 -233
  79. package/src/components/QuestList.tsx +135 -135
  80. package/src/components/RPGUIContainer.tsx +47 -47
  81. package/src/components/RPGUIForceRenderStart.tsx +45 -45
  82. package/src/components/RPGUIRoot.tsx +14 -14
  83. package/src/components/RadioButton.tsx +53 -53
  84. package/src/components/RadioInput/RadioButton.tsx +96 -96
  85. package/src/components/RadioInput/RadioInput.tsx +102 -102
  86. package/src/components/RadioInput/instruments.ts +15 -15
  87. package/src/components/RangeSlider.tsx +78 -78
  88. package/src/components/RelativeListMenu.tsx +90 -90
  89. package/src/components/ScrollList.tsx +79 -79
  90. package/src/components/Shortcuts/Shortcuts.tsx +192 -153
  91. package/src/components/Shortcuts/ShortcutsSetter.tsx +139 -139
  92. package/src/components/Shortcuts/SingleShortcut.ts +82 -62
  93. package/src/components/Shortcuts/useShortcutCooldown.ts +24 -0
  94. package/src/components/SimpleProgressBar.tsx +62 -62
  95. package/src/components/SkillProgressBar.tsx +133 -133
  96. package/src/components/SkillsContainer.tsx +206 -206
  97. package/src/components/Spellbook/Spell.tsx +236 -201
  98. package/src/components/Spellbook/Spellbook.tsx +159 -153
  99. package/src/components/Spellbook/cards/MobileSpellTooltip.tsx +137 -0
  100. package/src/components/Spellbook/cards/SpellInfo.tsx +132 -0
  101. package/src/components/Spellbook/cards/SpellInfoDisplay.tsx +31 -0
  102. package/src/components/Spellbook/cards/SpellInfoWrapper.tsx +48 -0
  103. package/src/components/Spellbook/cards/SpellTooltip.tsx +70 -0
  104. package/src/components/Spellbook/constants.ts +8 -8
  105. package/src/components/Spellbook/mockSpells.ts +85 -60
  106. package/src/components/StaticBook/StaticBook.tsx +103 -103
  107. package/src/components/TextArea.tsx +11 -11
  108. package/src/components/TimeWidget/DayNightPeriod/DayNightPeriod.tsx +35 -35
  109. package/src/components/TimeWidget/TimeWidget.tsx +65 -65
  110. package/src/components/TradingMenu/TradingItemRow.tsx +199 -199
  111. package/src/components/TradingMenu/TradingMenu.tsx +219 -219
  112. package/src/components/TradingMenu/items.mock.ts +48 -48
  113. package/src/components/Truncate.tsx +25 -25
  114. package/src/components/itemSelector/ItemSelector.tsx +136 -136
  115. package/src/components/shared/Column.tsx +16 -16
  116. package/src/components/shared/Ellipsis.tsx +68 -68
  117. package/src/components/shared/SpriteFromAtlas.tsx +104 -104
  118. package/src/components/typography/DynamicText.tsx +49 -49
  119. package/src/constants/uiColors.ts +20 -20
  120. package/src/constants/uiDevices.ts +3 -3
  121. package/src/constants/uiFonts.ts +12 -12
  122. package/src/hooks/useEventListener.ts +21 -21
  123. package/src/hooks/useOutsideAlerter.ts +25 -25
  124. package/src/index.tsx +42 -42
  125. package/src/libs/CastingTypeHelper.ts +8 -0
  126. package/src/libs/StringHelpers.ts +3 -3
  127. package/src/libs/itemCounter.ts +21 -21
  128. package/src/mocks/.DS_Store +0 -0
  129. package/src/mocks/atlas/.DS_Store +0 -0
  130. package/src/mocks/atlas/entities/entities.json +20215 -20215
  131. package/src/mocks/atlas/icons/icons.json +735 -735
  132. package/src/mocks/atlas/items/items.json +12086 -12086
  133. package/src/mocks/equipmentSet.mocks.ts +391 -391
  134. package/src/mocks/itemContainer.mocks.ts +605 -605
  135. package/src/mocks/skills.mocks.ts +128 -128
  136. package/src/stories/Arrow.stories.tsx +26 -26
  137. package/src/stories/Button.stories.tsx +36 -36
  138. package/src/stories/CharacterSelection.stories.tsx +44 -44
  139. package/src/stories/CharacterStatus.stories.tsx +29 -29
  140. package/src/stories/Chat.stories.tsx +187 -187
  141. package/src/stories/ChatDeprecated.stories.tsx +170 -170
  142. package/src/stories/CheckButton.stories.tsx +48 -48
  143. package/src/stories/CircullarController.stories.tsx +37 -37
  144. package/src/stories/CraftBook.stories.tsx +42 -42
  145. package/src/stories/DayNightPeriod.stories.tsx +27 -27
  146. package/src/stories/DraggableContainer.stories.tsx +28 -28
  147. package/src/stories/Dropdown.stories.tsx +46 -46
  148. package/src/stories/DropdownSelectorContainer.stories.tsx +41 -41
  149. package/src/stories/EquipmentSet.stories.tsx +65 -65
  150. package/src/stories/HistoryDialog.stories.tsx +61 -61
  151. package/src/stories/ItemContainer.stories.tsx +201 -201
  152. package/src/stories/ItemInfoDisplay.stories.tsx +33 -33
  153. package/src/stories/ItemQuantitySelector.stories.tsx +26 -26
  154. package/src/stories/ItemSelector.stories.tsx +77 -77
  155. package/src/stories/ItemTradingComponent.stories.tsx +35 -35
  156. package/src/stories/ListMenu.stories.tsx +56 -56
  157. package/src/stories/Marketplace.stories.tsx +42 -42
  158. package/src/stories/MarketplaceRows.stories.tsx +28 -28
  159. package/src/stories/Multitab.stories.tsx +51 -51
  160. package/src/stories/NPCDialog.stories.tsx +130 -130
  161. package/src/stories/NPCMultiDialog.stories.tsx +71 -71
  162. package/src/stories/ProgressBar.stories.tsx +23 -23
  163. package/src/stories/PropertySelect.stories.tsx +40 -40
  164. package/src/stories/QuestInfo.stories.tsx +107 -107
  165. package/src/stories/QuestList.stories.tsx +82 -82
  166. package/src/stories/RPGUIContainers.stories.tsx +42 -42
  167. package/src/stories/RadioButton.stories.tsx +49 -49
  168. package/src/stories/RadioInput.stories.tsx +34 -34
  169. package/src/stories/RangeSlider.stories.tsx +64 -64
  170. package/src/stories/ScrollList.stories.tsx +85 -85
  171. package/src/stories/Shortcuts.stories.tsx +39 -39
  172. package/src/stories/SimpleProgressBar.stories.tsx +22 -22
  173. package/src/stories/SkillProgressBar.stories.tsx +34 -34
  174. package/src/stories/SkillsContainer.stories.tsx +35 -35
  175. package/src/stories/SpellInfoDisplay.stories.tsx +27 -0
  176. package/src/stories/Spellbook.stories.tsx +104 -104
  177. package/src/stories/StaticBook.stories.tsx +32 -32
  178. package/src/stories/Text.stories.tsx +42 -42
  179. package/src/stories/TimeWidget.stories.tsx +27 -27
  180. package/src/stories/TradingMenu.stories.tsx +47 -47
  181. package/src/types/eventTypes.ts +4 -4
  182. package/src/types/index.d.ts +2 -2
@@ -1,201 +1,201 @@
1
- import {
2
- IItem,
3
- IShortcut,
4
- ItemContainerType,
5
- ItemType,
6
- ShortcutType,
7
- } from '@rpg-engine/shared';
8
- import { Meta, Story } from '@storybook/react';
9
- import React, { useEffect, useState } from 'react';
10
- import {
11
- IItemContainerProps,
12
- ItemContainer,
13
- } from '../../src/components/Item/Inventory/ItemContainer';
14
- import { RPGUIRoot } from '../../src/components/RPGUIRoot';
15
- import { equipmentSetMock } from '../../src/mocks/equipmentSet.mocks';
16
- import { itemContainerMock } from '../../src/mocks/itemContainer.mocks';
17
- import {
18
- defaultShortcut,
19
- SHORTCUTS_STORAGE_KEY,
20
- } from '../components/Spellbook/constants';
21
- import atlasJSON from '../mocks/atlas/items/items.json';
22
- import atlasIMG from '../mocks/atlas/items/items.png';
23
-
24
- const meta: Meta = {
25
- title: 'Item Container',
26
- component: ItemContainer,
27
- };
28
-
29
- export default meta;
30
-
31
- const onMouseOver = (_event: any, slotIndex: number, item: IItem | null) => {
32
- if (!item) {
33
- // console.log(`Free at ${slotIndex}` )
34
- return;
35
- }
36
- console.log(`${item.name} at ${slotIndex}`);
37
- };
38
-
39
- const onSelected = (payload: string, item: IItem) => {
40
- console.log('onSelected', payload, item);
41
- };
42
-
43
- const onItemClick = (
44
- item: IItem,
45
- ItemType: ItemType,
46
- itemContainerType: ItemContainerType | null
47
- ) => {
48
- console.log(item, ItemType, itemContainerType, 'was clicked!');
49
- };
50
-
51
- // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
52
- let dragItem: IItem | null = null;
53
- let dropItem: IItem | null = null;
54
- let allowedToDrop = false;
55
- let dragSlot = -1;
56
- let dropSlot = -1;
57
-
58
- const Template: Story<IItemContainerProps> = () => {
59
- const [itemContainer, setItemContainer] = useState(itemContainerMock);
60
- const [shortcuts, setShortcuts] = useState<IShortcut[]>([]);
61
-
62
- useEffect(() => {
63
- const shortcuts = localStorage.getItem(SHORTCUTS_STORAGE_KEY);
64
- if (shortcuts) {
65
- setShortcuts(JSON.parse(shortcuts));
66
- }
67
- }, []);
68
-
69
- const setItemShortcut = (key: string, index: number) => {
70
- const shortcuts = JSON.parse(
71
- localStorage.getItem(SHORTCUTS_STORAGE_KEY) as string
72
- ) as IShortcut[];
73
-
74
- let item: IItem | null = null;
75
-
76
- Object.keys(itemContainer.slots).forEach(slot => {
77
- const slotItem = itemContainer.slots?.[parseInt(slot)];
78
- if (slotItem && slotItem.key === key) {
79
- item = slotItem;
80
- }
81
- });
82
-
83
- if (!item) {
84
- return;
85
- }
86
-
87
- if (!shortcuts) {
88
- const newShortcuts: IShortcut[] = Array(6).fill(defaultShortcut);
89
-
90
- newShortcuts[index] = {
91
- type: ShortcutType.Item,
92
- payload: item,
93
- };
94
-
95
- localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(newShortcuts));
96
- } else {
97
- shortcuts[index] = {
98
- type: ShortcutType.Item,
99
- payload: item,
100
- };
101
-
102
- localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(shortcuts));
103
- }
104
-
105
- setShortcuts(shortcuts);
106
- };
107
-
108
- const removeShortcut = (index: number) => {
109
- const shortcuts = JSON.parse(
110
- localStorage.getItem(SHORTCUTS_STORAGE_KEY) as string
111
- );
112
-
113
- if (!shortcuts) return;
114
-
115
- shortcuts[index] = defaultShortcut;
116
-
117
- localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(shortcuts));
118
-
119
- setShortcuts(shortcuts);
120
- };
121
-
122
- return (
123
- <RPGUIRoot>
124
- <ItemContainer
125
- itemContainer={itemContainer}
126
- onClose={() => console.log('closing item container')}
127
- onMouseOver={onMouseOver}
128
- onSelected={onSelected}
129
- onItemClick={onItemClick}
130
- checkIfItemCanBeMoved={() => allowedToDrop}
131
- onItemDragEnd={quantity => {
132
- // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
133
-
134
- if (quantity === 0) {
135
- setItemContainer({ ...itemContainer });
136
- } else if (allowedToDrop && dropSlot !== -1) {
137
- const newContainer = { ...itemContainer };
138
-
139
- if (quantity && dragItem && dragItem.stackQty) {
140
- newContainer.slots[dropSlot] = {
141
- ...dragItem,
142
- stackQty: quantity + (dropItem?.stackQty || 0),
143
- };
144
-
145
- if (dragItem.stackQty - quantity === 0)
146
- newContainer.slots[dragSlot] = null;
147
- else
148
- newContainer.slots[dragSlot] = {
149
- ...dragItem,
150
- stackQty: dragItem.stackQty - quantity,
151
- };
152
- } else {
153
- newContainer.slots[dropSlot] = dragItem;
154
- newContainer.slots[dragSlot] = null;
155
- }
156
- setTimeout(() => {
157
- setItemContainer(newContainer);
158
- }, 100);
159
- }
160
-
161
- allowedToDrop = false;
162
- dropSlot = -1;
163
- dropItem = null;
164
- dragItem = null;
165
- }}
166
- onItemDragStart={(item, slotIndex) => {
167
- dragItem = item;
168
- dragSlot = slotIndex;
169
- }}
170
- onItemPlaceDrop={(item, slotIndex) => {
171
- // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
172
-
173
- if (
174
- !item ||
175
- (dragItem?.key === item?.key && dragSlot !== slotIndex)
176
- ) {
177
- console.log('allow');
178
- allowedToDrop = true;
179
- dropSlot = slotIndex;
180
- dropItem = item ? item : null;
181
- } else {
182
- allowedToDrop = false;
183
- dropSlot = -1;
184
- dropItem = null;
185
- }
186
- }}
187
- onOutsideDrop={(item, pos) => console.log('drop', item, pos)}
188
- type={ItemContainerType.Inventory}
189
- atlasIMG={atlasIMG}
190
- atlasJSON={atlasJSON}
191
- shortcuts={shortcuts}
192
- setItemShortcut={setItemShortcut}
193
- removeShortcut={removeShortcut}
194
- equipmentSet={equipmentSetMock}
195
- isDepotSystem
196
- />
197
- </RPGUIRoot>
198
- );
199
- };
200
-
201
- export const Default = Template.bind({});
1
+ import {
2
+ IItem,
3
+ IShortcut,
4
+ ItemContainerType,
5
+ ItemType,
6
+ ShortcutType,
7
+ } from '@rpg-engine/shared';
8
+ import { Meta, Story } from '@storybook/react';
9
+ import React, { useEffect, useState } from 'react';
10
+ import {
11
+ IItemContainerProps,
12
+ ItemContainer,
13
+ } from '../../src/components/Item/Inventory/ItemContainer';
14
+ import { RPGUIRoot } from '../../src/components/RPGUIRoot';
15
+ import { equipmentSetMock } from '../../src/mocks/equipmentSet.mocks';
16
+ import { itemContainerMock } from '../../src/mocks/itemContainer.mocks';
17
+ import {
18
+ defaultShortcut,
19
+ SHORTCUTS_STORAGE_KEY,
20
+ } from '../components/Spellbook/constants';
21
+ import atlasJSON from '../mocks/atlas/items/items.json';
22
+ import atlasIMG from '../mocks/atlas/items/items.png';
23
+
24
+ const meta: Meta = {
25
+ title: 'Item Container',
26
+ component: ItemContainer,
27
+ };
28
+
29
+ export default meta;
30
+
31
+ const onMouseOver = (_event: any, slotIndex: number, item: IItem | null) => {
32
+ if (!item) {
33
+ // console.log(`Free at ${slotIndex}` )
34
+ return;
35
+ }
36
+ console.log(`${item.name} at ${slotIndex}`);
37
+ };
38
+
39
+ const onSelected = (payload: string, item: IItem) => {
40
+ console.log('onSelected', payload, item);
41
+ };
42
+
43
+ const onItemClick = (
44
+ item: IItem,
45
+ ItemType: ItemType,
46
+ itemContainerType: ItemContainerType | null
47
+ ) => {
48
+ console.log(item, ItemType, itemContainerType, 'was clicked!');
49
+ };
50
+
51
+ // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
52
+ let dragItem: IItem | null = null;
53
+ let dropItem: IItem | null = null;
54
+ let allowedToDrop = false;
55
+ let dragSlot = -1;
56
+ let dropSlot = -1;
57
+
58
+ const Template: Story<IItemContainerProps> = () => {
59
+ const [itemContainer, setItemContainer] = useState(itemContainerMock);
60
+ const [shortcuts, setShortcuts] = useState<IShortcut[]>([]);
61
+
62
+ useEffect(() => {
63
+ const shortcuts = localStorage.getItem(SHORTCUTS_STORAGE_KEY);
64
+ if (shortcuts) {
65
+ setShortcuts(JSON.parse(shortcuts));
66
+ }
67
+ }, []);
68
+
69
+ const setItemShortcut = (key: string, index: number) => {
70
+ const shortcuts = JSON.parse(
71
+ localStorage.getItem(SHORTCUTS_STORAGE_KEY) as string
72
+ ) as IShortcut[];
73
+
74
+ let item: IItem | null = null;
75
+
76
+ Object.keys(itemContainer.slots).forEach(slot => {
77
+ const slotItem = itemContainer.slots?.[parseInt(slot)];
78
+ if (slotItem && slotItem.key === key) {
79
+ item = slotItem;
80
+ }
81
+ });
82
+
83
+ if (!item) {
84
+ return;
85
+ }
86
+
87
+ if (!shortcuts) {
88
+ const newShortcuts: IShortcut[] = Array(6).fill(defaultShortcut);
89
+
90
+ newShortcuts[index] = {
91
+ type: ShortcutType.Item,
92
+ payload: item,
93
+ };
94
+
95
+ localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(newShortcuts));
96
+ } else {
97
+ shortcuts[index] = {
98
+ type: ShortcutType.Item,
99
+ payload: item,
100
+ };
101
+
102
+ localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(shortcuts));
103
+ }
104
+
105
+ setShortcuts(shortcuts);
106
+ };
107
+
108
+ const removeShortcut = (index: number) => {
109
+ const shortcuts = JSON.parse(
110
+ localStorage.getItem(SHORTCUTS_STORAGE_KEY) as string
111
+ );
112
+
113
+ if (!shortcuts) return;
114
+
115
+ shortcuts[index] = defaultShortcut;
116
+
117
+ localStorage.setItem(SHORTCUTS_STORAGE_KEY, JSON.stringify(shortcuts));
118
+
119
+ setShortcuts(shortcuts);
120
+ };
121
+
122
+ return (
123
+ <RPGUIRoot>
124
+ <ItemContainer
125
+ itemContainer={itemContainer}
126
+ onClose={() => console.log('closing item container')}
127
+ onMouseOver={onMouseOver}
128
+ onSelected={onSelected}
129
+ onItemClick={onItemClick}
130
+ checkIfItemCanBeMoved={() => allowedToDrop}
131
+ onItemDragEnd={quantity => {
132
+ // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
133
+
134
+ if (quantity === 0) {
135
+ setItemContainer({ ...itemContainer });
136
+ } else if (allowedToDrop && dropSlot !== -1) {
137
+ const newContainer = { ...itemContainer };
138
+
139
+ if (quantity && dragItem && dragItem.stackQty) {
140
+ newContainer.slots[dropSlot] = {
141
+ ...dragItem,
142
+ stackQty: quantity + (dropItem?.stackQty || 0),
143
+ };
144
+
145
+ if (dragItem.stackQty - quantity === 0)
146
+ newContainer.slots[dragSlot] = null;
147
+ else
148
+ newContainer.slots[dragSlot] = {
149
+ ...dragItem,
150
+ stackQty: dragItem.stackQty - quantity,
151
+ };
152
+ } else {
153
+ newContainer.slots[dropSlot] = dragItem;
154
+ newContainer.slots[dragSlot] = null;
155
+ }
156
+ setTimeout(() => {
157
+ setItemContainer(newContainer);
158
+ }, 100);
159
+ }
160
+
161
+ allowedToDrop = false;
162
+ dropSlot = -1;
163
+ dropItem = null;
164
+ dragItem = null;
165
+ }}
166
+ onItemDragStart={(item, slotIndex) => {
167
+ dragItem = item;
168
+ dragSlot = slotIndex;
169
+ }}
170
+ onItemPlaceDrop={(item, slotIndex) => {
171
+ // THIS IS ONLY LONG-BOW EXAMPLE FOR DRAG AND DROP
172
+
173
+ if (
174
+ !item ||
175
+ (dragItem?.key === item?.key && dragSlot !== slotIndex)
176
+ ) {
177
+ console.log('allow');
178
+ allowedToDrop = true;
179
+ dropSlot = slotIndex;
180
+ dropItem = item ? item : null;
181
+ } else {
182
+ allowedToDrop = false;
183
+ dropSlot = -1;
184
+ dropItem = null;
185
+ }
186
+ }}
187
+ onOutsideDrop={(item, pos) => console.log('drop', item, pos)}
188
+ type={ItemContainerType.Inventory}
189
+ atlasIMG={atlasIMG}
190
+ atlasJSON={atlasJSON}
191
+ shortcuts={shortcuts}
192
+ setItemShortcut={setItemShortcut}
193
+ removeShortcut={removeShortcut}
194
+ equipmentSet={equipmentSetMock}
195
+ isDepotSystem
196
+ />
197
+ </RPGUIRoot>
198
+ );
199
+ };
200
+
201
+ export const Default = Template.bind({});
@@ -1,33 +1,33 @@
1
- import { Story } from '@storybook/react';
2
- import React from 'react';
3
- import {
4
- IItemInfoDisplayProps,
5
- ItemInfoDisplay,
6
- } from '../components/Item/Cards/ItemInfoDisplay';
7
- import { RPGUIRoot } from '../components/RPGUIRoot';
8
- import atlasJSON from '../mocks/atlas/items/items.json';
9
- import atlasIMG from '../mocks/atlas/items/items.png';
10
- import { equipmentSetMock } from '../mocks/equipmentSet.mocks';
11
- import { items } from '../mocks/itemContainer.mocks';
12
-
13
- export default {
14
- title: 'Item info',
15
- component: ItemInfoDisplay,
16
- };
17
-
18
- const Template: Story<IItemInfoDisplayProps> = args => (
19
- <RPGUIRoot>
20
- <div style={{ margin: '2rem' }}>
21
- <ItemInfoDisplay {...args} />
22
- </div>
23
- </RPGUIRoot>
24
- );
25
-
26
- export const Default = Template.bind({});
27
-
28
- Default.args = {
29
- item: items[0],
30
- atlasIMG: atlasIMG,
31
- atlasJSON: atlasJSON,
32
- equipmentSet: equipmentSetMock,
33
- };
1
+ import { Story } from '@storybook/react';
2
+ import React from 'react';
3
+ import {
4
+ IItemInfoDisplayProps,
5
+ ItemInfoDisplay,
6
+ } from '../components/Item/Cards/ItemInfoDisplay';
7
+ import { RPGUIRoot } from '../components/RPGUIRoot';
8
+ import atlasJSON from '../mocks/atlas/items/items.json';
9
+ import atlasIMG from '../mocks/atlas/items/items.png';
10
+ import { equipmentSetMock } from '../mocks/equipmentSet.mocks';
11
+ import { items } from '../mocks/itemContainer.mocks';
12
+
13
+ export default {
14
+ title: 'Item info',
15
+ component: ItemInfoDisplay,
16
+ };
17
+
18
+ const Template: Story<IItemInfoDisplayProps> = args => (
19
+ <RPGUIRoot>
20
+ <div style={{ margin: '2rem' }}>
21
+ <ItemInfoDisplay {...args} />
22
+ </div>
23
+ </RPGUIRoot>
24
+ );
25
+
26
+ export const Default = Template.bind({});
27
+
28
+ Default.args = {
29
+ item: items[0],
30
+ atlasIMG: atlasIMG,
31
+ atlasJSON: atlasJSON,
32
+ equipmentSet: equipmentSetMock,
33
+ };
@@ -1,26 +1,26 @@
1
- import { Meta, Story } from '@storybook/react';
2
- import React from 'react';
3
- import { RPGUIRoot } from '..';
4
- import {
5
- IItemQuantitySelectorProps,
6
- ItemQuantitySelector,
7
- } from '../components/Item/Inventory/ItemQuantitySelector';
8
-
9
- const meta: Meta = {
10
- title: 'Item Quantity Selector',
11
- component: ItemQuantitySelector,
12
- };
13
-
14
- export default meta;
15
-
16
- const Template: Story<IItemQuantitySelectorProps> = args => (
17
- <RPGUIRoot>
18
- <ItemQuantitySelector {...args} />
19
- </RPGUIRoot>
20
- );
21
-
22
- export const Default = Template.bind({});
23
-
24
- Default.args = {
25
- quantity: 10,
26
- };
1
+ import { Meta, Story } from '@storybook/react';
2
+ import React from 'react';
3
+ import { RPGUIRoot } from '..';
4
+ import {
5
+ IItemQuantitySelectorProps,
6
+ ItemQuantitySelector,
7
+ } from '../components/Item/Inventory/ItemQuantitySelector';
8
+
9
+ const meta: Meta = {
10
+ title: 'Item Quantity Selector',
11
+ component: ItemQuantitySelector,
12
+ };
13
+
14
+ export default meta;
15
+
16
+ const Template: Story<IItemQuantitySelectorProps> = args => (
17
+ <RPGUIRoot>
18
+ <ItemQuantitySelector {...args} />
19
+ </RPGUIRoot>
20
+ );
21
+
22
+ export const Default = Template.bind({});
23
+
24
+ Default.args = {
25
+ quantity: 10,
26
+ };
@@ -1,77 +1,77 @@
1
- import { Meta, Story } from '@storybook/react';
2
- import React from 'react';
3
- import { RPGUIRoot } from '..';
4
- import {
5
- IOptionsItemSelectorProps,
6
- ItemSelector,
7
- } from '../components/itemSelector/ItemSelector';
8
- import atlasJSON from '../mocks/atlas/items/items.json';
9
- import atlasIMG from '../mocks/atlas/items/items.png';
10
-
11
- const meta: Meta = {
12
- title: 'Item Selector',
13
- component: ItemSelector,
14
- };
15
-
16
- export default meta;
17
-
18
- const Template: Story = args => (
19
- <RPGUIRoot>
20
- <ItemSelector
21
- atlasIMG={atlasIMG}
22
- atlasJSON={atlasJSON}
23
- options={options}
24
- onSelect={onSelect}
25
- onClose={() => console.log('closing Equipment Set Container')}
26
- {...args}
27
- />
28
- </RPGUIRoot>
29
- );
30
-
31
- export const Default = Template.bind({});
32
-
33
- const onSelect = (value: string): void => {
34
- console.log('Story package', value);
35
- };
36
-
37
- const options: IOptionsItemSelectorProps[] = [
38
- {
39
- name: 'Human',
40
- description: 'Human',
41
- imageKey: 'axes/frost-double-axe.png',
42
- },
43
- {
44
- name: 'Human',
45
- description: 'Human',
46
- imageKey: 'maces/spiked-club.png',
47
- },
48
- {
49
- name: 'Human2',
50
- description: 'Human2',
51
- imageKey: 'axes/frost-double-axe.png',
52
- },
53
- {
54
- name: 'Human3',
55
- description: 'Human3',
56
- imageKey: 'maces/spiked-club.png',
57
- },
58
- {
59
- name: 'Human4',
60
- description: 'Human4',
61
- imageKey: 'axes/frost-double-axe.png',
62
- },
63
- {
64
- name: 'Human5',
65
- description: 'Human5',
66
- imageKey: 'maces/spiked-club.png',
67
- },
68
- {
69
- name: 'Human6',
70
- description: 'Human6',
71
- imageKey: 'axes/frost-double-axe.png',
72
- },
73
- ];
74
-
75
- Default.args = {
76
- options,
77
- };
1
+ import { Meta, Story } from '@storybook/react';
2
+ import React from 'react';
3
+ import { RPGUIRoot } from '..';
4
+ import {
5
+ IOptionsItemSelectorProps,
6
+ ItemSelector,
7
+ } from '../components/itemSelector/ItemSelector';
8
+ import atlasJSON from '../mocks/atlas/items/items.json';
9
+ import atlasIMG from '../mocks/atlas/items/items.png';
10
+
11
+ const meta: Meta = {
12
+ title: 'Item Selector',
13
+ component: ItemSelector,
14
+ };
15
+
16
+ export default meta;
17
+
18
+ const Template: Story = args => (
19
+ <RPGUIRoot>
20
+ <ItemSelector
21
+ atlasIMG={atlasIMG}
22
+ atlasJSON={atlasJSON}
23
+ options={options}
24
+ onSelect={onSelect}
25
+ onClose={() => console.log('closing Equipment Set Container')}
26
+ {...args}
27
+ />
28
+ </RPGUIRoot>
29
+ );
30
+
31
+ export const Default = Template.bind({});
32
+
33
+ const onSelect = (value: string): void => {
34
+ console.log('Story package', value);
35
+ };
36
+
37
+ const options: IOptionsItemSelectorProps[] = [
38
+ {
39
+ name: 'Human',
40
+ description: 'Human',
41
+ imageKey: 'axes/frost-double-axe.png',
42
+ },
43
+ {
44
+ name: 'Human',
45
+ description: 'Human',
46
+ imageKey: 'maces/spiked-club.png',
47
+ },
48
+ {
49
+ name: 'Human2',
50
+ description: 'Human2',
51
+ imageKey: 'axes/frost-double-axe.png',
52
+ },
53
+ {
54
+ name: 'Human3',
55
+ description: 'Human3',
56
+ imageKey: 'maces/spiked-club.png',
57
+ },
58
+ {
59
+ name: 'Human4',
60
+ description: 'Human4',
61
+ imageKey: 'axes/frost-double-axe.png',
62
+ },
63
+ {
64
+ name: 'Human5',
65
+ description: 'Human5',
66
+ imageKey: 'maces/spiked-club.png',
67
+ },
68
+ {
69
+ name: 'Human6',
70
+ description: 'Human6',
71
+ imageKey: 'axes/frost-double-axe.png',
72
+ },
73
+ ];
74
+
75
+ Default.args = {
76
+ options,
77
+ };