Skip to content

Commit f18e10f

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

14 files changed

Lines changed: 343 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: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ class TranslationsStore {
6161
BoardTranslation(name: key),
6262
locale,
6363
);
64+
65+
ModeTranslation getModeTranslation(String key, [String? locale]) =>
66+
findTranslation(
67+
(t) => t.modes[key],
68+
ModeTranslation(name: key),
69+
locale,
70+
);
6471
}
6572

6673
@MappableClass()
@@ -69,12 +76,14 @@ class PackTranslation with PackTranslationMappable {
6976
final Map<String, BackgroundTranslation> backgrounds;
7077
final Map<String, FigureTranslation> figures;
7178
final Map<String, BoardTranslation> boards;
79+
final Map<String, ModeTranslation> modes;
7280

7381
PackTranslation({
7482
this.decks = const {},
7583
this.figures = const {},
7684
this.backgrounds = const {},
7785
this.boards = const {},
86+
this.modes = const {},
7887
});
7988
}
8089

@@ -121,3 +130,10 @@ class BoardTranslation extends DescriptiveTranslation
121130
with BoardTranslationMappable {
122131
BoardTranslation({required super.name, super.description});
123132
}
133+
134+
@MappableClass()
135+
class ModeTranslation extends DescriptiveTranslation
136+
with ModeTranslationMappable {
137+
ModeTranslation({required super.name, super.description});
138+
}
139+

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)