Skip to content

Commit 197ddb3

Browse files
committed
FInishing running game modes on client
1 parent 5f71a91 commit 197ddb3

14 files changed

Lines changed: 339 additions & 59 deletions

File tree

api/lib/src/event/process/client.dart

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,22 @@ class KickServerResponse extends ServerResponse {
9595
const KickServerResponse(this.message, {this.kicked = const {}});
9696
}
9797

98+
HybridWorldEvent _hybridProtectPacket(HybridWorldEvent event) =>
99+
switch (event) {
100+
ObjectsSpawned() => event.copyWith(
101+
objects: event.objects.map((cell, objects) {
102+
final protectedObjects = objects
103+
.map((e) => e.hidden ? e.copyWith(variation: null) : e)
104+
.toList();
105+
return MapEntry(cell, protectedObjects);
106+
}),
107+
),
108+
_ => event,
109+
};
110+
111+
ServerWorldEvent protectServerEvent(ServerWorldEvent event) =>
112+
event is HybridWorldEvent ? _hybridProtectPacket(event) : event;
113+
98114
class UpdateServerResponse extends ServerResponse {
99115
final NetworkerPacket<ServerWorldEvent>? main;
100116
final Set<Channel> needsUpdate;
@@ -150,19 +166,6 @@ Set<Channel> _hybridNeedsUpdate(
150166
_ => {},
151167
};
152168

153-
HybridWorldEvent _hybridProtectPacket(HybridWorldEvent event) =>
154-
switch (event) {
155-
ObjectsSpawned() => event.copyWith(
156-
objects: event.objects.map((cell, objects) {
157-
final protectedObjects = objects
158-
.map((e) => e.hidden ? e.copyWith(variation: null) : e)
159-
.toList();
160-
return MapEntry(cell, protectedObjects);
161-
}),
162-
),
163-
_ => event,
164-
};
165-
166169
Future<ServerResponse?> processClientEvent(
167170
WorldEvent? event,
168171
Channel channel,
@@ -200,7 +203,7 @@ Future<ServerResponse?> processClientEvent(
200203
switch (event) {
201204
case HybridWorldEvent():
202205
return UpdateServerResponse.builder(
203-
_hybridProtectPacket(event),
206+
event,
204207
kAnyChannel,
205208
_hybridNeedsUpdate(event, state, channel),
206209
);

api/lib/src/models/translation.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ class TranslationsStore {
6161
BoardTranslation(name: key),
6262
locale,
6363
);
64+
65+
ModeTranslation getModeTranslation(String key, [String? locale]) =>
66+
findTranslation((t) => t.modes[key], ModeTranslation(name: key), locale);
6467
}
6568

6669
@MappableClass()
@@ -69,12 +72,14 @@ class PackTranslation with PackTranslationMappable {
6972
final Map<String, BackgroundTranslation> backgrounds;
7073
final Map<String, FigureTranslation> figures;
7174
final Map<String, BoardTranslation> boards;
75+
final Map<String, ModeTranslation> modes;
7276

7377
PackTranslation({
7478
this.decks = const {},
7579
this.figures = const {},
7680
this.backgrounds = const {},
7781
this.boards = const {},
82+
this.modes = const {},
7883
});
7984
}
8085

@@ -121,3 +126,9 @@ class BoardTranslation extends DescriptiveTranslation
121126
with BoardTranslationMappable {
122127
BoardTranslation({required super.name, super.description});
123128
}
129+
130+
@MappableClass()
131+
class ModeTranslation extends DescriptiveTranslation
132+
with ModeTranslationMappable {
133+
ModeTranslation({required super.name, super.description});
134+
}

api/lib/src/models/translation.mapper.dart

Lines changed: 168 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/pubspec.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,10 +166,10 @@ packages:
166166
dependency: "direct main"
167167
description:
168168
name: dart_mappable
169-
sha256: "97526bd5e1b1739be5c7379c51d391d074b6bbd109e6e92be49028ecb1a9853c"
169+
sha256: "960746478faaa68ed6b9d3c6fd03c87c7b8614e6c33e75fe1b0c6d7a60adcf29"
170170
url: "https://pub.dev"
171171
source: hosted
172-
version: "4.7.0"
172+
version: "4.8.0"
173173
dart_mappable_builder:
174174
dependency: "direct dev"
175175
description:

app/lib/bloc/multiplayer.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ class MultiplayerCubit extends Cubit<MultiplayerState> {
128128
Future<MultiplayerConnectedState> _addNetworker(NetworkerBase base) async {
129129
final transformer = NetworkerPipeTransformer<String, WorldEvent>(
130130
WorldEventMapper.fromJson,
131-
(e) => e.toJson(),
131+
(e) => (e is ServerWorldEvent ? protectServerEvent(e) : e).toJson(),
132132
);
133133
final pipe = SimpleNetworkerPipe<WorldEvent>();
134134
final stringPlugin = StringNetworkerPlugin();

0 commit comments

Comments
 (0)