Skip to content

Commit 0a0b102

Browse files
committed
Don't store the IntlShape in CharacterMessageBuilder
1 parent f2b92f5 commit 0a0b102

3 files changed

Lines changed: 16 additions & 16 deletions

File tree

src/ActionsHandler.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ export default class ActionsHandler {
1919
audioManager: AudioManager;
2020
sceneDimensions: SceneDimensions;
2121
characterMessageBuilder: CharacterMessageBuilder;
22+
intl: IntlShape;
2223

2324
constructor(app: App, audioManager: AudioManager, sceneDimensions: SceneDimensions, intl: IntlShape) {
2425
this.app = app;
2526
this.audioManager = audioManager;
2627
this.sceneDimensions = sceneDimensions;
27-
this.characterMessageBuilder = new CharacterMessageBuilder(sceneDimensions, intl);
28+
this.characterMessageBuilder = new CharacterMessageBuilder(sceneDimensions);
29+
this.intl = intl;
2830
}
2931

3032
doAction(action: MovementBlockName, stepTimeMs: number): Promise<ActionResult> {
@@ -138,7 +140,7 @@ export default class ActionsHandler {
138140
};
139141

140142
if (characterUpdate.event != null) {
141-
const message = this.characterMessageBuilder.buildMessage(characterUpdate.event);
143+
const message = this.characterMessageBuilder.buildMessage(characterUpdate.event, this.intl);
142144
if (message != null) {
143145
stateUpdate.message = message;
144146
}

src/CharacterMessageBuilder.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,34 @@ import SceneDimensions from './SceneDimensions';
66

77
export default class CharacterMessageBuilder {
88
dimensions: SceneDimensions;
9-
intl: IntlShape;
109

11-
constructor(dimensions: SceneDimensions, intl: IntlShape) {
10+
constructor(dimensions: SceneDimensions) {
1211
this.dimensions = dimensions;
13-
this.intl = intl;
1412
}
1513

16-
buildMessage(event: CharacterEvent): ?string {
14+
buildMessage(event: CharacterEvent, intl: IntlShape): ?string {
1715
switch(event.type) {
1816
case 'endOfScene':
19-
return this.buildEndOfSceneMessage();
17+
return this.buildEndOfSceneMessage(intl);
2018
case 'hitWall':
21-
return this.buildHitWallMessage(event.x, event.y);
19+
return this.buildHitWallMessage(event.x, event.y, intl);
2220
default:
2321
return null;
2422
}
2523
}
2624

27-
buildEndOfSceneMessage(): string {
28-
return this.intl.formatMessage(
25+
buildEndOfSceneMessage(intl: IntlShape): string {
26+
return intl.formatMessage(
2927
{
3028
id:'CharacterMessageBuilder.endOfScene'
3129
}
3230
);
3331
}
3432

35-
buildHitWallMessage(x: number, y: number): string {
33+
buildHitWallMessage(x: number, y: number, intl: IntlShape): string {
3634
const columnLabel = this.dimensions.getColumnLabel(x);
3735
const rowLabel = this.dimensions.getRowLabel(y);
38-
return this.intl.formatMessage(
36+
return intl.formatMessage(
3937
{
4038
id:'CharacterMessageBuilder.hitWall'
4139
},

src/CharacterMessageBuilder.test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ const intl = createIntl({
1414
const sceneDimensions = new SceneDimensions(1, 12, 1, 8);
1515

1616
test('End of scene', () => {
17-
const builder = new CharacterMessageBuilder(sceneDimensions, intl);
17+
const builder = new CharacterMessageBuilder(sceneDimensions);
1818
const message = builder.buildMessage({
1919
type: 'endOfScene',
2020
x: 1,
2121
y: 1
22-
});
22+
}, intl);
2323
expect(message).toBe('Your character has reached the end of the scene');
2424
});
2525

2626
test('Hit wall', () => {
27-
const builder = new CharacterMessageBuilder(sceneDimensions, intl);
27+
const builder = new CharacterMessageBuilder(sceneDimensions);
2828
const message = builder.buildMessage({
2929
type: 'hitWall',
3030
x: 3,
3131
y: 2
32-
});
32+
}, intl);
3333
expect(message).toBe('Your character hit a wall on C2');
3434
});

0 commit comments

Comments
 (0)