Skip to content

Commit b8a4f97

Browse files
authored
Merge branch 'master' into no-for-loop
2 parents 9e0d8e4 + b70c827 commit b8a4f97

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

pkg/demoinfocs/datatables.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,10 +1121,21 @@ func (p *parser) bindGameRules() {
11211121

11221122
entity.Property(grPrefix("m_bFreezePeriod")).OnUpdate(func(val st.PropertyValue) {
11231123
newIsFreezetime := val.BoolVal()
1124-
p.eventDispatcher.Dispatch(events.RoundFreezetimeChanged{
1124+
freezetimeEvent := events.RoundFreezetimeChanged{
11251125
OldIsFreezetime: p.gameState.isFreezetime,
11261126
NewIsFreezetime: newIsFreezetime,
1127-
})
1127+
}
1128+
1129+
if p.isSource2() {
1130+
if p.disableMimicSource1GameEvents {
1131+
p.eventDispatcher.Dispatch(freezetimeEvent)
1132+
} else {
1133+
p.gameState.lastFreezeTimeChangedEvent = &freezetimeEvent
1134+
}
1135+
} else {
1136+
p.eventDispatcher.Dispatch(freezetimeEvent)
1137+
}
1138+
11281139
p.gameState.isFreezetime = newIsFreezetime
11291140
})
11301141

pkg/demoinfocs/game_events.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,15 +1023,22 @@ func (p *parser) dispatchMatchStartedEventIfNecessary() {
10231023
// Dispatch round progress events in the following order:
10241024
// 1. MatchStartedChanged
10251025
// 2. RoundStart
1026-
// 3. RoundEnd
1027-
// 4. MatchStartedChanged
1026+
// 3. FreezeTimeStart
1027+
// 4. FreezetimeEnd
1028+
// 5. RoundEnd
1029+
// 6. MatchStartedChanged
10281030
func (p *parser) processRoundProgressEvents() {
10291031
if p.gameState.lastRoundStartEvent != nil {
10301032
p.dispatchMatchStartedEventIfNecessary()
10311033
p.gameEventHandler.dispatch(*p.gameState.lastRoundStartEvent)
10321034
p.gameState.lastRoundStartEvent = nil
10331035
}
10341036

1037+
if p.gameState.lastFreezeTimeChangedEvent != nil {
1038+
p.gameEventHandler.dispatch(*p.gameState.lastFreezeTimeChangedEvent)
1039+
p.gameState.lastFreezeTimeChangedEvent = nil
1040+
}
1041+
10351042
if p.gameState.lastRoundEndEvent != nil {
10361043
p.gameEventHandler.dispatch(*p.gameState.lastRoundEndEvent)
10371044
p.gameState.lastRoundEndEvent = nil

pkg/demoinfocs/game_state.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ type gameState struct {
4343
thrownGrenades map[*common.Player][]*common.Equipment // Information about every player's thrown grenades (from the moment they are thrown to the moment their effect is ended)
4444
rules gameRules
4545
demoInfo demoInfoProvider
46-
lastRoundStartEvent *events.RoundStart // Used to dispatch this event after a possible MatchStartedChanged event
47-
lastRoundEndEvent *events.RoundEnd // Used to dispatch this event before a possible MatchStartedChanged event
48-
lastMatchStartedChangedEvent *events.MatchStartedChanged // Used to dispatch this event before a possible RoundStart event and after a possible RoundEnd event
46+
lastRoundStartEvent *events.RoundStart // Used to dispatch this event after a possible MatchStartedChanged event
47+
lastFreezeTimeChangedEvent *events.RoundFreezetimeChanged // Used to dispatch this event after a possible RoundStart event
48+
lastRoundEndEvent *events.RoundEnd // Used to dispatch this event before a possible RoundFreezetimeChanged event
49+
lastMatchStartedChangedEvent *events.MatchStartedChanged // Used to dispatch this event before a possible RoundStart event and after a possible RoundEnd event
4950
// Used to mimic missing player_blind events for CS2 demos.
5051
//
5152
// When a player throws a flashbang the following happens:

0 commit comments

Comments
 (0)