@rpg-engine/long-bow 0.2.27 → 0.2.29

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 (34) hide show
  1. package/dist/components/SkillProgressBar.d.ts +2 -0
  2. package/dist/components/SkillsContainer.d.ts +2 -0
  3. package/dist/components/TradingMenu/TrandingMenu.d.ts +12 -0
  4. package/dist/components/TradingMenu/itemComponent.d.ts +9 -0
  5. package/dist/components/TradingMenu/items.mock.d.ts +2 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/long-bow.cjs.development.js +408 -414
  8. package/dist/long-bow.cjs.development.js.map +1 -1
  9. package/dist/long-bow.cjs.production.min.js +1 -1
  10. package/dist/long-bow.cjs.production.min.js.map +1 -1
  11. package/dist/long-bow.esm.js +407 -418
  12. package/dist/long-bow.esm.js.map +1 -1
  13. package/dist/stories/ItemTradingComponent.stories.d.ts +5 -0
  14. package/dist/stories/TrandingMenu.stories.d.ts +5 -0
  15. package/package.json +2 -2
  16. package/src/components/Character/CharacterSelection.tsx +1 -1
  17. package/src/components/Item/Inventory/ItemSlot.tsx +6 -4
  18. package/src/components/NPCDialog/.DS_Store +0 -0
  19. package/src/components/ScrollList.tsx +2 -1
  20. package/src/components/SkillProgressBar.tsx +4 -2
  21. package/src/components/SkillsContainer.tsx +8 -37
  22. package/src/components/TradingMenu/TrandingMenu.tsx +190 -0
  23. package/src/components/TradingMenu/itemComponent.tsx +158 -0
  24. package/src/components/TradingMenu/items.mock.ts +87 -0
  25. package/src/index.tsx +1 -0
  26. package/src/mocks/.DS_Store +0 -0
  27. package/src/mocks/equipmentSet.mocks.ts +3 -5
  28. package/src/mocks/itemContainer.mocks.ts +20 -32
  29. package/src/stories/ItemTradingComponent.stories.tsx +39 -0
  30. package/src/stories/SkillProgressBar.stories.tsx +4 -0
  31. package/src/stories/SkillsContainer.stories.tsx +4 -0
  32. package/src/stories/TrandingMenu.stories.tsx +38 -0
  33. package/dist/libs/ItemSlotHelper.d.ts +0 -2
  34. package/src/libs/ItemSlotHelper.ts +0 -25
@@ -0,0 +1,5 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { ITradeComponentProps } from '../components/TradingMenu/itemComponent';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ export declare const Default: import("@storybook/csf").AnnotatedStoryFn<import("@storybook/react").ReactFramework, ITradeComponentProps>;
@@ -0,0 +1,5 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { ITrandingMenu } from '../components/TradingMenu/TrandingMenu';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ export declare const Default: import("@storybook/csf").AnnotatedStoryFn<import("@storybook/react").ReactFramework, ITrandingMenu>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpg-engine/long-bow",
3
- "version": "0.2.27",
3
+ "version": "0.2.29",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -83,7 +83,7 @@
83
83
  },
