@rpg-engine/long-bow 0.4.82 → 0.4.84

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 (169) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +181 -181
  3. package/dist/components/SkillProgressBar.d.ts +1 -0
  4. package/dist/long-bow.cjs.development.js +1065 -1054
  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 +1067 -1056
  9. package/dist/long-bow.esm.js.map +1 -1
  10. package/package.json +100 -100
  11. package/src/components/Abstractions/ModalPortal.tsx +22 -22
  12. package/src/components/Abstractions/SlotsContainer.tsx +62 -62
  13. package/src/components/Arrow/SelectArrow.tsx +69 -69
  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 +40 -40
  23. package/src/components/Character/CharacterSelection.tsx +98 -98
  24. package/src/components/CharacterStatus/CharacterStatus.tsx +120 -120
  25. package/src/components/Chat/Chat.tsx +196 -196
  26. package/src/components/Chatdeprecated/ChatDeprecated.tsx +198 -198
  27. package/src/components/CheckButton.tsx +65 -65
  28. package/src/components/CircularController/CircularController.tsx +282 -282
  29. package/src/components/ConfirmModal.tsx +87 -87
  30. package/src/components/CraftBook/CraftBook.tsx +286 -286
  31. package/src/components/CraftBook/CraftingRecipe.tsx +161 -161
  32. package/src/components/CraftBook/MockItems.ts +101 -101
  33. package/src/components/DraggableContainer.tsx +183 -183
  34. package/src/components/Dropdown.tsx +114 -114
  35. package/src/components/DropdownSelectorContainer.tsx +42 -42
  36. package/src/components/Equipment/EquipmentSet.tsx +199 -199
  37. package/src/components/HistoryDialog.tsx +104 -104
  38. package/src/components/Input.tsx +15 -15
  39. package/src/components/InputRadio.tsx +41 -41
  40. package/src/components/Item/Cards/ItemInfo.tsx +298 -298
  41. package/src/components/Item/Cards/ItemInfoDisplay.tsx +135 -135
  42. package/src/components/Item/Cards/ItemInfoWrapper.tsx +62 -62
  43. package/src/components/Item/Cards/ItemTooltip.tsx +83 -83
  44. package/src/components/Item/Cards/MobileItemTooltip.tsx +149 -149
  45. package/src/components/Item/Inventory/ErrorBoundary.tsx +42 -42
  46. package/src/components/Item/Inventory/ItemContainer.tsx +231 -231
  47. package/src/components/Item/Inventory/ItemContainerTypes.ts +6 -6
  48. package/src/components/Item/Inventory/ItemQuantitySelector.tsx +138 -138
  49. package/src/components/Item/Inventory/ItemSlot.tsx +595 -595
  50. package/src/components/Item/Inventory/itemContainerHelper.ts +175 -175
  51. package/src/components/ListMenu.tsx +63 -63
  52. package/src/components/Marketplace/BuyPanel.tsx +304 -304
  53. package/src/components/Marketplace/ManagmentPanel.tsx +255 -255
  54. package/src/components/Marketplace/Marketplace.tsx +106 -106
  55. package/src/components/Marketplace/MarketplaceRows.tsx +177 -177
  56. package/src/components/Marketplace/filters/index.tsx +67 -67
  57. package/src/components/Multitab/Tab.tsx +66 -66
  58. package/src/components/Multitab/TabBody.tsx +13 -13
  59. package/src/components/Multitab/TabsContainer.tsx +97 -97
  60. package/src/components/NPCDialog/NPCDialog.tsx +121 -121
  61. package/src/components/NPCDialog/NPCDialogText.tsx +113 -113
  62. package/src/components/NPCDialog/NPCMultiDialog.tsx +159 -159
  63. package/src/components/NPCDialog/QuestionDialog/QuestionDialog.tsx +237 -237
  64. package/src/components/Pager.tsx +94 -94
  65. package/src/components/ProgressBar.tsx +102 -102
  66. package/src/components/PropertySelect/PropertySelect.tsx +106 -106
  67. package/src/components/QuestInfo/QuestInfo.tsx +233 -233
  68. package/src/components/QuestList.tsx +135 -135
  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 -96
  74. package/src/components/RadioInput/RadioInput.tsx +102 -102
  75. package/src/components/RadioInput/instruments.ts +15 -15
  76. package/src/components/RangeSlider.tsx +78 -78
  77. package/src/components/RelativeListMenu.tsx +90 -90
  78. package/src/components/ScrollList.tsx +79 -79
  79. package/src/components/Shortcuts/Shortcuts.tsx +193 -193
  80. package/src/components/Shortcuts/ShortcutsSetter.tsx +139 -139
  81. package/src/components/Shortcuts/SingleShortcut.ts +82 -82
  82. package/src/components/Shortcuts/useShortcutCooldown.ts +23 -23
  83. package/src/components/SimpleProgressBar.tsx +62 -62
  84. package/src/components/SkillProgressBar.tsx +196 -206
  85. package/src/components/SkillsContainer.tsx +242 -213
  86. package/src/components/Spellbook/Spell.tsx +235 -235
  87. package/src/components/Spellbook/Spellbook.tsx +145 -145
  88. package/src/components/Spellbook/cards/MobileSpellTooltip.tsx +137 -137
  89. package/src/components/Spellbook/cards/SpellInfo.tsx +134 -134
  90. package/src/components/Spellbook/cards/SpellInfoDisplay.tsx +31 -31
  91. package/src/components/Spellbook/cards/SpellInfoWrapper.tsx +48 -48
  92. package/src/components/Spellbook/cards/SpellTooltip.tsx +70 -70
  93. package/src/components/Spellbook/constants.ts +7 -7
  94. package/src/components/Spellbook/mockSpells.ts +84 -84
  95. package/src/components/StaticBook/StaticBook.tsx +103 -103
  96. package/src/components/TextArea.tsx +11 -11
  97. package/src/components/TimeWidget/DayNightPeriod/DayNightPeriod.tsx +35 -35
  98. package/src/components/TimeWidget/TimeWidget.tsx +65 -65
  99. package/src/components/TradingMenu/TradingItemRow.tsx +199 -199
  100. package/src/components/TradingMenu/TradingMenu.tsx +219 -219
  101. package/src/components/TradingMenu/items.mock.ts +48 -48
  102. package/src/components/Truncate.tsx +25 -25
  103. package/src/components/itemSelector/ItemSelector.tsx +136 -136
  104. package/src/components/shared/Column.tsx +16 -16
  105. package/src/components/shared/Ellipsis.tsx +76 -76
  106. package/src/components/shared/SpriteFromAtlas.tsx +104 -104
  107. package/src/components/typography/DynamicText.tsx +49 -49
  108. package/src/constants/uiColors.ts +20 -20
  109. package/src/constants/uiDevices.ts +3 -3
  110. package/src/constants/uiFonts.ts +12 -12
  111. package/src/hooks/useEventListener.ts +21 -21
  112. package/src/hooks/useOutsideAlerter.ts +25 -25
  113. package/src/index.tsx +42 -42
  114. package/src/libs/CastingTypeHelper.ts +7 -7
  115. package/src/libs/StringHelpers.ts +3 -3
  116. package/src/libs/itemCounter.ts +21 -21
  117. package/src/mocks/atlas/entities/entities.json +20215 -20215
  118. package/src/mocks/atlas/icons/icons.json +735 -735
  119. package/src/mocks/atlas/items/items.json +12086 -12086
  120. package/src/mocks/equipmentSet.mocks.ts +391 -391
  121. package/src/mocks/itemContainer.mocks.ts +605 -605
  122. package/src/mocks/skills.mocks.ts +130 -130
  123. package/src/stories/Arrow.stories.tsx +26 -26
  124. package/src/stories/Button.stories.tsx +36 -36
  125. package/src/stories/CharacterSelection.stories.tsx +44 -44
  126. package/src/stories/CharacterStatus.stories.tsx +29 -29
  127. package/src/stories/Chat.stories.tsx +187 -187
  128. package/src/stories/ChatDeprecated.stories.tsx +170 -170
  129. package/src/stories/CheckButton.stories.tsx +48 -48
  130. package/src/stories/CircullarController.stories.tsx +37 -37
  131. package/src/stories/CraftBook.stories.tsx +42 -42
  132. package/src/stories/DayNightPeriod.stories.tsx +27 -27
  133. package/src/stories/DraggableContainer.stories.tsx +28 -28
  134. package/src/stories/Dropdown.stories.tsx +46 -46
  135. package/src/stories/DropdownSelectorContainer.stories.tsx +41 -41
  136. package/src/stories/EquipmentSet.stories.tsx +65 -65
  137. package/src/stories/HistoryDialog.stories.tsx +61 -61
  138. package/src/stories/ItemContainer.stories.tsx +201 -201
  139. package/src/stories/ItemInfoDisplay.stories.tsx +33 -33
  140. package/src/stories/ItemQuantitySelector.stories.tsx +26 -26
  141. package/src/stories/ItemSelector.stories.tsx +77 -77
  142. package/src/stories/ItemTradingComponent.stories.tsx +35 -35
  143. package/src/stories/ListMenu.stories.tsx +56 -56
  144. package/src/stories/Marketplace.stories.tsx +57 -57
  145. package/src/stories/MarketplaceRows.stories.tsx +27 -27
  146. package/src/stories/Multitab.stories.tsx +51 -51
  147. package/src/stories/NPCDialog.stories.tsx +130 -130
  148. package/src/stories/NPCMultiDialog.stories.tsx +71 -71
  149. package/src/stories/ProgressBar.stories.tsx +24 -24
  150. package/src/stories/PropertySelect.stories.tsx +40 -40
  151. package/src/stories/QuestInfo.stories.tsx +107 -107
  152. package/src/stories/QuestList.stories.tsx +82 -82
  153. package/src/stories/RPGUIContainers.stories.tsx +42 -42
  154. package/src/stories/RadioButton.stories.tsx +49 -49
  155. package/src/stories/RadioInput.stories.tsx +34 -34
  156. package/src/stories/RangeSlider.stories.tsx +64 -64
  157. package/src/stories/ScrollList.stories.tsx +85 -85
  158. package/src/stories/Shortcuts.stories.tsx +39 -39
  159. package/src/stories/SimpleProgressBar.stories.tsx +22 -22
  160. package/src/stories/SkillProgressBar.stories.tsx +34 -34
  161. package/src/stories/SkillsContainer.stories.tsx +35 -35
  162. package/src/stories/SpellInfoDisplay.stories.tsx +27 -27
  163. package/src/stories/Spellbook.stories.tsx +104 -104
  164. package/src/stories/StaticBook.stories.tsx +32 -32
  165. package/src/stories/Text.stories.tsx +42 -42
  166. package/src/stories/TimeWidget.stories.tsx +27 -27
  167. package/src/stories/TradingMenu.stories.tsx +47 -47
  168. package/src/types/eventTypes.ts +4 -4
  169. package/src/types/index.d.ts +2 -2
