5
5
"strconv"
6
6
7
7
"github.com/golang/geo/r3"
8
+ "github.com/markus-wa/go-unassert"
8
9
9
10
"github.com/markus-wa/demoinfocs-golang/common"
10
11
"github.com/markus-wa/demoinfocs-golang/events"
@@ -20,7 +21,8 @@ func (p *Parser) handleGameEventList(gel *msg.CSVCMsg_GameEventList) {
20
21
21
22
func (p * Parser ) handleGameEvent (ge * msg.CSVCMsg_GameEvent ) {
22
23
if p .gameEventDescs == nil {
23
- p .eventDispatcher .Dispatch (events.ParserWarn {Message : "Received GameEvent but event descriptors are missing" })
24
+ p .eventDispatcher .Dispatch (events.ParserWarn {Message : "received GameEvent but event descriptors are missing" })
25
+ unassert .Error ("received GameEvent but event descriptors are missing" )
24
26
return
25
27
}
26
28
@@ -37,7 +39,8 @@ func (p *Parser) handleGameEvent(ge *msg.CSVCMsg_GameEvent) {
37
39
handler (data )
38
40
}
39
41
} else {
40
- p .eventDispatcher .Dispatch (events.ParserWarn {Message : fmt .Sprintf ("Unknown event %q" , desc .Name )})
42
+ p .eventDispatcher .Dispatch (events.ParserWarn {Message : fmt .Sprintf ("unknown event %q" , desc .Name )})
43
+ unassert .Error ("unknown event %q" , desc .Name )
41
44
}
42
45
43
46
p .eventDispatcher .Dispatch (events.GenericGameEvent {
@@ -126,6 +129,7 @@ func newGameEventHandler(parser *Parser) gameEventHandler {
126
129
"hegrenade_detonate" : geh .heGrenadeDetonate , // HE exploded
127
130
"hltv_chase" : nil , // Don't care
128
131
"hltv_fixed" : nil , // Dunno
132
+ "hltv_message" : nil , // No clue
129
133
"hltv_status" : nil , // Don't know
130
134
"inferno_expire" : geh .infernoExpire , // Incendiary expired
131
135
"inferno_startburn" : delay (geh .infernoStartBurn ), // Incendiary exploded/started. Delayed because inferno entity is not yet created
@@ -325,10 +329,18 @@ func (geh gameEventHandler) playerHurt(data map[string]*msg.CSVCMsg_GameEventKey
325
329
326
330
func (geh gameEventHandler ) playerBlind (data map [string ]* msg.CSVCMsg_GameEventKeyT ) {
327
331
attacker := geh .gameState ().lastFlash .player
332
+ projectile := geh .gameState ().lastFlash .projectileByPlayer [attacker ]
333
+ unassert .NotNilf (projectile , "PlayerFlashed.Projectile should never be nil" )
334
+
335
+ if projectile != nil {
336
+ unassert .Samef (attacker , projectile .Thrower , "PlayerFlashed.Attacker != PlayerFlashed.Projectile.Thrower" )
337
+ unassert .Samef (projectile .Weapon , common .EqFlash , "PlayerFlashed.Projectile.Weapon != EqFlash" )
338
+ }
339
+
328
340
geh .dispatch (events.PlayerFlashed {
329
341
Player : geh .playerByUserID32 (data ["userid" ].GetValShort ()),
330
342
Attacker : attacker ,
331
- Projectile : geh . gameState (). lastFlash . projectileByPlayer [ attacker ] ,
343
+ Projectile : projectile ,
332
344
})
333
345
}
334
346
@@ -435,6 +447,7 @@ func (geh gameEventHandler) playerTeam(data map[string]*msg.CSVCMsg_GameEventKey
435
447
OldTeamState : geh .gameState ().Team (oldTeam ),
436
448
})
437
449
} else {
450
+ // TODO: figure out why this happens and whether it's a bug or not
438
451
geh .dispatch (events.ParserWarn {
439
452
Message : "Player team swap game-event occurred but player is nil" ,
440
453
})
0 commit comments