Skip to content

Commit a22aca8

Browse files
committed
Add names to costumes 🏷️.
1 parent a53826d commit a22aca8

File tree

5 files changed

+80
-20
lines changed

5 files changed

+80
-20
lines changed

src/components/CostumesList.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import getCostumeLabel from '../lib/getCostumeLabel';
12
import ColumnListHeader from './ColumnListHeader';
23
import ColumnListItem from './ColumnListItem';
34

@@ -10,7 +11,7 @@ const CostumesList = ({ costumeSets, currentSetId, currentId }) => {
1011
{costumeSet.map((unused, id) => {
1112
const selected = costumeSetId === currentSetId && id === currentId;
1213
const path = `/costumes/${costumeSetId}/${id}`;
13-
const label = `Costume ${id}`;
14+
const label = getCostumeLabel(costumeSetId, id);
1415

1516
return (
1617
<ColumnListItem

src/components/ScreenNamesSelector.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const ScreenNamesSelector = ({
1616
return (
1717
<>
1818
<h2 className="text-xl font-semibold leading-6 text-slate-700 md:text-2xl dark:text-slate-300">
19-
Screen names
19+
Resource naming scheme
2020
</h2>
2121

2222
<RadioGroup

src/containers/CostumesContainer.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useParams } from 'react-router-dom';
2+
import getCostumeLabel from '../lib/getCostumeLabel';
23
import PrimaryColumn from '../components/PrimaryColumn';
34
import CostumesList from '../components/CostumesList';
45
import Main from '../components/Main';
@@ -71,7 +72,7 @@ const CostumesContainer = ({
7172
</PrimaryColumn>
7273

7374
<Main>
74-
<MainHeader title={`Costume ${currentId}`}>
75+
<MainHeader title={getCostumeLabel(currentSetId, currentId, true)}>
7576
<ResourceMetadata metadata={costume.metadata} />
7677
</MainHeader>
7778
{currentSetId === 0 ? (

src/containers/SettingsContainer.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Main from '../components/Main';
33
import MainHeader from '../components/MainHeader';
44
import ThemeSwitcher from '../components/ThemeSwitcher';
55
import PaletteSelector from '../components/PaletteSelector';
6-
import ScreenNamesSelector from '../components/ScreenNamesSelector';
6+
import NameSelector from '../components/ScreenNamesSelector';
77
import { setColourTheme } from '../lib/colourThemeUtils';
88

99
import digitalPrimeFbxImg from '../assets/palettes/digital-prime-fbx.png';
@@ -39,16 +39,16 @@ const paletteOptions = [
3939
},
4040
];
4141

42-
const screenNameOptions = [
42+
const nameOptions = [
4343
{
4444
value: 'mm',
45-
name: 'Maniac Mansion screen names',
45+
name: 'Names from Maniac Mansion',
4646
description: 'Useful when working on a Maniac Mansion ROM hack.',
4747
defaultOption: true,
4848
},
4949
{
5050
value: 'numbers',
51-
name: 'Numbered screen names',
51+
name: 'Numbered items',
5252
description: 'Better if your ROM hack is a completely different game.',
5353
},
5454
];
@@ -65,14 +65,14 @@ const SettingsContainer = () => {
6565
paletteOptions.find(({ value }) => value === selectedPaletteValue) ||
6666
paletteOptions.find(({ defaultOption }) => defaultOption);
6767

68-
const selectedScreenNameValue = localStorage.getItem('screen-name');
69-
const selectedScreenName =
70-
screenNameOptions.find(({ value }) => value === selectedScreenNameValue) ||
71-
screenNameOptions.find(({ defaultOption }) => defaultOption);
68+
const selectedNameValue = localStorage.getItem('screen-name');
69+
const selectedName =
70+
nameOptions.find(({ value }) => value === selectedNameValue) ||
71+
nameOptions.find(({ defaultOption }) => defaultOption);
7272

7373
const [theme, setTheme] = useState(selectedTheme);
7474
const [palette, setPalette] = useState(selectedPalette);
75-
const [screenName, setScreenName] = useState(selectedScreenName);
75+
const [name, setName] = useState(selectedName);
7676

7777
// Keep the local storage and the DOM in sync with the state.
7878
const setThemeWrapper = (theme) => {
@@ -99,15 +99,15 @@ const SettingsContainer = () => {
9999
localStorage.setItem('palette', palette.value);
100100
};
101101

102-
const setScreenNameWrapper = (screenName) => {
103-
setScreenName(screenName);
102+
const setNameWrapper = (name) => {
103+
setName(name);
104104

105-
if (screenName.defaultOption) {
105+
if (name.defaultOption) {
106106
localStorage.removeItem('screen-name');
107107
return;
108108
}
109109

110-
localStorage.setItem('screen-name', screenName.value);
110+
localStorage.setItem('screen-name', name.value);
111111
};
112112

113113
return (
@@ -123,10 +123,10 @@ const SettingsContainer = () => {
123123
paletteOptions={paletteOptions}
124124
setPalette={setPaletteWrapper}
125125
/>
126-
<ScreenNamesSelector
127-
screenName={screenName}
128-
screenNameOptions={screenNameOptions}
129-
setScreenName={setScreenNameWrapper}
126+
<NameSelector
127+
screenName={name}
128+
screenNameOptions={nameOptions}
129+
setScreenName={setNameWrapper}
130130
/>
131131
</Main>
132132
);

src/lib/getCostumeLabel.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { zeroPad } from './utils';
2+
3+
const costumeNames = [
4+
[
5+
'Wendy',
6+
'Syd',
7+
'Razor',
8+
'Dave',
9+
'Michael',
10+
'Bernard',
11+
'Wendy',
12+
'Jeff',
13+
'Radioactive suit',
14+
'Fred Edison',
15+
'Nurse Edna',
16+
'Weird Ed',
17+
'Cousin Ted',
18+
'Purple tentacle',
19+
'Green tentacle',
20+
'Meteor police',
21+
'Meteor',
22+
'Mark Eteer',
23+
'Wink Smiley',
24+
'Man eating plant',
25+
'Bubble',
26+
'Unused',
27+
'Unused',
28+
'Sandy',
29+
'Suit w/ meteor',
30+
],
31+
['Flying Edsel', 'Meteor intro', 'Cursor arrow', 'Sprite0'],
32+
];
33+
34+
const getCostumeLabel = (costumeSetId = 0, id = 0, long = false) => {
35+
switch (localStorage.getItem('screen-name')) {
36+
default:
37+
case 'mm':
38+
const costumeName = costumeNames[costumeSetId][id];
39+
if (!costumeName) {
40+
throw new Error(
41+
`Unknown costume id ${id} in costume set id ${costumeSetId}`,
42+
);
43+
}
44+
45+
if (long) {
46+
return `Costume ${zeroPad(id)} - ${costumeName}`;
47+
}
48+
return `${id} ${costumeName}`;
49+
50+
case 'numbers':
51+
if (long) {
52+
return `Costume ${zeroPad(id)}`;
53+
}
54+
return `Costume ${id}`;
55+
}
56+
};
57+
58+
export default getCostumeLabel;

0 commit comments

Comments
 (0)