Skip to content

Commit 5d92e4f

Browse files
committed
Clean up around bomb-events
1 parent 338f547 commit 5d92e4f

File tree

4 files changed

+31
-47
lines changed

4 files changed

+31
-47
lines changed

datatables.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,8 @@ func (p *Parser) bindBombSites() {
137137
})
138138

139139
p.stParser.FindServerClassByName("CBaseTrigger").RegisterEntityCreatedHandler(func(baseTrigger st.EntityCreatedEvent) {
140-
// TODO: Switch triggers to map[int]boundingBoxInformation?
141-
t := &boundingBoxInformation{index: baseTrigger.Entity.ID}
142-
p.triggers = append(p.triggers, t)
140+
t := new(boundingBoxInformation)
141+
p.triggers[baseTrigger.Entity.ID] = t
143142

144143
baseTrigger.Entity.FindProperty("m_Collision.m_vecMins").RegisterPropertyUpdateHandler(func(vec st.PropValue) {
145144
t.min = vec.VectorVal

events/events.go

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ type WeaponFiredEvent struct {
103103
// NadeEventIf is the interface for all NadeEvents. Used to catch
104104
// the different events with the same handler.
105105
type NadeEventIf interface {
106-
dummyNade()
106+
implementsNadeEventIf()
107107
}
108108

109109
// NadeEvent contains the common attributes of nade events. Dont register
@@ -115,7 +115,7 @@ type NadeEvent struct {
115115
}
116116

117117
// Make NadeEvents implement NadeEventIf
118-
func (NadeEvent) dummyNade() {}
118+
func (NadeEvent) implementsNadeEventIf() {}
119119

120120
// HeExplodedEvent signals the explosion of a HE.
121121
type HeExplodedEvent struct {
@@ -163,31 +163,34 @@ type PlayerFlashedEvent struct {
163163
Player *common.Player
164164
}
165165

166-
// BombEventIf is the interface for alll the bomb events. Like NadeEventIf for NadeEvents.
166+
// BombEventIf is the interface for all the bomb events. Like NadeEventIf for NadeEvents.
167167
type BombEventIf interface {
168-
dummyBomb()
168+
implementsBombEventIf()
169169
}
170170

171+
type bombsite rune
172+
173+
// Bombsite identifiers
174+
const (
175+
BombsiteA bombsite = 'A'
176+
BombsiteB bombsite = 'B'
177+
)
178+
171179
// BombEvent contains the common attributes of bomb events. Dont register
172180
// handlers on this tho, you want BombEventIf for that.
173181
type BombEvent struct {
174182
Player *common.Player
175-
Site rune
183+
Site bombsite
176184
}
177185

178186
// Make BombEvent implement BombEventIf
179-
func (BombEvent) dummyBomb() {}
187+
func (BombEvent) implementsBombEventIf() {}
180188

181189
// BombBeginPlant signals the start of a plant.
182190
type BombBeginPlant struct {
183191
BombEvent
184192
}
185193

186-
// BombAbortPlant signals the abortion of a plant.
187-
type BombAbortPlant struct {
188-
BombEvent
189-
}
190-
191194
// BombPlantedEvent signals that the bomb has been planted.
192195
type BombPlantedEvent struct {
193196
BombEvent
@@ -205,15 +208,11 @@ type BombExplodedEvent struct {
205208

206209
// BombBeginDefuseEvent signals the start of defusing.
207210
type BombBeginDefuseEvent struct {
208-
Defuser *common.Player
209-
HasKit bool
211+
Player *common.Player
212+
HasKit bool
210213
}
211214

212-
// BombAbortDefuseEvent signals that defusing was aborted.
213-
type BombAbortDefuseEvent struct {
214-
Defuser *common.Player
215-
HasKit bool
216-
}
215+
func (BombBeginDefuseEvent) implementsBombEventIf() {}
217216

218217
// PlayerHurtEvent signals that a player has been damaged.
219218
type PlayerHurtEvent struct {

packet_handlers.go

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,6 @@ func (p *Parser) handleGameEvent(ge *msg.CSVCMsg_GameEvent) {
357357

358358
case "bomb_beginplant": // Plant started
359359
fallthrough
360-
case "bomb_abortplant": // Plant stopped
361-
fallthrough
362360
case "bomb_planted": // Plant finished
363361
fallthrough
364362
case "bomb_defused": // Defuse finished
@@ -372,22 +370,21 @@ func (p *Parser) handleGameEvent(ge *msg.CSVCMsg_GameEvent) {
372370

373371
switch site {
374372
case p.bombsiteA.index:
375-
e.Site = 'A'
373+
e.Site = events.BombsiteA
376374
case p.bombsiteB.index:
377-
e.Site = 'B'
375+
e.Site = events.BombsiteB
378376
default:
379-
var t *boundingBoxInformation
380-
for _, tr := range p.triggers {
381-
if tr.index == site {
382-
t = tr
383-
}
377+
t := p.triggers[site]
378+
379+
if t == nil {
380+
panic(fmt.Sprintf("Bombsite with index %d not found", site))
384381
}
385382

386383
if t.contains(p.bombsiteA.center) {
387-
e.Site = 'A'
384+
e.Site = events.BombsiteA
388385
p.bombsiteA.index = site
389386
} else if t.contains(p.bombsiteB.center) {
390-
e.Site = 'B'
387+
e.Site = events.BombsiteB
391388
p.bombsiteB.index = site
392389
} else {
393390
panic("Bomb not planted on bombsite A or B")
@@ -397,8 +394,6 @@ func (p *Parser) handleGameEvent(ge *msg.CSVCMsg_GameEvent) {
397394
switch d.Name {
398395
case "bomb_beginplant":
399396
p.eventDispatcher.Dispatch(events.BombBeginPlant{BombEvent: e})
400-
case "bomb_abortplant":
401-
p.eventDispatcher.Dispatch(events.BombAbortPlant{BombEvent: e})
402397
case "bomb_planted":
403398
p.eventDispatcher.Dispatch(events.BombPlantedEvent{BombEvent: e})
404399
case "bomb_defused":
@@ -411,18 +406,8 @@ func (p *Parser) handleGameEvent(ge *msg.CSVCMsg_GameEvent) {
411406
data = mapGameEventData(d, ge)
412407

413408
p.eventDispatcher.Dispatch(events.BombBeginDefuseEvent{
414-
Defuser: p.connectedPlayers[int(data["userid"].GetValShort())],
415-
HasKit: data["haskit"].GetValBool(),
416-
})
417-
418-
case "bomb_abortdefuse": // Defuse aborted
419-
data = mapGameEventData(d, ge)
420-
421-
pl := p.connectedPlayers[int(data["userid"].GetValShort())]
422-
423-
p.eventDispatcher.Dispatch(events.BombAbortDefuseEvent{
424-
Defuser: pl,
425-
HasKit: pl.HasDefuseKit,
409+
Player: p.connectedPlayers[int(data["userid"].GetValShort())],
410+
HasKit: data["haskit"].GetValBool(),
426411
})
427412

428413
case "item_equip": // Equipped, I think

parser.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ type Parser struct {
4343
ctState TeamState
4444
bombsiteA bombsiteInfo
4545
bombsiteB bombsiteInfo
46-
triggers []*boundingBoxInformation
46+
triggers map[int]*boundingBoxInformation
4747
instanceBaselines map[int][]byte
4848
preprocessedBaselines map[int]map[int]st.PropValue
4949
gehDescriptors map[int32]*msg.CSVCMsg_GameEventListDescriptorT
@@ -240,6 +240,7 @@ func NewParserWithBufferSize(demostream io.Reader, msgQueueBufferSize int, warnH
240240
p.players = make(map[int]*common.Player)
241241
p.connectedPlayers = make(map[int]*common.Player)
242242
p.entities = make(map[int]*st.Entity)
243+
p.triggers = make(map[int]*boundingBoxInformation)
243244
p.cancelChan = make(chan struct{}, 1)
244245
p.warn = warnHandler
245246

0 commit comments

Comments
 (0)