Open alee opened 2 years ago
I was able to emit their individual payloads like so:
export interface MarsEventExport {
gameId: number;
round: number;
name: string;
description: string;
index: number;
payload: string;
}
and in the MarsEventSummarizer
class:
_summarizeEvent(game: GameState, event: entity.GameEvent): Array<MarsEventExport> {
return game.marsEvents.map((marsEvent, index) => ({
gameId: event.gameId,
round: game.round,
name: marsEvent.name,
description: marsEvent.effect,
index,
payload: JSON.stringify(event.payload),
}));
}
However, in the current MarsEventSummarizer
approach, in an event of type exited-mars-event-phase
, there is no payload. Payloads for interactive events are emitted in its respective event type e.g. in a Personal Gain event, voted-for-personal-gain
has the payload in the form of {""role"":""Researcher"",""vote"":false}
so by the time there is an event type exited-mars-event-phase
, there is no available payload
So therefore, if we were to find these interactive events programmatically by type, it would result in 6 occurrences of Personal Gain in the data output if we try to identify when the votes are occurring and when we reach exited-mars-event-phase
. We should be emitting payloads in the exited-mars-event-phase
Thanks for looking into this Christine! Could we collect all GameEventWithData events that we find into a data structure and then aggregate them and emit an aggregated payload when we reach an exited-mars-event-phase
event? Then we clear that data structure and move on again...
Happy to meet sometime tomorrow after the comses meeting @ 10 to discuss / pair program on it
Identify a way to programmatically discover these events and emit their data payloads in
MarsEventSummarizer
, possiblyGameEventWithData
will work?