fix: let `tag start` also send the new role to the actual players
Broadcast() with a sender never sends the packet to the sender. Therefore only other players got informed about the new role. But never the actual player that is supposed to change to that role.
This commit is contained in:
parent
fb55820e2b
commit
d69d9b8296
|
@ -497,17 +497,22 @@ CommandHandler.RegisterCommand("tag", args => {
|
|||
int realTime = 1000 * time;
|
||||
await Task.Delay(realTime);
|
||||
await Task.WhenAll(
|
||||
Parallel.ForEachAsync(seekers, async (seeker, _) =>
|
||||
await server.Broadcast(new TagPacket {
|
||||
Parallel.ForEachAsync(seekers, async (seeker, _) => {
|
||||
TagPacket packet = new TagPacket {
|
||||
UpdateType = TagPacket.TagUpdate.State,
|
||||
IsIt = true
|
||||
}, seeker)),
|
||||
Parallel.ForEachAsync(server.Clients.Except(seekers), async (hider, _) =>
|
||||
await server.Broadcast(new TagPacket {
|
||||
IsIt = true,
|
||||
};
|
||||
await server.Broadcast(packet, seeker);
|
||||
await seeker.Send(packet);
|
||||
}),
|
||||
Parallel.ForEachAsync(server.Clients.Except(seekers), async (hider, _) => {
|
||||
TagPacket packet = new TagPacket {
|
||||
UpdateType = TagPacket.TagUpdate.State,
|
||||
IsIt = false
|
||||
}, hider)
|
||||
)
|
||||
IsIt = false,
|
||||
};
|
||||
await server.Broadcast(packet, hider);
|
||||
await hider.Send(packet);
|
||||
})
|
||||
);
|
||||
consoleLogger.Info($"Started game with seekers {string.Join(", ", seekerNames)}");
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue