@rpg-engine/long-bow 0.3.53 → 0.3.55

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 (163) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +181 -181
  3. package/dist/components/Arrow/SelectArrow.d.ts +1 -1
  4. package/dist/components/Button.d.ts +2 -2
  5. package/dist/components/CircularController/CircularController.d.ts +4 -7
  6. package/dist/components/Item/Inventory/ItemContainer.d.ts +1 -4
  7. package/dist/components/Item/Inventory/ItemSlot.d.ts +1 -2
  8. package/dist/components/Multitab/Tab.d.ts +1 -1
  9. package/dist/components/QuestInfo/QuestInfo.d.ts +1 -1
  10. package/dist/components/Spellbook/QuickSpells.d.ts +10 -0
  11. package/dist/components/Spellbook/Spell.d.ts +1 -1
  12. package/dist/components/Spellbook/Spellbook.d.ts +3 -5
  13. package/dist/components/Spellbook/SpellbookShortcuts.d.ts +10 -0
  14. package/dist/components/Spellbook/constants.d.ts +3 -3
  15. package/dist/components/shared/SpriteFromAtlas.d.ts +1 -1
  16. package/dist/index.d.ts +1 -1
  17. package/dist/long-bow.cjs.development.js +734 -914
  18. package/dist/long-bow.cjs.development.js.map +1 -1
  19. package/dist/long-bow.cjs.production.min.js +1 -1
  20. package/dist/long-bow.cjs.production.min.js.map +1 -1
  21. package/dist/long-bow.esm.js +736 -917
  22. package/dist/long-bow.esm.js.map +1 -1
  23. package/dist/stories/{Shortcuts.stories.d.ts → QuickSpells.stories.d.ts} +2 -2
  24. package/package.json +100 -100
  25. package/src/components/Abstractions/SlotsContainer.tsx +45 -45
  26. package/src/components/Arrow/SelectArrow.tsx +69 -65
  27. package/src/components/Arrow/img/arrow01-left-clicked.png +0 -0
  28. package/src/components/Arrow/img/arrow01-left.png +0 -0
  29. package/src/components/Arrow/img/arrow01-right-clicked.png +0 -0
  30. package/src/components/Arrow/img/arrow01-right.png +0 -0
  31. package/src/components/Arrow/img/arrow02-left-clicked.png +0 -0
  32. package/src/components/Arrow/img/arrow02-left.png +0 -0
  33. package/src/components/Arrow/img/arrow02-right-clicked.png +0 -0
  34. package/src/components/Arrow/img/arrow02-right.png +0 -0
  35. package/src/components/Button.tsx +40 -41
  36. package/src/components/Character/CharacterSelection.tsx +96 -96
  37. package/src/components/CharacterStatus/CharacterStatus.tsx +120 -120
  38. package/src/components/Chat/Chat.tsx +195 -195
  39. package/src/components/Chatdeprecated/ChatDeprecated.tsx +198 -200
  40. package/src/components/CheckButton.tsx +65 -65
  41. package/src/components/CircularController/CircularController.tsx +162 -245
  42. package/src/components/CraftBook/CraftBook.tsx +224 -235
  43. package/src/components/CraftBook/MockItems.ts +46 -46
  44. package/src/components/DraggableContainer.tsx +153 -154
  45. package/src/components/Dropdown.tsx +90 -96
  46. package/src/components/DropdownSelectorContainer.tsx +42 -42
  47. package/src/components/Equipment/EquipmentSet.tsx +190 -190
  48. package/src/components/HistoryDialog.tsx +104 -104
  49. package/src/components/Input.tsx +15 -15
  50. package/src/components/Item/Cards/ItemTooltip.tsx +33 -33
  51. package/src/components/Item/Inventory/ErrorBoundary.tsx +42 -42
  52. package/src/components/Item/Inventory/ItemContainer.tsx +175 -210
  53. package/src/components/Item/Inventory/ItemContainerTypes.ts +6 -6
  54. package/src/components/Item/Inventory/ItemQuantitySelector.tsx +138 -142
  55. package/src/components/Item/Inventory/ItemSlot.tsx +467 -502
  56. package/src/components/Item/Inventory/itemContainerHelper.ts +156 -156
  57. package/src/components/ListMenu.tsx +63 -63
  58. package/src/components/Multitab/Tab.tsx +66 -57
  59. package/src/components/Multitab/TabBody.tsx +13 -13
  60. package/src/components/Multitab/TabsContainer.tsx +97 -97
  61. package/src/components/NPCDialog/NPCDialog.tsx +121 -121
  62. package/src/components/NPCDialog/NPCDialogText.tsx +113 -113
  63. package/src/components/NPCDialog/NPCMultiDialog.tsx +159 -159
  64. package/src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx +237 -237
  65. package/src/components/ProgressBar.tsx +92 -92
  66. package/src/components/PropertySelect/PropertySelect.tsx +106 -114
  67. package/src/components/QuestInfo/QuestInfo.tsx +230 -232
  68. package/src/components/QuestList.tsx +129 -129
  69. package/src/components/RPGUIContainer.tsx +47 -47
  70. package/src/components/RPGUIForceRenderStart.tsx +45 -45
  71. package/src/components/RPGUIRoot.tsx +14 -14
  72. package/src/components/RadioButton.tsx +53 -53
  73. package/src/components/RadioInput/RadioButton.tsx +96 -98
  74. package/src/components/RadioInput/RadioInput.tsx +102 -99
  75. package/src/components/RadioInput/instruments.ts +15 -15
  76. package/src/components/RangeSlider.tsx +78 -78
  77. package/src/components/RelativeListMenu.tsx +83 -83
  78. package/src/components/ScrollList.tsx +79 -79
  79. package/src/components/SimpleProgressBar.tsx +62 -62
  80. package/src/components/SkillProgressBar.tsx +133 -133
  81. package/src/components/SkillsContainer.tsx +198 -200
  82. package/src/components/Spellbook/QuickSpells.tsx +120 -0
  83. package/src/components/Spellbook/Spell.tsx +201 -201
  84. package/src/components/Spellbook/Spellbook.tsx +144 -150
  85. package/src/components/Spellbook/SpellbookShortcuts.tsx +77 -0
  86. package/src/components/Spellbook/constants.ts +12 -8
  87. package/src/components/Spellbook/mockSpells.ts +60 -60
  88. package/src/components/StaticBook/StaticBook.tsx +103 -105
  89. package/src/components/TextArea.tsx +11 -11
  90. package/src/components/TimeWidget/DayNightPeriod/DayNightPeriod.tsx +35 -35
  91. package/src/components/TimeWidget/TimeWidget.tsx +63 -63
  92. package/src/components/TradingMenu/TradingItemRow.tsx +193 -197
  93. package/src/components/TradingMenu/TradingMenu.tsx +203 -203
  94. package/src/components/TradingMenu/items.mock.ts +96 -96
  95. package/src/components/Truncate.tsx +25 -25
  96. package/src/components/itemSelector/ItemSelector.tsx +136 -136
  97. package/src/components/shared/Column.tsx +16 -16
  98. package/src/components/shared/Ellipsis.tsx +65 -65
  99. package/src/components/shared/SpriteFromAtlas.tsx +102 -102
  100. package/src/components/typography/DynamicText.tsx +49 -49
  101. package/src/constants/uiColors.ts +20 -20
  102. package/src/constants/uiDevices.ts +3 -3
  103. package/src/constants/uiFonts.ts +12 -12
  104. package/src/hooks/useEventListener.ts +21 -21
  105. package/src/hooks/useOutsideAlerter.ts +25 -25
  106. package/src/index.tsx +40 -40
  107. package/src/libs/StringHelpers.ts +3 -3
  108. package/src/mocks/atlas/entities/entities.json +20215 -20215
  109. package/src/mocks/atlas/icons/icons.json +735 -735
  110. package/src/mocks/atlas/items/items.json +12086 -12086
  111. package/src/mocks/equipmentSet.mocks.ts +393 -393
  112. package/src/mocks/itemContainer.mocks.ts +560 -562
  113. package/src/mocks/skills.mocks.ts +128 -128
  114. package/src/stories/Arrow.stories.tsx +26 -26
  115. package/src/stories/Button.stories.tsx +36 -36
  116. package/src/stories/CharacterSelection.stories.tsx +45 -45
  117. package/src/stories/CharacterStatus.stories.tsx +29 -29
  118. package/src/stories/Chat.stories.tsx +187 -187
  119. package/src/stories/ChatDeprecated.stories.tsx +170 -170
  120. package/src/stories/CheckButton.stories.tsx +48 -48
  121. package/src/stories/CircullarController.stories.tsx +33 -37
  122. package/src/stories/CraftBook.stories.tsx +40 -40
  123. package/src/stories/DayNightPeriod.stories.tsx +27 -27
  124. package/src/stories/DraggableContainer.stories.tsx +28 -28
  125. package/src/stories/Dropdown.stories.tsx +46 -46
  126. package/src/stories/DropdownSelectorContainer.stories.tsx +41 -41
  127. package/src/stories/EquipmentSet.stories.tsx +65 -65
  128. package/src/stories/HistoryDialog.stories.tsx +61 -61
  129. package/src/stories/ItemContainer.stories.tsx +124 -198
  130. package/src/stories/ItemQuantitySelector.stories.tsx +26 -26
  131. package/src/stories/ItemSelector.stories.tsx +77 -77
  132. package/src/stories/ItemTradingComponent.stories.tsx +35 -35
  133. package/src/stories/ListMenu.stories.tsx +56 -56
  134. package/src/stories/Multitab.stories.tsx +51 -51
  135. package/src/stories/NPCDialog.stories.tsx +130 -130
  136. package/src/stories/NPCMultiDialog.stories.tsx +71 -71
  137. package/src/stories/ProgressBar.stories.tsx +23 -23
  138. package/src/stories/PropertySelect.stories.tsx +40 -40
  139. package/src/stories/QuestInfo.stories.tsx +110 -107
  140. package/src/stories/QuestList.stories.tsx +82 -82
  141. package/src/stories/QuickSpells.stories.tsx +38 -0
  142. package/src/stories/RPGUIContainers.stories.tsx +42 -42
  143. package/src/stories/RadioButton.stories.tsx +49 -49
  144. package/src/stories/RadioInput.stories.tsx +34 -34
  145. package/src/stories/RangeSlider.stories.tsx +64 -64
  146. package/src/stories/ScrollList.stories.tsx +85 -85
  147. package/src/stories/SimpleProgressBar.stories.tsx +22 -22
  148. package/src/stories/SkillProgressBar.stories.tsx +34 -34
  149. package/src/stories/SkillsContainer.stories.tsx +35 -35
  150. package/src/stories/Spellbook.stories.tsx +107 -104
  151. package/src/stories/StaticBook.stories.tsx +32 -32
  152. package/src/stories/Text.stories.tsx +42 -42
  153. package/src/stories/TimeWidget.stories.tsx +27 -27
  154. package/src/stories/TradingMenu.stories.tsx +45 -45
  155. package/src/types/eventTypes.ts +4 -4
  156. package/src/types/index.d.ts +2 -2
  157. package/dist/components/Shortcuts/Shortcuts.d.ts +0 -12
  158. package/dist/components/Shortcuts/ShortcutsSetter.d.ts +0 -12
  159. package/dist/components/Shortcuts/SingleShortcut.d.ts +0 -1
  160. package/src/components/Shortcuts/Shortcuts.tsx +0 -129
  161. package/src/components/Shortcuts/ShortcutsSetter.tsx +0 -132
  162. package/src/components/Shortcuts/SingleShortcut.ts +0 -61
  163. package/src/stories/Shortcuts.stories.tsx +0 -39
@@ -1,235 +1,224 @@
1
- import { ICraftableItem, ItemSubType } from '@rpg-engine/shared';
2
- import React, { useState } from 'react';
3
- import styled from 'styled-components';
4
- import { Button, ButtonTypes } from '../Button';
5
- import { DraggableContainer } from '../DraggableContainer';
6
- import { Dropdown, IOptionsProps } from '../Dropdown';
7
- import { RPGUIContainerTypes } from '../RPGUIContainer';
8
- import { SpriteFromAtlas } from '../shared/SpriteFromAtlas';
9
-
10
- export interface IItemCraftSelectorProps {
11
- atlasJSON: any;
12
- atlasIMG: any;
13
- onClose: () => void;
14
- onSelect: (value: string) => void;
15
- onCraftItem: (value: string | undefined) => void;
16
- craftablesItems: ICraftableItem[];
17
- }
18
-
19
- export interface ShowMessage {
20
- show: boolean;
21
- index: number;
22
- }
23
-
24
- export const CraftBook: React.FC<IItemCraftSelectorProps> = ({
25
- atlasIMG,
26
- atlasJSON,
27
- onClose,
28
- onSelect,
29
- onCraftItem,
30
- craftablesItems,
31
- }) => {
32
- let optionsId: number = 0;
33
- const [isShown, setIsShown] = useState<ShowMessage>({
34
- show: false,
35
- index: 200,
36
- });
37
- const [craftItem, setCraftItem] = useState<string>();
38
-
39
- const getDropdownOptions = () => {
40
- const options: IOptionsProps[] = [];
41
-
42
- Object.keys(ItemSubType).forEach(key => {
43
- if (key === 'CraftingResource' || key === 'DeadBody') {
44
- return; // we can't craft crafting resouces...
45
- }
46
-
47
- options.push({
48
- id: optionsId,
49
- value: key,
50
- option: key,
51
- });
52
- optionsId += 1;
53
- });
54
-
55
- return options;
56
- };
57
-
58
- const modifyString = (str: string) => {
59
- // Split the string by "/" and "."
60
- let parts = str.split('/');
61
- let fileName = parts[parts.length - 1];
62
- parts = fileName.split('.');
63
- let name = parts[0];
64
-
65
- // Replace all occurrences of "-" with " "
66
- name = name.replace(/-/g, ' ');
67
-
68
- // Uppercase the first word
69
- let words = name.split(' ');
70
- let firstWord = words[0].slice(0, 1).toUpperCase() + words[0].slice(1);
71
- let modifiedWords = [firstWord].concat(words.slice(1));
72
- name = modifiedWords.join(' ');
73
-
74
- return name;
75
- };
76
-
77
- const handleClick = (value: string) => {
78
- setCraftItem(value);
79
- };
80
-
81
- return (
82
- <DraggableContainer
83
- type={RPGUIContainerTypes.Framed}
84
- width="500px"
85
- cancelDrag=".equipment-container-body .arrow-selector .rpgui-dropdown-imp"
86
- onCloseButton={() => {
87
- if (onClose) {
88
- onClose();
89
- }
90
- }}
91
- >
92
- <div style={{ width: '100%' }}>
93
- <Title>{'Craftbook'}</Title>
94
- <Subtitle>{'Select an item to craft'}</Subtitle>
95
- <hr className="golden" />
96
- </div>
97
- <Dropdown
98
- options={getDropdownOptions()}
99
- onChange={value => onSelect(value)}
100
- />
101
- <RadioInputScroller>
102
- {craftablesItems?.map((option, index) => (
103
- <RadioOptionsWrapper key={index}>
104
- <SpriteAtlasWrapper>
105
- <SpriteFromAtlas
106
- atlasIMG={atlasIMG}
107
- atlasJSON={atlasJSON}
108
- spriteKey={option.texturePath}
109
- imgScale={3}
110
- grayScale={!option.canCraft}
111
- />
112
- </SpriteAtlasWrapper>
113
- <div>
114
- <div
115
- onClick={() => handleClick(option.key)}
116
- onTouchStart={() => handleClick(option.key)}
117
- >
118
- <input
119
- className="rpgui-radio"
120
- type="radio"
121
- value={option.name}
122
- name="test"
123
- disabled={!option.canCraft}
124
- checked={craftItem === option.key}
125
- onChange={() => handleClick(option.key)}
126
- />
127
- <label
128
- onClick={() => {
129
- handleClick(option.key);
130
- }}
131
- onTouchStart={() => {
132
- setIsShown({ show: true, index: index });
133
- }}
134
- style={{ display: 'flex', alignItems: 'center' }}
135
- onMouseEnter={() => setIsShown({ show: true, index: index })}
136
- onMouseLeave={() => setIsShown({ show: false, index: index })}
137
- >
138
- {modifyString(option.name)}
139
- </label>
140
- </div>
141
-
142
- {isShown &&
143
- isShown.index === index &&
144
- option.ingredients.map((option, index) => (
145
- <Recipes key={index}>
146
- <SpriteFromAtlas
147
- atlasIMG={atlasIMG}
148
- atlasJSON={atlasJSON}
149
- spriteKey={option.texturePath}
150
- imgScale={1}
151
- />
152
- <StyledItem>
153
- {modifyString(option.key)} ({option.qty}x)
154
- </StyledItem>
155
- </Recipes>
156
- ))}
157
- </div>
158
- </RadioOptionsWrapper>
159
- ))}
160
- </RadioInputScroller>
161
- <ButtonWrapper>
162
- <Button
163
- buttonType={ButtonTypes.RPGUIButton}
164
- onClick={onClose}
165
- onTouchStart={onClose}
166
- >
167
- Cancel
168
- </Button>
169
- <Button
170
- buttonType={ButtonTypes.RPGUIButton}
171
- onClick={() => onCraftItem(craftItem)}
172
- onTouchStart={() => onCraftItem(craftItem)}
173
- >
174
- Craft
175
- </Button>
176
- </ButtonWrapper>
177
- </DraggableContainer>
178
- );
179
- };
180
-
181
- const StyledItem = styled.div`
182
- margin-left: 10px;
183
- `;
184
-
185
- const Recipes = styled.div`
186
- font-size: 0.6rem;
187
- color: yellow !important;
188
- margin-bottom: 3px;
189
- display: flex;
190
- align-items: center;
191
-
192
- .sprite-from-atlas-img {
193
- top: 0px;
194
- left: 0px;
195
- }
196
- `;
197
-
198
- const Title = styled.h1`
199
- font-size: 0.6rem;
200
- color: yellow !important;
201
- `;
202
- const Subtitle = styled.h1`
203
- font-size: 0.4rem;
204
- color: yellow !important;
205
- `;
206
-
207
- const RadioInputScroller = styled.div`
208
- padding-left: 15px;
209
- padding-top: 10px;
210
- width: 100%;
211
- margin-top: 1rem;
212
- align-items: center;
213
- margin-left: 20px;
214
- align-items: flex-start;
215
- overflow-y: scroll;
216
- height: 360px;
217
- -webkit-overflow-scrolling: touch;
218
- `;
219
-
220
- const SpriteAtlasWrapper = styled.div`
221
- margin-right: 40px;
222
- `;
223
-
224
- const RadioOptionsWrapper = styled.div`
225
- display: flex;
226
- align-items: stretch;
227
- margin-bottom: 40px;
228
- `;
229
-
230
- const ButtonWrapper = styled.div`
231
- display: flex;
232
- justify-content: space-around;
233
- padding-top: 20px;
234
- width: 100%;
235
- `;
1
+ import { ICraftableItem, ItemSubType } from '@rpg-engine/shared';
2
+ import React, { useState } from 'react';
3
+ import styled from 'styled-components';
4
+ import { Button, ButtonTypes } from '../Button';
5
+ import { DraggableContainer } from '../DraggableContainer';
6
+ import { Dropdown, IOptionsProps } from '../Dropdown';
7
+ import { RPGUIContainerTypes } from '../RPGUIContainer';
8
+ import { SpriteFromAtlas } from '../shared/SpriteFromAtlas';
9
+
10
+ export interface IItemCraftSelectorProps {
11
+ atlasJSON: any;
12
+ atlasIMG: any;
13
+ onClose: () => void;
14
+ onSelect: (value: string) => void;
15
+ onCraftItem: (value: string | undefined) => void;
16
+ craftablesItems: ICraftableItem[];
17
+ }
18
+
19
+ export interface ShowMessage {
20
+ show: boolean;
21
+ index: number;
22
+ }
23
+
24
+ export const CraftBook: React.FC<IItemCraftSelectorProps> = ({
25
+ atlasIMG,
26
+ atlasJSON,
27
+ onClose,
28
+ onSelect,
29
+ onCraftItem,
30
+ craftablesItems,
31
+ }) => {
32
+ let optionsId: number = 0;
33
+ const [isShown, setIsShown] = useState<ShowMessage>({
34
+ show: false,
35
+ index: 200,
36
+ });
37
+ const [craftItem, setCraftItem] = useState<string>();
38
+
39
+ const getDropdownOptions = () => {
40
+ const options: IOptionsProps[] = [];
41
+
42
+ Object.keys(ItemSubType).forEach(key => {
43
+ if (key === 'CraftingResource' || key === 'DeadBody') {
44
+ return; // we can't craft crafting resouces...
45
+ }
46
+
47
+ options.push({
48
+ id: optionsId,
49
+ value: key,
50
+ option: key,
51
+ });
52
+ optionsId += 1;
53
+ });
54
+
55
+ return options;
56
+ };
57
+
58
+ const modifyString = (str: string) => {
59
+ // Split the string by "/" and "."
60
+ let parts = str.split('/');
61
+ let fileName = parts[parts.length - 1];
62
+ parts = fileName.split('.');
63
+ let name = parts[0];
64
+
65
+ // Replace all occurrences of "-" with " "
66
+ name = name.replace(/-/g, ' ');
67
+
68
+ // Uppercase the first word
69
+ let words = name.split(' ');
70
+ let firstWord = words[0].slice(0, 1).toUpperCase() + words[0].slice(1);
71
+ let modifiedWords = [firstWord].concat(words.slice(1));
72
+ name = modifiedWords.join(' ');
73
+
74
+ return name;
75
+ };
76
+
77
+ const handleClick = (value: string) => {
78
+ setCraftItem(value);
79
+ };
80
+
81
+ return (
82
+ <DraggableContainer
83
+ type={RPGUIContainerTypes.Framed}
84
+ width="500px"
85
+ cancelDrag=".equipment-container-body .arrow-selector .rpgui-dropdown-imp"
86
+ onCloseButton={() => {
87
+ if (onClose) {
88
+ onClose();
89
+ }
90
+ }}
91
+ >
92
+ <div style={{ width: '100%' }}>
93
+ <Title>{'Craftbook'}</Title>
94
+ <Subtitle>{'Select an item to craft'}</Subtitle>
95
+ <hr className="golden" />
96
+ </div>
97
+ <Dropdown
98
+ options={getDropdownOptions()}
99
+ onChange={value => onSelect(value)}
100
+ />
101
+ <RadioInputScroller>
102
+ {craftablesItems?.map((option, index) => (
103
+ <RadioOptionsWrapper key={index}>
104
+ <SpriteAtlasWrapper>
105
+ <SpriteFromAtlas
106
+ atlasIMG={atlasIMG}
107
+ atlasJSON={atlasJSON}
108
+ spriteKey={option.texturePath}
109
+ imgScale={3}
110
+ grayScale={!option.canCraft}
111
+ />
112
+ </SpriteAtlasWrapper>
113
+ <div>
114
+ <div onPointerDown={() => handleClick(option.key)}>
115
+ <input
116
+ className="rpgui-radio"
117
+ type="radio"
118
+ value={option.name}
119
+ name="test"
120
+ disabled={!option.canCraft}
121
+ checked={craftItem === option.key}
122
+ onChange={() => handleClick(option.key)}
123
+ />
124
+ <label
125
+ onPointerDown={() => {
126
+ handleClick(option.key);
127
+ }}
128
+ style={{ display: 'flex', alignItems: 'center' }}
129
+ onMouseEnter={() => setIsShown({ show: true, index: index })}
130
+ onMouseLeave={() => setIsShown({ show: false, index: index })}
131
+ >
132
+ {modifyString(option.name)}
133
+ </label>
134
+ </div>
135
+
136
+ {isShown &&
137
+ isShown.index === index &&
138
+ option.ingredients.map((option, index) => (
139
+ <Recipes key={index}>
140
+ <SpriteFromAtlas
141
+ atlasIMG={atlasIMG}
142
+ atlasJSON={atlasJSON}
143
+ spriteKey={option.texturePath}
144
+ imgScale={1}
145
+ />
146
+ <StyledItem>
147
+ {modifyString(option.key)} ({option.qty}x)
148
+ </StyledItem>
149
+ </Recipes>
150
+ ))}
151
+ </div>
152
+ </RadioOptionsWrapper>
153
+ ))}
154
+ </RadioInputScroller>
155
+ <ButtonWrapper>
156
+ <Button buttonType={ButtonTypes.RPGUIButton} onPointerDown={onClose}>
157
+ Cancel
158
+ </Button>
159
+ <Button
160
+ buttonType={ButtonTypes.RPGUIButton}
161
+ onPointerDown={() => onCraftItem(craftItem)}
162
+ >
163
+ Craft
164
+ </Button>
165
+ </ButtonWrapper>
166
+ </DraggableContainer>
167
+ );
168
+ };
169
+
170
+ const StyledItem = styled.div`
171
+ margin-left: 10px;
172
+ `;
173
+
174
+ const Recipes = styled.div`
175
+ font-size: 0.6rem;
176
+ color: yellow !important;
177
+ margin-bottom: 3px;
178
+ display: flex;
179
+ align-items: center;
180
+
181
+ .sprite-from-atlas-img {
182
+ top: 0px;
183
+ left: 0px;
184
+ }
185
+ `;
186
+
187
+ const Title = styled.h1`
188
+ font-size: 0.6rem;
189
+ color: yellow !important;
190
+ `;
191
+ const Subtitle = styled.h1`
192
+ font-size: 0.4rem;
193
+ color: yellow !important;
194
+ `;
195
+
196
+ const RadioInputScroller = styled.div`
197
+ padding-left: 15px;
198
+ padding-top: 10px;
199
+ width: 100%;
200
+ margin-top: 1rem;
201
+ align-items: center;
202
+ margin-left: 20px;
203
+ align-items: flex-start;
204
+ overflow-y: scroll;
205
+ height: 360px;
206
+ -webkit-overflow-scrolling: touch;
207
+ `;
208
+
209
+ const SpriteAtlasWrapper = styled.div`
210
+ margin-right: 40px;
211
+ `;
212
+
213
+ const RadioOptionsWrapper = styled.div`
214
+ display: flex;
215
+ align-items: stretch;
216
+ margin-bottom: 40px;
217
+ `;
218
+
219
+ const ButtonWrapper = styled.div`
220
+ display: flex;
221
+ justify-content: space-around;
222
+ padding-top: 20px;
223
+ width: 100%;
224
+ `;
@@ -1,46 +1,46 @@
1
- import { ICraftableItem } from '@rpg-engine/shared';
2
-
3
- export const craftableItems: ICraftableItem[] = [
4
- {
5
- key: 'bandana',
6
- name: 'Bandana',
7
- canCraft: true,
8
- texturePath: 'accessories/bandana.png',
9
- ingredients: [
10
- {
11
- key: 'leather',
12
- name: 'leather',
13
- qty: 10,
14
- texturePath: 'crafting-resources/leather.png',
15
- },
16
- ],
17
- },
18
- {
19
- key: 'bandana1',
20
- name: 'Bandana',
21
- canCraft: true,
22
- texturePath: 'accessories/bandana.png',
23
- ingredients: [
24
- {
25
- key: 'leather',
26
- name: 'leather',
27
- qty: 10,
28
- texturePath: 'crafting-resources/leather.png',
29
- },
30
- ],
31
- },
32
- {
33
- key: 'bandana2',
34
- name: 'Bandana',
35
- canCraft: true,
36
- texturePath: 'accessories/bandana.png',
37
- ingredients: [
38
- {
39
- key: 'leather',
40
- name: 'leather',
41
- qty: 10,
42
- texturePath: 'crafting-resources/leather.png',
43
- },
44
- ],
45
- },
46
- ];
1
+ import { ICraftableItem } from '@rpg-engine/shared';
2
+
3
+ export const craftableItems: ICraftableItem[] = [
4
+ {
5
+ key: 'bandana',
6
+ name: 'Bandana',
7
+ canCraft: true,
8
+ texturePath: 'accessories/bandana.png',
9
+ ingredients: [
10
+ {
11
+ key: 'leather',
12
+ name: 'leather',
13
+ qty: 10,
14
+ texturePath: 'crafting-resources/leather.png',
15
+ },
16
+ ],
17
+ },
18
+ {
19
+ key: 'bandana1',
20
+ name: 'Bandana',
21
+ canCraft: true,
22
+ texturePath: 'accessories/bandana.png',
23
+ ingredients: [
24
+ {
25
+ key: 'leather',
26
+ name: 'leather',
27
+ qty: 10,
28
+ texturePath: 'crafting-resources/leather.png',
29
+ },
30
+ ],
31
+ },
32
+ {
33
+ key: 'bandana2',
34
+ name: 'Bandana',
35
+ canCraft: true,
36
+ texturePath: 'accessories/bandana.png',
37
+ ingredients: [
38
+ {
39
+ key: 'leather',
40
+ name: 'leather',
41
+ qty: 10,
42
+ texturePath: 'crafting-resources/leather.png',
43
+ },
44
+ ],
45
+ },
46
+ ];