@@ -1,213 +1,242 @@
1
- import { ISkill, ISkillDetails } from '@rpg-engine/shared';
2
- import React from 'react';
3
- import styled from 'styled-components';
4
- import { uiColors } from '../constants/uiColors';
5
- import { DraggableContainer } from './DraggableContainer';
6
- import { SkillProgressBar } from './SkillProgressBar';
7
-
8
- export interface ISkillContainerProps {
9
- skill: ISkill;
10
- onCloseButton: () => void;
11
- atlasJSON: any;
12
- atlasIMG: any;
13
- scale?: number;
14
- }
15
-
16
- const skillProps = {
17
- attributes: {
18
- color: uiColors.purple,
19
- values: {
20
- stamina: 'spell-icons/regenerate.png',
21
- magic: 'spell-icons/fireball.png',
22
- magicResistance: 'spell-icons/freeze.png',
23
- strength: 'spell-icons/enchanted-blow.png',
24
- resistance: 'spell-icons/magic-shield.png',
25
- dexterity: 'spell-icons/haste.png',
26
- },
27
- },
28
- combat: {
29
- color: uiColors.cardinal,
30
- values: {
31
- first: 'gloves/leather-gloves.png',
32
- club: 'maces/club.png',
33
- sword: 'swords/double-edged-sword.png',
34
- axe: 'axes/double-axe.png',
35
- distance: 'ranged-weapons/horse-bow.png',
36
- shielding: 'shields/studded-shield.png',
37
- dagger: 'daggers/dagger.png',
38
- },
39
- },
40
- crafting: {
41
- color: uiColors.blue,
42
- values: {
43
- fishing: 'foods/fish.png',
44
- mining: 'crafting-resources/iron-ingot.png',
45
- lumberjacking: 'crafting-resources/greater-wooden-log.png',
46
- blacksmithing: 'hammers/hammer.png',
47
- cooking: 'foods/chickens-meat.png',
48
- alchemy: 'potions/greater-mana-potion.png',
49
- },
50
- },
51
- };
52
-
53
- interface SkillMap {
54
- [key: string]: string;
55
- }
56
-
57
- const skillNameMap: SkillMap = {
58
- stamina: 'Stamina',
59
- magic: 'Magic',
60
- magicResistance: 'Magic Resistance',
61
- strength: 'Strength',
62
- resistance: 'Resistance',
63
- dexterity: 'Dexterity',
64
- first: 'Fist',
65
- club: 'Club',
66
- sword: 'Sword',
67
- axe: 'Axe',
68
- distance: 'Distance',
69
- shielding: 'Shielding',
70
- dagger: 'Dagger',
71
- fishing: 'Fishing',
72
- mining: 'Mining',
73
- lumberjacking: 'Lumberjacking',
74
- blacksmithing: 'Blacksmithing',
75
- cooking: 'Cooking',
76
- alchemy: 'Alchemy',
77
- };
78
-
79
- export const SkillsContainer: React.FC<ISkillContainerProps> = ({
80
- onCloseButton,
81
- skill,
82
- atlasIMG,
83
- atlasJSON,
84
- scale,
85
- }) => {
86
- const onRenderSkillCategory = (
87
- category: 'attributes' | 'combat' | 'crafting'
88
- ) => {
89
- const skillCategory = skillProps[category];
90
-
91
- const skillCategoryColor = skillCategory.color;
92
-
93
- const output = [];
94
-
95
- for (const [key, value] of Object.entries(skillCategory.values)) {
96
- if (key === 'stamina') {
97
- continue;
98
- }
99
- //@ts-ignore
100
- const skillDetails = (skill[key] as unknown) as ISkillDetails;
101
-
102
- output.push(
103
- <SkillProgressBar
104
- key={key}
105
- skillName={skillNameMap[key]}
106
- bgColor={skillCategoryColor}
107
- level={skillDetails.level || 0}
108
- skillPoints={Math.round(skillDetails.skillPoints) || 0}
109
- skillPointsToNextLevel={
110
- Math.round(skillDetails.skillPointsToNextLevel) || 0
111
- }
112
- texturePath={value}
113
- atlasIMG={atlasIMG}
114
- atlasJSON={atlasJSON}
115
- buffAndDebuff={skillDetails.buffAndDebuff}
116
- />
117
- );
118
- }
119
-
120
- return output;
121
- };
122
-
123
- return (
124
- <SkillsDraggableContainer
125
- title="Skills"
126
- cancelDrag="#skillsDiv"
127
- scale={scale}
128
- width="100%"
129
- >
130
- {onCloseButton && (
131
- <CloseButton onPointerDown={onCloseButton}>X</CloseButton>
132
- )}
133
- <SkillsContainerDiv id="skillsDiv">
134
- <SkillSplitDiv>
135
- <p>General</p>
136
- <hr className="golden" />
137
-
138
- <SkillProgressBar
139
- skillName={'Level'}
140
- bgColor={uiColors.navyBlue}
141
- level={Math.round(skill.level) || 0}
142
- skillPoints={Math.round(skill.experience) || 0}
143
- skillPointsToNextLevel={Math.round(skill.xpToNextLevel) || 0}
144
- texturePath={'swords/broad-sword.png'}
145
- atlasIMG={atlasIMG}
146
- atlasJSON={atlasJSON}
147
- />
148
-
149
- <p>Combat Skills</p>
150
- <hr className="golden" />
151
- </SkillSplitDiv>
152
-
153
- {onRenderSkillCategory('combat')}
154
-
155
- <SkillSplitDiv>
156
- <p>Crafting Skills</p>
157
- <hr className="golden" />
158
- </SkillSplitDiv>
159
-
160
- {onRenderSkillCategory('crafting')}
161
-
162
- <SkillSplitDiv>
163
- <p>Basic Attributes</p>
164
- <hr className="golden" />
165
- </SkillSplitDiv>
166
-
167
- {onRenderSkillCategory('attributes')}
168
- </SkillsContainerDiv>
169
- </SkillsDraggableContainer>
170
- );
171
- };
172
-
173
- const SkillsDraggableContainer = styled(DraggableContainer)`
174
- border: 1px solid black;
175
-
176
- max-width: 450px;
177
-
178
- height: 90%;
179
- .DraggableContainer__TitleContainer-sc-184mpyl-2 {
180
- width: auto;
181
- height: auto;
182
- }
183
- `;
184
-
185
- const SkillsContainerDiv = styled.div`
186
- width: 100%;
187
- -webkit-overflow-y: scroll;
188
- overflow-y: scroll;
189
- height: 90%;
190
- padding-right: 10px;
191
- `;
192
-
193
- const SkillSplitDiv = styled.div`
194
- width: 100%;
195
- font-size: 11px;
196
- hr {
197
- margin: 0;
198
- margin-bottom: 1rem;
199
- padding: 0px;
200
- }
201
- p {
202
- margin-bottom: 0px;
203
- }
204
- `;
205
-
206
- const CloseButton = styled.div`
207
- position: absolute;
208
- top: 2px;
209
- right: 2px;
210
- color: white;
211
- z-index: 22;
212
- font-size: 1.1rem;
213
- `;
1
+ import {
2
+ ISkill,
3
+ ISkillDetails,
4
+ getSPForLevel,
5
+ getXPForLevel,
6
+ } from '@rpg-engine/shared';
7
+ import React from 'react';
8
+ import styled from 'styled-components';
9
+ import { uiColors } from '../constants/uiColors';
10
+ import { DraggableContainer } from './DraggableContainer';
11
+ import { SkillProgressBar } from './SkillProgressBar';
12
+
13
+ export interface ISkillContainerProps {
14
+ skill: ISkill;
15
+ onCloseButton: () => void;
16
+ atlasJSON: any;
17
+ atlasIMG: any;
18
+ scale?: number;
19
+ }
20
+
21
+ const skillProps = {
22
+ attributes: {
23
+ color: uiColors.purple,
24
+ values: {
25
+ stamina: 'spell-icons/regenerate.png',
26
+ magic: 'spell-icons/fireball.png',
27
+ magicResistance: 'spell-icons/freeze.png',
28
+ strength: 'spell-icons/enchanted-blow.png',
29
+ resistance: 'spell-icons/magic-shield.png',
30
+ dexterity: 'spell-icons/haste.png',
31
+ },
32
+ },
33
+ combat: {
34
+ color: uiColors.cardinal,
35
+ values: {
36
+ first: 'gloves/leather-gloves.png',
37
+ club: 'maces/club.png',
38
+ sword: 'swords/double-edged-sword.png',
39
+ axe: 'axes/double-axe.png',
40
+ distance: 'ranged-weapons/horse-bow.png',
41
+ shielding: 'shields/studded-shield.png',
42
+ dagger: 'daggers/dagger.png',
43
+ },
44
+ },
45
+ crafting: {
46
+ color: uiColors.blue,
47
+ values: {
48
+ fishing: 'foods/fish.png',
49
+ mining: 'crafting-resources/iron-ingot.png',
50
+ lumberjacking: 'crafting-resources/greater-wooden-log.png',
51
+ blacksmithing: 'hammers/hammer.png',
52
+ cooking: 'foods/chickens-meat.png',
53
+ alchemy: 'potions/greater-mana-potion.png',
54
+ },
55
+ },
56
+ };
57
+
58
+ interface SkillMap {
59
+ [key: string]: string;
60
+ }
61
+
62
+ const skillNameMap: SkillMap = {
63
+ stamina: 'Stamina',
64
+ magic: 'Magic',
65
+ magicResistance: 'Magic Resistance',
66
+ strength: 'Strength',
67
+ resistance: 'Resistance',
68
+ dexterity: 'Dexterity',
69
+ first: 'Fist',
70
+ club: 'Club',
71
+ sword: 'Sword',
72
+ axe: 'Axe',
73
+ distance: 'Distance',
74
+ shielding: 'Shielding',
75
+ dagger: 'Dagger',
76
+ fishing: 'Fishing',
77
+ mining: 'Mining',
78
+ lumberjacking: 'Lumberjacking',
79
+ blacksmithing: 'Blacksmithing',
80
+ cooking: 'Cooking',
81
+ alchemy: 'Alchemy',
82
+ };
83
+
84
+ export const SkillsContainer: React.FC<ISkillContainerProps> = ({
85
+ onCloseButton,
86
+ skill,
87
+ atlasIMG,
88
+ atlasJSON,
89
+ scale,
90
+ }) => {
91
+ const SPRatio = (level: number, skillPoints: number) => {
92
+ const SPLevelActual = getSPForLevel(level + 1);
93
+ const SPLevelBefore = getSPForLevel(level);
94
+ const SPCalc = SPLevelActual - SPLevelBefore;
95
+ if (level === 1) {
96
+ return (skillPoints / SPLevelActual) * 100;
97
+ }
98
+ return ((skillPoints - SPLevelBefore) / SPCalc) * 100;
99
+ };
100
+
101
+ const XPRatio = (level: number, skillPoints: number) => {
102
+ const XPLevelActual = getXPForLevel(level + 1);
103
+ const XPLevelBefore = getXPForLevel(level);
104
+ const XPCalc = XPLevelActual - XPLevelBefore;
105
+ if (level === 1) {
106
+ return (skillPoints / XPLevelActual) * 100;
107
+ }
108
+ return ((skillPoints - XPLevelBefore) / XPCalc) * 100;
109
+ };
110
+
111
+ const onRenderSkillCategory = (
112
+ category: 'attributes' | 'combat' | 'crafting'
113
+ ) => {
114
+ const skillCategory = skillProps[category];
115
+
116
+ const skillCategoryColor = skillCategory.color;
117
+
118
+ const output = [];
119
+
120
+ for (const [key, value] of Object.entries(skillCategory.values)) {
121
+ if (key === 'stamina') {
122
+ continue;
123
+ }
124
+ //@ts-ignore
125
+ const skillDetails = (skill[key] as unknown) as ISkillDetails;
126
+
127
+ output.push(
128
+ <SkillProgressBar
129
+ key={key}
130
+ skillName={skillNameMap[key]}
131
+ bgColor={skillCategoryColor}
132
+ level={skillDetails.level || 0}
133
+ skillPoints={Math.round(skillDetails.skillPoints) || 0}
134
+ skillPointsToNextLevel={
135
+ Math.round(getSPForLevel(skillDetails.level + 1)) || 0
136
+ }
137
+ texturePath={value}
138
+ atlasIMG={atlasIMG}
139
+ atlasJSON={atlasJSON}
140
+ buffAndDebuff={skillDetails.buffAndDebuff}
141
+ ratio={SPRatio(skillDetails.level, skillDetails.skillPoints)}
142
+ />
143
+ );
144
+ }
145
+
146
+ return output;
147
+ };
148
+
149
+ return (
150
+ <SkillsDraggableContainer
151
+ title="Skills"
152
+ cancelDrag="#skillsDiv"
153
+ scale={scale}
154
+ width="100%"
155
+ >
156
+ {onCloseButton && (
157
+ <CloseButton onPointerDown={onCloseButton}>X</CloseButton>
158
+ )}
159
+ <SkillsContainerDiv id="skillsDiv">
160
+ <SkillSplitDiv>
161
+ <p>General</p>
162
+ <hr className="golden" />
163
+
164
+ <SkillProgressBar
165
+ skillName={'Level'}
166
+ bgColor={uiColors.navyBlue}
167
+ level={Math.round(skill.level) || 0}
168
+ skillPoints={Math.round(skill.experience) || 0}
169
+ skillPointsToNextLevel={
170
+ Math.round(getXPForLevel(skill.level + 1)) || 0
171
+ }
172
+ texturePath={'swords/broad-sword.png'}
173
+ atlasIMG={atlasIMG}
174
+ atlasJSON={atlasJSON}
175
+ ratio={XPRatio(skill.level, skill.experience)}
176
+ />
177
+
178
+ <p>Combat Skills</p>
179
+ <hr className="golden" />
180
+ </SkillSplitDiv>
181
+
182
+ {onRenderSkillCategory('combat')}
183
+
184
+ <SkillSplitDiv>
185
+ <p>Crafting Skills</p>
186
+ <hr className="golden" />
187
+ </SkillSplitDiv>
188
+
189
+ {onRenderSkillCategory('crafting')}
190
+
191
+ <SkillSplitDiv>
192
+ <p>Basic Attributes</p>
193
+ <hr className="golden" />
194
+ </SkillSplitDiv>
195
+
196
+ {onRenderSkillCategory('attributes')}
197
+ </SkillsContainerDiv>
198
+ </SkillsDraggableContainer>
199
+ );
200
+ };
201
+
202
+ const SkillsDraggableContainer = styled(DraggableContainer)`
203
+ border: 1px solid black;
204
+
205
+ max-width: 450px;
206
+
207
+ height: 90%;
208
+ .DraggableContainer__TitleContainer-sc-184mpyl-2 {
209
+ width: auto;
210
+ height: auto;
211
+ }
212
+ `;
213
+
214
+ const SkillsContainerDiv = styled.div`
215
+ width: 100%;
216
+ -webkit-overflow-y: scroll;
217
+ overflow-y: scroll;
218
+ height: 90%;
219
+ padding-right: 10px;
220
+ `;
221
+
222
+ const SkillSplitDiv = styled.div`
223
+ width: 100%;
224
+ font-size: 11px;
225
+ hr {
226
+ margin: 0;
227
+ margin-bottom: 1rem;
228
+ padding: 0px;
229
+ }
230
+ p {
231
+ margin-bottom: 0px;
232
+ }
233
+ `;
234
+
235
+ const CloseButton = styled.div`
236
+ position: absolute;
237
+ top: 2px;
238
+ right: 2px;
239
+ color: white;
240
+ z-index: 22;
241
+ font-size: 1.1rem;
242
+ `;