isValidClientEvent function
Implementation
bool isValidClientEvent(
WorldEvent event,
Channel channel,
WorldState state, {
required AssetManager assetManager,
ChallengeManager? challengeManager,
}) => switch (event) {
TeamJoinRequest() => state.info.teams.containsKey(event.team),
TeamLeaveRequest() => state.info.teams.containsKey(event.team),
CellRollRequest() =>
event.object?.inRange(
0,
state
.getTableOrDefault(event.cell.table)
.getCell(event.cell.position)
.objects
.length -
1,
) ??
true,
ShuffleCellRequest() =>
state
.getTableOrDefault(event.cell.table)
.cells
.containsKey(event.cell.position),
ObjectsSpawned() => event.objects.values.expand((e) => e).every((e) {
final figure = assetManager.getFigure(e.asset);
return figure != null &&
(e.variation == null || figure.variations.containsKey(e.variation));
}),
ObjectsMoved() =>
event.from != event.to &&
event.objects.every(
(e) => e.inRange(
0,
state
.getTableOrDefault(event.table)
.getCell(event.from)
.objects
.length -
1,
),
),
CellHideChanged() =>
event.object?.inRange(
0,
state
.getTableOrDefault(event.cell.table)
.getCell(event.cell.position)
.objects
.length -
1,
) ??
true,
ObjectIndexChanged() => event.index.inRange(
0,
state
.getTableOrDefault(event.cell.table)
.getCell(event.cell.position)
.objects
.length -
1,
),
TeamRemoved() => state.info.teams.containsKey(event.team),
PacksChangeRequest() => channel == kAuthorityChannel,
BoardMoveRequest() =>
event.from != event.to &&
event.index.inRange(
0,
state
.getTableOrDefault(event.table)
.getCell(event.from)
.tiles
.length -
1,
),
ModeChangeRequest() => channel == kAuthorityChannel,
_ => true,
};