@rpg-engine/long-bow 0.3.47 → 0.3.49

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