added error handling to matchplayer
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user