@@ -47,6 +47,10 @@ func (geh gameEventHandler) dispatch(event interface{}) {
4747 geh .parser .eventDispatcher .Dispatch (event )
4848}
4949
50+ func (geh gameEventHandler ) delay (event interface {}) {
51+ geh .parser .delayedEvents = append (geh .parser .delayedEvents , event )
52+ }
53+
5054func (geh gameEventHandler ) gameState () * GameState {
5155 return geh .parser .gameState
5256}
@@ -286,7 +290,7 @@ func (geh gameEventHandler) playerBlind(desc *msg.CSVCMsg_GameEventListDescripto
286290
287291 // Player.FlashDuration hasn't been updated yet,
288292 // so we need to wait until the end of the tick before dispatching
289- geh .parser . delayedEvents = append ( geh . parser . delayedEvents , events.PlayerFlashed {
293+ geh .delay ( events.PlayerFlashed {
290294 Player : geh .playerByUserID32 (data ["userid" ].GetValShort ()),
291295 Attacker : geh .gameState ().lastFlasher ,
292296 })
@@ -308,7 +312,7 @@ func (geh gameEventHandler) heGrenadeDetonate(desc *msg.CSVCMsg_GameEventListDes
308312}
309313
310314func (geh gameEventHandler ) decoyStarted (desc * msg.CSVCMsg_GameEventListDescriptorT , ge * msg.CSVCMsg_GameEvent ) {
311- geh .dispatch (events.DecoyStart {
315+ geh .delay (events.DecoyStart {
312316 GrenadeEvent : geh .nadeEvent (desc , ge , common .EqDecoy ),
313317 })
314318}
@@ -393,7 +397,7 @@ func (geh gameEventHandler) playerTeam(desc *msg.CSVCMsg_GameEventListDescriptor
393397 // Delayed for two reasons
394398 // - team IDs of other players changing teams in the same tick might not have changed yet
395399 // - player entities might not have been re-created yet after a reconnect
396- geh .parser . delayedEvents = append ( geh . parser . delayedEvents , events.PlayerTeamChange {
400+ geh .delay ( events.PlayerTeamChange {
397401 Player : player ,
398402 IsBot : data ["isbot" ].GetValBool (),
399403 Silent : data ["silent" ].GetValBool (),
0 commit comments