added error handling to matchplayer

This commit is contained in:
2021-11-17 22:32:04 +01:00
parent 3e727d3a7c
commit 72d546122a

View File

@@ -150,19 +150,18 @@ func (p *DemoParser) getDBPlayer(demo *Demo, demoPlayer *common.Player) (*ent.Ma
return tMatchPlayer, nil
}
func (p *DemoParser) getMatchPlayerBySteamID(stats []*ent.MatchPlayer, steamId uint64) *ent.MatchPlayer {
func (p *DemoParser) MatchPlayerBySteamID(stats []*ent.MatchPlayer, steamId uint64) (*ent.MatchPlayer, error) {
for _, tStats := range stats {
tPLayer, err := tStats.Edges.PlayersOrErr()
if err != nil {
log.Errorf("Unbale to get Stats from statList: %v", err)
return nil
return nil, fmt.Errorf("Unbale to get Stats from statList: %v", err)
}
if tPLayer.ID == steamId {
return tStats
return tStats, nil
}
}
return nil
return nil, fmt.Errorf("player not found")
}
func setMatchPlayerColor(matchPlayer *ent.MatchPlayer, demoPlayer *common.Player) {
@@ -290,7 +289,11 @@ func (p *DemoParser) parseWorker() {
return
}
tAttacker := p.getMatchPlayerBySteamID(tStats, e.Attacker.SteamID64)
tAttacker, err := p.MatchPlayerBySteamID(tStats, e.Attacker.SteamID64)
if err != nil {
log.Warningf("[DP] Unable to get player for id %d: %v", e.Attacker.SteamID64, err)
return
}
if e.Attacker.Team == e.Player.Team {
tAttacker.DmgTeam += uint(e.HealthDamageTaken)
} else {
@@ -348,7 +351,11 @@ func (p *DemoParser) parseWorker() {
return
}
tAttacker := p.getMatchPlayerBySteamID(tStats, e.Attacker.SteamID64)
tAttacker, err := p.MatchPlayerBySteamID(tStats, e.Attacker.SteamID64)
if err != nil {
log.Warningf("[DP] Unable to get player for id %d: %v", e.Attacker.SteamID64, err)
return
}
// team flash
if e.Attacker.Team == e.Player.Team && e.Attacker.SteamID64 != e.Player.SteamID64 {
@@ -372,7 +379,11 @@ func (p *DemoParser) parseWorker() {
// onPlayerConnected
demoParser.RegisterEventHandler(func(e events.PlayerTeamChange) {
if e.Player != nil && e.Player.SteamID64 != 0 {
tMatchPlayer := p.getMatchPlayerBySteamID(tStats, e.Player.SteamID64)
tMatchPlayer, err := p.MatchPlayerBySteamID(tStats, e.Player.SteamID64)
if err != nil {
log.Warningf("[DP] Unable to get player for id %d: %v", e.Player.SteamID64, err)
return
}
setMatchPlayerColor(tMatchPlayer, e.Player)
}
})
@@ -383,7 +394,11 @@ func (p *DemoParser) parseWorker() {
for _, demoPlayer := range gs.Participants().Playing() {
if demoPlayer != nil && demoPlayer.SteamID64 != 0 {
tMatchPlayer := p.getMatchPlayerBySteamID(tStats, demoPlayer.SteamID64)
tMatchPlayer, err := p.MatchPlayerBySteamID(tStats, demoPlayer.SteamID64)
if err != nil {
log.Warningf("[DP] Unable to get player for id %d: %v", demoPlayer.SteamID64, err)
return
}
setMatchPlayerColor(tMatchPlayer, demoPlayer)
}
}
@@ -392,7 +407,11 @@ func (p *DemoParser) parseWorker() {
// onRankUpdate
demoParser.RegisterEventHandler(func(e events.RankUpdate) {
if e.SteamID64() != 0 {
tMatchPlayer := p.getMatchPlayerBySteamID(tStats, e.SteamID64())
tMatchPlayer, err := p.MatchPlayerBySteamID(tStats, e.SteamID64())
if err != nil {
log.Warningf("[DP] Unable to get player for id %d: %v", e.SteamID64(), err)
return
}
tMatchPlayer.RankOld = e.RankOld
tMatchPlayer.RankNew = e.RankNew