update to new go-steam version

This commit is contained in:
2025-10-26 05:20:47 +01:00
parent ab8b0b983c
commit df22705679
8 changed files with 364 additions and 312 deletions

View File

@@ -7,19 +7,21 @@ import (
"encoding/gob"
"errors"
"fmt"
"github.com/aclements/go-moremath/stats"
"github.com/golang/geo/r2"
"github.com/markus-wa/demoinfocs-golang/v3/pkg/demoinfocs"
"github.com/markus-wa/demoinfocs-golang/v3/pkg/demoinfocs/common"
"github.com/markus-wa/demoinfocs-golang/v3/pkg/demoinfocs/events"
log "github.com/sirupsen/logrus"
"io"
"net/http"
"strings"
"time"
"github.com/aclements/go-moremath/stats"
"github.com/golang/geo/r2"
"github.com/markus-wa/demoinfocs-golang/v5/pkg/demoinfocs"
"github.com/markus-wa/demoinfocs-golang/v5/pkg/demoinfocs/common"
"github.com/markus-wa/demoinfocs-golang/v5/pkg/demoinfocs/events"
"github.com/markus-wa/demoinfocs-golang/v5/pkg/demoinfocs/msg"
log "github.com/sirupsen/logrus"
"somegit.dev/csgowtf/csgowtfd/ent"
"somegit.dev/csgowtf/csgowtfd/ent/matchplayer"
"somegit.dev/csgowtf/csgowtfd/utils"
"strings"
"time"
)
type Demo struct {
@@ -112,7 +114,7 @@ func (dp *DemoParser) Setup(db *ent.Client, worker, sprayTimeout int) error {
dp.db = db
dp.sprayTimeout = sprayTimeout
dp.Done = make(chan *Demo, worker)
for i := 0; i < worker; i++ {
for range worker {
go dp.parseWorker()
}
return nil
@@ -123,14 +125,14 @@ func (dp *DemoParser) ParseDemo(demo *Demo) error {
case dp.demoQueue <- demo:
return nil
default:
return fmt.Errorf("queue full")
return errors.New("queue full")
}
}
func (d *Demo) download() (io.Reader, error) {
log.Debugf("[DP] Downloading replay for %d", d.MatchID)
r, err := http.Get(d.URL) //nolint:bodyclose,noctx
r, err := http.Get(d.URL) //nolint:bodyclose
if err != nil {
return nil, err
}
@@ -152,7 +154,7 @@ func (dp *DemoParser) MatchPlayerBySteamID(mStats []*ent.MatchPlayer, steamID ui
}
}
return nil, fmt.Errorf("player not found")
return nil, errors.New("player not found")
}
func setMatchPlayerColor(matchPlayer *ent.MatchPlayer, demoPlayer *common.Player) {
@@ -255,9 +257,6 @@ workloop:
pingMap := make(map[uint64][]float64)
cfg := demoinfocs.DefaultParserConfig
if len(demo.DecryptionKey) == 16 { //nolint:gomnd
cfg.NetMessageDecryptionKey = demo.DecryptionKey
}
demoParser := demoinfocs.NewParserWithConfig(fDemo, cfg)
// onChatMessage
@@ -327,9 +326,9 @@ workloop:
return
}
if e.Attacker.Team == e.Player.Team {
tAttacker.DmgTeam += uint(e.HealthDamageTaken)
tAttacker.DmgTeam += uint(e.HealthDamageTaken) //nolint:gosec
} else {
tAttacker.DmgEnemy += uint(e.HealthDamageTaken)
tAttacker.DmgEnemy += uint(e.HealthDamageTaken) //nolint:gosec
}
if _, ok := eqMap[e.Attacker.SteamID64]; !ok {
@@ -344,7 +343,7 @@ workloop:
found := false
for _, di := range eqMap[e.Attacker.SteamID64] {
if di.Eq == int(e.Weapon.Type) && di.HitGroup == int(e.HitGroup) {
di.Dmg += uint(e.HealthDamageTaken)
di.Dmg += uint(e.HealthDamageTaken) //nolint:gosec
found = true
}
}
@@ -355,12 +354,12 @@ workloop:
HitGroup int
Dmg uint
To uint64
}{Eq: int(e.Weapon.Type), HitGroup: int(e.HitGroup), Dmg: uint(e.HealthDamageTaken), To: e.Player.SteamID64})
}{Eq: int(e.Weapon.Type), HitGroup: int(e.HitGroup), Dmg: uint(e.HealthDamageTaken), To: e.Player.SteamID64}) //nolint:gosec
}
})
// onRoundEnd
demoParser.RegisterEventHandler(func(e events.RoundEnd) {
demoParser.RegisterEventHandler(func(_ events.RoundEnd) {
gs := demoParser.GameState()
if !gs.IsMatchStarted() {
return
@@ -423,7 +422,7 @@ workloop:
})
// onMatchStart
demoParser.RegisterEventHandler(func(e events.MatchStart) {
demoParser.RegisterEventHandler(func(_ events.MatchStart) {
gs := demoParser.GameState()
for _, demoPlayer := range gs.Participants().Playing() {
@@ -460,8 +459,13 @@ workloop:
continue
}
var mapName string
demoParser.RegisterNetMessageHandler(func(m *msg.CDemoFileHeader) {
mapName = m.GetMapName()
})
err = tMatch.Update().
SetMap(demoParser.Header().MapName).
SetMap(mapName).
SetDemoParsed(true).
SetTickRate(demoParser.TickRate()).
Exec(context.Background())
@@ -526,10 +530,10 @@ workloop:
for _, eco := range ecoMap[tMatchPlayer.PlayerStats] {
err := tx.RoundStats.Create().
SetMatchPlayer(nMatchPLayer).
SetRound(uint(eco.Round)).
SetBank(uint(eco.Bank)).
SetEquipment(uint(eco.EqV)).
SetSpent(uint(eco.Spent)).
SetRound(uint(eco.Round)). //nolint:gosec
SetBank(uint(eco.Bank)). //nolint:gosec
SetEquipment(uint(eco.EqV)). //nolint:gosec
SetSpent(uint(eco.Spent)). //nolint:gosec
Exec(context.Background())
if err != nil {
err = utils.Rollback(tx, err)