84
84
  "dependencies": {
85
85
  "@rollup/plugin-image": "^2.1.1",
86
- "@rpg-engine/shared": "^0.4.58",
86
+ "@rpg-engine/shared": "^0.5.60",
87
87
  "dayjs": "^1.11.2",
88
88
  "fs-extra": "^10.1.0",
89
89
  "lodash": "^4.17.21",
@@ -38,7 +38,7 @@ export const CharacterSelection: React.FC<ICharacterSelectionProps> = ({
38
38
  const textureKey = selectedValue ? selectedValue.id : '';
39
39
  const spriteKey = textureKey ? textureKey + '/down/standing/0.png' : '';
40
40
 
41
- if (spriteKey == selectedSpriteKey) {
41
+ if (spriteKey === selectedSpriteKey) {
42
42
  return;
43
43
  }
44
44
 
@@ -1,4 +1,5 @@
1
1
  import {
2
+ getItemTextureKeyPath,
2
3
  IItem,
3
4
  IItemContainer,
4
5
  ItemContainerType,
@@ -9,12 +10,12 @@ import {
9
10
  import { observer } from 'mobx-react-lite';
10
11
  import React, { useEffect, useState } from 'react';
11
12
  import styled from 'styled-components';
12
- import { getItemTextureKeyPath } from '../../../libs/ItemSlotHelper';
13
13
  import { RelativeListMenu } from '../../RelativeListMenu';
14
14
  import { SpriteFromAtlas } from '../../shared/SpriteFromAtlas';
15
15
  import { ItemTooltip } from '../Cards/ItemTooltip';
16
16
  import { ErrorBoundary } from './ErrorBoundary';
17
17
  import { generateContextMenu, IContextMenuItem } from './itemContainerHelper';
18
+ import { v4 as uuidv4 } from 'uuid';
18
19
 
19
20
  const EquipmentSlotSpriteByType: any = {
20
21
  Neck: 'accessories/corruption-necklace.png',
@@ -104,7 +105,7 @@ export const ItemSlot: React.FC<IProps> = observer(
104
105
  const element = [];
105
106
  if (itemToRender?.texturePath) {
106
107
  element.push(
107
- <ErrorBoundary>
108
+ <ErrorBoundary key={itemToRender._id}>
108
109
  <SpriteFromAtlas
109
110
  key={itemToRender._id}
110
111
  atlasIMG={atlasIMG}
@@ -133,7 +134,7 @@ export const ItemSlot: React.FC<IProps> = observer(
133
134
  ) {
134
135
  const element = [];
135
136
  element.push(
136
- <ErrorBoundary>
137
+ <ErrorBoundary key={itemToRender._id}>
137
138
  <SpriteFromAtlas
138
139
  key={itemToRender._id}
139
140
  atlasIMG={atlasIMG}
@@ -153,8 +154,9 @@ export const ItemSlot: React.FC<IProps> = observer(
153
154
  return element;
154
155
  } else {
155
156
  return (
156
- <ErrorBoundary>
157
+ <ErrorBoundary key={uuidv4()}>
157
158
  <SpriteFromAtlas
159
+ key={uuidv4()}
158
160
  atlasIMG={atlasIMG}
159
161
  atlasJSON={atlasJSON}
160
162
  spriteKey={EquipmentSlotSpriteByType[slotSpriteMask!]}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import styled from 'styled-components';
3
3
  import { DraggableContainer } from './DraggableContainer';
4
+ import { v4 as uuidv4 } from 'uuid';
4
5
 
5
6
  interface IListMenuOption {
6
7
  id: string;
@@ -30,7 +31,7 @@ export const ListMenu: React.FC<IListMenuProps> = ({
30
31
  <ListContainer className="rpgui-list-imp">
31
32
  {options.map(params => (
32
33
  <ListElement
33
- key={params?.id}
34
+ key={uuidv4()}
34
35
  onClick={() => {
35
36
  onSelected(params?.id);
36
37
  }}
@@ -1,8 +1,6 @@
1
1
  import { getSPForLevel } from '@rpg-engine/shared';
2
2
  import React from 'react';
3
3
  import styled from 'styled-components';
4
- import atlasJSON from '../mocks/atlas/items/items.json';
5
- import atlasIMG from '../mocks/atlas/items/items.png';
6
4
  import { ErrorBoundary } from './Item/Inventory/ErrorBoundary';
7
5
  import { SpriteFromAtlas } from './shared/SpriteFromAtlas';
8
6
  import { SimpleProgressBar } from './SimpleProgressBar';
@@ -15,6 +13,8 @@ export interface ISkillProgressBarProps {
15
13
  skillPointsToNextLevel?: number;
16
14
  texturePath: string;
17
15
  showSkillPoints?: boolean;
16
+ atlasJSON: any;
17
+ atlasIMG: any;
18
18
  }
19
19
 
20
20
  export const SkillProgressBar: React.FC<ISkillProgressBarProps> = ({
@@ -24,6 +24,8 @@ export const SkillProgressBar: React.FC<ISkillProgressBarProps> = ({
24
24
  skillPoints,
25
25
  texturePath,
26
26
  showSkillPoints = true,
27
+ atlasIMG,
28
+ atlasJSON,
27
29
  }) => {
28
30
  const spForNextLevel = getSPForLevel(level + 1);
29
31
 
@@ -9,6 +9,8 @@ import { SkillProgressBar } from './SkillProgressBar';
9
9
  export interface ISkillContainerProps {
10
10
  skill: ISkill;
11
11
  onCloseButton: () => void;
12
+ atlasJSON: any;
13
+ atlasIMG: any;
12
14
  }
13
15
 
14
16
  const skillProps = {
@@ -50,6 +52,8 @@ const skillProps = {
50
52
  export const SkillsContainer: React.FC<ISkillContainerProps> = ({
51
53
  onCloseButton,
52
54
  skill,
55
+ atlasIMG,
56
+ atlasJSON,
53
57
  }) => {
54
58
  const onRenderSkillCategory = (
55
59
  category: 'attributes' | 'combat' | 'crafting'
@@ -75,6 +79,8 @@ export const SkillsContainer: React.FC<ISkillContainerProps> = ({
75
79
  Math.round(skillDetails.skillPointsToNextLevel) || 0
76
80
  }
77
81
  texturePath={value}
82
+ atlasIMG={atlasIMG}
83
+ atlasJSON={atlasJSON}
78
84
  />
79
85
  );
80
86
  }
@@ -100,6 +106,8 @@ export const SkillsContainer: React.FC<ISkillContainerProps> = ({
100
106
  skillPoints={Math.round(skill.experience) || 0}
101
107
  skillPointsToNextLevel={Math.round(skill.xpToNextLevel) || 0}
102
108
  texturePath={'swords/broad-sword.png'}
109
+ atlasIMG={atlasIMG}
110
+ atlasJSON={atlasJSON}
103
111
  />
104
112
 
105
113
  <p>Combat Skills</p>
@@ -121,43 +129,6 @@ export const SkillsContainer: React.FC<ISkillContainerProps> = ({
121
129
  </SkillSplitDiv>
122
130
 
123
131
  {onRenderSkillCategory('attributes')}
124
-
125
- {/* <SkillSplitDiv>
126
- <p>Magic Skills</p>
127
- <hr className="golden" />
128
- </SkillSplitDiv>
129
- <SkillProgressBar
130
- skillName={'Ice'}
131
- bgColor={'red'}
132
- level={skill?.ice?.level || 0}
133
- skillPoints={skill?.ice?.skillPoints || 0}
134
- skillPointsToNextLevel={skill?.ice?.skillPointsToNextLevel || 0}
135
- texturePath={'spell-icons/freeze.png'}
136
- />
137
- <SkillProgressBar
138
- skillName={'Earth'}
139
- bgColor={'red'}
140
- level={skill?.earth?.level || 0}
141
- skillPoints={skill?.earth?.skillPoints || 0}
142
- skillPointsToNextLevel={skill?.earth?.skillPointsToNextLevel || 0}
143
- texturePath={'spell-icons/earth-barrier.png'}
144
- />
145
- <SkillProgressBar
146
- skillName={'Air'}
147
- bgColor={'red'}
148
- level={skill?.air?.level || 0}
149
- skillPoints={skill?.air?.skillPoints || 0}
150
- skillPointsToNextLevel={skill?.air?.skillPointsToNextLevel || 0}
151
- texturePath={'spell-icons/poison-tornado.png'}
152
- />
153
- <SkillProgressBar
154
- skillName={'Water'}
155
- bgColor={'red'}
156
- level={skill?.water?.level || 0}
157
- skillPoints={skill?.water?.skillPoints || 0}
158
- skillPointsToNextLevel={skill?.water?.skillPointsToNextLevel || 0}
159
- texturePath={'spell-icons/tsunami.png'}
160
- /> */}
161
132
  </SkillsDraggableContainer>
162
133
  );
163
134
  };
@@ -0,0 +1,190 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import styled from 'styled-components';
3
+ import { DraggableContainer } from '../DraggableContainer';
4
+ import { RPGUIContainerTypes } from '../RPGUIContainer';
5
+ import { Button, ButtonTypes } from '../Button';
6
+ import { ItemTradingComponent } from './itemComponent';
7
+ import { ITransactionItem, TradeTransactionType } from '@rpg-engine/shared';
8
+ import { v4 as uuidv4 } from 'uuid';
9
+ export interface ITrandingMenu {
10
+ traderItems: ITransactionItem[];
11
+ onClose: () => void;
12
+ type: TradeTransactionType;
13
+ atlasJSON: any;
14
+ atlasIMG: any;
15
+ characterAvailableGold: number;
16
+ onChangeTraderItems: (traderItems: ITransactionItem[]) => void;
17
+ }
18
+
19
+ export const TrandingMenu: React.FC<ITrandingMenu> = ({
20
+ traderItems,
21
+ onClose,
22
+ type,
23
+ atlasJSON,
24
+ atlasIMG,
25
+ characterAvailableGold,
26
+ onChangeTraderItems,
27
+ }) => {
28
+ const [sum, setSum] = useState(0);
29
+ let newSumArray = 0;
30
+ const updateChartTotals = (item: ITransactionItem) => {
31
+ const itemIndex = traderItems.findIndex(
32
+ itemArray => itemArray.itemId === item.itemId
33
+ );
34
+ traderItems[itemIndex] = item;
35
+
36
+ traderItems.forEach(item => {
37
+ if (item.qty) newSumArray += item.qty * item.price;
38
+ setSum(newSumArray);
39
+ });
40
+ };
41
+
42
+ useEffect(() => {
43
+ if (onChangeTraderItems) {
44
+ onChangeTraderItems(traderItems);
45
+ }
46
+ }, [traderItems]);
47
+ const Capitalize = (word: string) => {
48
+ return word[0].toUpperCase() + word.substring(1);
49
+ };
50
+
51
+ return (
52
+ <TradingMenuDraggableContainer
53
+ type={RPGUIContainerTypes.Framed}
54
+ onCloseButton={() => {
55
+ if (onClose) onClose();
56
+ }}
57
+ width="500px"
58
+ cancelDrag=".equipment-container-body .arrow-selector"
59
+ >
60
+ <>
61
+ <div style={{ width: '100%' }}>
62
+ <Title>{Capitalize(type)}</Title>
63
+ <hr className="golden" />
64
+ </div>
65
+ <TrandingComponentScrollWrapper>
66
+ {traderItems.map(tradeItem => (
67
+ <ItemWrapper key={uuidv4()}>
68
+ <ItemTradingComponent
69
+ key={uuidv4()}
70
+ atlasIMG={atlasIMG}
71
+ atlasJSON={atlasJSON}
72
+ updateChartTotals={updateChartTotals}
73
+ traderItem={tradeItem}
74
+ />
75
+ </ItemWrapper>
76
+ ))}
77
+ </TrandingComponentScrollWrapper>
78
+ <GoldWrapper>
79
+ <p>Available Gold:</p>
80
+ <p>${characterAvailableGold}</p>
81
+ </GoldWrapper>
82
+ <TotalWrapper>
83
+ <p>Total:</p>
84
+ <p>${sum}</p>
85
+ </TotalWrapper>
86
+ {sum > characterAvailableGold ? (
87
+ <AlertWrapper>
88
+ <p> Sorry, not enough money.</p>
89
+ </AlertWrapper>
90
+ ) : (
91
+ <GoldWrapper>
92
+ <p>Final Gold:</p>
93
+ <p>${characterAvailableGold - sum}</p>
94
+ </GoldWrapper>
95
+ )}
96
+
97
+ <ButtonWrapper>
98
+ <Button
99
+ buttonType={ButtonTypes.RPGUIButton}
100
+ disabled={sum > characterAvailableGold}
101
+ >
102
+ Confirm
103
+ </Button>
104
+ <Button buttonType={ButtonTypes.RPGUIButton}>Cancel</Button>
105
+ </ButtonWrapper>
106
+ </>
107
+ </TradingMenuDraggableContainer>
108
+ );
109
+ };
110
+
111
+ const TradingMenuDraggableContainer = styled(DraggableContainer)`
112
+ .container-close {
113
+ top: 10px;
114
+ right: 10px;
115
+ }
116
+
117
+ .quest-title {
118
+ text-align: left;
119
+ margin-left: 44px;
120
+ margin-top: 20px;
121
+ color: yellow;
122
+ }
123
+
124
+ .quest-desc {
125
+ margin-top: 12px;
126
+ margin-left: 44px;
127
+ }
128
+
129
+ .rpgui-progress {
130
+ min-width: 80%;
131
+ margin: 0 auto;
132
+ }
133
+ `;
134
+
135
+ const Title = styled.h1`
136
+ z-index: 22;
137
+ font-size: 0.6rem;
138
+ color: yellow !important;
139
+ `;
140
+
141
+ const TrandingComponentScrollWrapper = styled.div`
142
+ overflow-y: scroll;
143
+ height: 500px;
144
+ width: 100%;
145
+ `;
146
+
147
+ const ItemWrapper = styled.div`
148
+ width: 80%;
149
+ margin: auto;
150
+ display: flex;
151
+ justify-content: space-between;
152
+ `;
153
+
154
+ const TotalWrapper = styled.div`
155
+ width: 80%;
156
+ display: flex;
157
+ margin: auto;
158
+ justify-content: space-between;
159
+ height: 20px;
160
+ `;
161
+
162
+ const GoldWrapper = styled.div`
163
+ width: 80%;
164
+ display: flex;
165
+ margin: auto;
166
+ justify-content: space-between;
167
+ height: 20px;
168
+ p {
169
+ color: yellow !important;
170
+ }
171
+ `;
172
+
173
+ const AlertWrapper = styled.div`
174
+ width: 80%;
175
+ display: flex;
176
+ margin: auto;
177
+ justify-content: center;
178
+ height: 20px;
179
+ p {
180
+ color: red !important;
181
+ }
182
+ `;
183
+
184
+ const ButtonWrapper = styled.div`
185
+ width: 80%;
186
+ margin: auto;
187
+ display: flex;
188
+ justify-content: space-around;
189
+ padding-top: 20px;
190
+ `;
@@ -0,0 +1,158 @@
1
+ import React, { useState } from 'react';
2
+ import styled from 'styled-components';
3
+ import { SpriteFromAtlas } from '../shared/SpriteFromAtlas';
4
+ import LeftArrowClickIcon from '../PropertySelect/img/ui-arrows/arrow01-left-clicked.png';
5
+ import LeftArrowIcon from '../PropertySelect/img/ui-arrows/arrow01-left.png';
6
+ import RightArrowClickIcon from '../PropertySelect/img/ui-arrows/arrow01-right-clicked.png';
7
+ import RightArrowIcon from '../PropertySelect/img/ui-arrows/arrow01-right.png';
8
+ import { ITransactionItem } from '@rpg-engine/shared';
9
+
10
+ export interface ITradeComponentProps {
11
+ traderItem: ITransactionItem;
12
+ updateChartTotals: (traderItem: ITransactionItem) => void;
13
+ atlasJSON: any;
14
+ atlasIMG: any;
15
+ }
16
+
17
+ export const ItemTradingComponent: React.FC<ITradeComponentProps> = ({
18
+ atlasIMG,
19
+ atlasJSON,
20
+ updateChartTotals,
21
+ traderItem,
22
+ }) => {
23
+ const [itemQuantity, setItemQuantity] = useState(0);
24
+
25
+ const onLeftClick = () => {
26
+ if (itemQuantity > 0) {
27
+ const newQuantity = itemQuantity - 1;
28
+ setItemQuantity(newQuantity);
29
+ updateChartTotals({
30
+ key: traderItem.key,
31
+ itemId: traderItem.itemId,
32
+ qty: newQuantity,
33
+ price: traderItem.price,
34
+ texturePath: traderItem.texturePath,
35
+ name: traderItem.name,
36
+ });
37
+ }
38
+ };
39
+ const onRightClick = () => {
40
+ const newQuantity = itemQuantity + 1;
41
+ setItemQuantity(newQuantity);
42
+ updateChartTotals({
43
+ key: traderItem.key,
44
+ itemId: traderItem.itemId,
45
+ qty: newQuantity,
46
+ price: traderItem.price,
47
+ texturePath: traderItem.texturePath,
48
+ name: traderItem.name,
49
+ });
50
+ };
51
+
52
+ return (
53
+ <ItemWrapper>
54
+ <IconContainer>
55
+ <SpriteContainer>
56
+ <SpriteFromAtlas
57
+ atlasIMG={atlasIMG}
58
+ atlasJSON={atlasJSON}
59
+ spriteKey={traderItem.texturePath}
60
+ imgScale={2.5}
61
+ />
62
+ </SpriteContainer>
63
+ </IconContainer>
64
+ <NameValue>
65
+ <p>{traderItem.name}</p>
66
+ <p>${traderItem.price}</p>
67
+ </NameValue>
68
+ <Container>
69
+ <TextOverlay>
70
+ <Item>{itemQuantity}</Item>
71
+ </TextOverlay>
72
+ <LeftArrow onClick={onLeftClick} onTouchStart={onLeftClick}></LeftArrow>
73
+ <RightArrow
74
+ onClick={onRightClick}
75
+ onTouchStart={onRightClick}
76
+ ></RightArrow>
77
+ </Container>
78
+ </ItemWrapper>
79
+ );
80
+ };
81
+
82
+ const ItemWrapper = styled.div`
83
+ width: 80%;
84
+ margin: auto;
85
+ display: flex;
86
+ justify-content: space-between;
87
+ `;
88
+
89
+ const IconContainer = styled.div`
90
+ display: flex;
91
+ justify-content: center;
92
+ align-items: center;
93
+ `;
94
+
95
+ const SpriteContainer = styled.div`
96
+ position: relative;
97
+ top: -3px;
98
+ left: 0;
99
+ `;
100
+
101
+ const NameValue = styled.div``;
102
+
103
+ const Item = styled.span`
104
+ font-size: 1rem;
105
+ color: white;
106
+ text-align: center;
107
+ z-index: 1;
108
+ position: absolute;
109
+ top: -12px;
110
+ width: 100%;
111
+ `;
112
+
113
+ const TextOverlay = styled.div`
114
+ width: 100%;
115
+ position: relative;
116
+ `;
117
+
118
+ interface IContainerProps {
119
+ percentageWidth?: number;
120
+ minWidth?: number;
121
+ style?: Record<string, any>;
122
+ }
123
+
124
+ const Container = styled.div<IContainerProps>`
125
+ position: relative;
126
+ display: flex;
127
+ flex-direction: column;
128
+ justify-content: space-around;
129
+ align-items: flex-start;
130
+ min-width: 100px;
131
+ width: 40%;
132
+ `;
133
+
134
+ const LeftArrow = styled.div`
135
+ background-image: url(${LeftArrowIcon});
136
+ background-size: 100% 100%;
137
+ left: 0;
138
+ position: absolute;
139
+ width: 40px;
140
+ height: 42px;
141
+ :active {
142
+ background-image: url(${LeftArrowClickIcon});
143
+ }
144
+ z-index: 2;
145
+ `;
146
+
147
+ const RightArrow = styled.div`
148
+ background-image: url(${RightArrowIcon});
149
+ right: 0;
150
+ position: absolute;
151
+ width: 40px;
152
+ background-size: 100% 100%;
153
+ height: 42px;
154
+ :active {
155
+ background-image: url(${RightArrowClickIcon});
156
+ }
157
+ z-index: 2;
158
+ `;
@@ -0,0 +1,87 @@
1
+ import { ITransactionItem } from '@rpg-engine/shared';
2
+ export const itemMock: ITransactionItem[] = [
3
+ {
4
+ texturePath: 'swords/broad-sword.png',
5
+ itemId: 'itemId01',
6
+ name: 'sword',
7
+ price: 100,
8
+ key: 'Short sword',
9
+ },
10
+ {
11
+ texturePath: 'swords/broad-sword.png',
12
+ itemId: 'itemId02',
13
+ name: 'sword',
14
+ price: 100,
15
+ key: 'Short sword',
16
+ },
17
+ {
18
+ texturePath: 'swords/broad-sword.png',
19
+ itemId: 'itemId03',
20
+ name: 'sword',
21
+ price: 100,
22
+ key: 'Short sword',
23
+ },
24
+ {
25
+ texturePath: 'swords/broad-sword.png',
26
+ itemId: 'itemId01',
27
+ name: 'sword',
28
+ price: 100,
29
+ key: 'Short sword',
30
+ },
31
+ {
32
+ texturePath: 'swords/broad-sword.png',
33
+ itemId: 'itemId02',
34
+ name: 'sword',
35
+ price: 100,
36
+ key: 'Short sword',
37
+ },
38
+ {
39
+ texturePath: 'swords/broad-sword.png',
40
+ itemId: 'itemId03',
41
+ name: 'sword',
42
+ price: 100,
43
+ key: 'Short sword',
44
+ },
45
+ {
46
+ texturePath: 'swords/broad-sword.png',
47
+ itemId: 'itemId01',
48
+ name: 'sword',
49
+ price: 100,
50
+ key: 'Short sword',
51
+ },
52
+ {
53
+ texturePath: 'swords/broad-sword.png',
54
+ itemId: 'itemId02',
55
+ name: 'sword',
56
+ price: 100,
57
+ key: 'Short sword',
58
+ },
59
+ {
60
+ texturePath: 'swords/broad-sword.png',
61
+ itemId: 'itemId03',
62
+ name: 'sword',
63
+ price: 100,
64
+ key: 'Short sword',
65
+ },
66
+ {
67
+ texturePath: 'swords/broad-sword.png',
68
+ itemId: 'itemId01',
69
+ name: 'sword',
70
+ price: 100,
71
+ key: 'Short sword',
72
+ },
73
+ {
74
+ texturePath: 'swords/broad-sword.png',
75
+ itemId: 'itemId02',
76
+ name: 'sword',
77
+ price: 100,
78
+ key: 'Short sword',
79
+ },
80
+ {
81
+ texturePath: 'swords/broad-sword.png',
82
+ itemId: 'itemId03',
83
+ name: 'sword',
84
+ price: 100,
85
+ key: 'Short sword',
86
+ },
87
+ ];
package/src/index.tsx CHANGED
@@ -27,4 +27,5 @@ export * from './components/Truncate';
27
27
  export * from './components/typography/DynamicText';
28
28
  export * from './components/NPCDialog/NPCMultiDialog';
29
29
  export * from './components/HistoryDialog';
30
+ export * from './components/TradingMenu/TrandingMenu';
30
31
  export { useEventListener } from './hooks/useEventListener';
Binary file
@@ -3,7 +3,7 @@ import {
3
3
  // IItem,
4
4
  ItemSlotType,
5
5
  ItemSubType,
6
- ItemType
6
+ ItemType,
7
7
  } from '@rpg-engine/shared';
8
8
 
9
9
  export const items: any = {
@@ -245,8 +245,7 @@ export const items: any = {
245
245
  textureKey: 'stone',
246
246
  name: 'stone',
247
247
  generateContainerSlots: 10,
248
- description:
249
- 'You see a stone. It is used with slingshot.',
248
+ description: 'You see a stone. It is used with slingshot.',
250
249
  attack: 7,
251
250
  defense: 3,
252
251
  weight: 13,
@@ -254,8 +253,7 @@ export const items: any = {
254
253
  x: 320,
255
254
  y: 144,
256
255
  scene: 'MainScene',
257
- fullDescription:
258
- 'You see a stone. It is used with slingshot',
256
+ fullDescription: 'You see a stone. It is used with slingshot',
259
257
  createdAt: '2022-06-04T03:18:09.335Z',
260
258
  updatedAt: '2022-06-04T18:16:49.056Z',
261
259
  },