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
|
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 {
|
for _, tStats := range stats {
|
||||||
tPLayer, err := tStats.Edges.PlayersOrErr()
|
tPLayer, err := tStats.Edges.PlayersOrErr()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("Unbale to get Stats from statList: %v", err)
|
return nil, fmt.Errorf("Unbale to get Stats from statList: %v", err)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
if tPLayer.ID == steamId {
|
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) {
|
func setMatchPlayerColor(matchPlayer *ent.MatchPlayer, demoPlayer *common.Player) {
|
||||||
@@ -290,7 +289,11 @@ func (p *DemoParser) parseWorker() {
|
|||||||
return
|
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 {
|
if e.Attacker.Team == e.Player.Team {
|
||||||
tAttacker.DmgTeam += uint(e.HealthDamageTaken)
|
tAttacker.DmgTeam += uint(e.HealthDamageTaken)
|
||||||
} else {
|
} else {
|
||||||
@@ -348,7 +351,11 @@ func (p *DemoParser) parseWorker() {
|
|||||||
return
|
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
|
// team flash
|
||||||
if e.Attacker.Team == e.Player.Team && e.Attacker.SteamID64 != e.Player.SteamID64 {
|
if e.Attacker.Team == e.Player.Team && e.Attacker.SteamID64 != e.Player.SteamID64 {
|
||||||
@@ -372,7 +379,11 @@ func (p *DemoParser) parseWorker() {
|
|||||||
// onPlayerConnected
|
// onPlayerConnected
|
||||||
demoParser.RegisterEventHandler(func(e events.PlayerTeamChange) {
|
demoParser.RegisterEventHandler(func(e events.PlayerTeamChange) {
|
||||||
if e.Player != nil && e.Player.SteamID64 != 0 {
|
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)
|
setMatchPlayerColor(tMatchPlayer, e.Player)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -383,7 +394,11 @@ func (p *DemoParser) parseWorker() {
|
|||||||
|
|
||||||
for _, demoPlayer := range gs.Participants().Playing() {
|
for _, demoPlayer := range gs.Participants().Playing() {
|
||||||
if demoPlayer != nil && demoPlayer.SteamID64 != 0 {
|
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)
|
setMatchPlayerColor(tMatchPlayer, demoPlayer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -392,7 +407,11 @@ func (p *DemoParser) parseWorker() {
|
|||||||
// onRankUpdate
|
// onRankUpdate
|
||||||
demoParser.RegisterEventHandler(func(e events.RankUpdate) {
|
demoParser.RegisterEventHandler(func(e events.RankUpdate) {
|
||||||
if e.SteamID64() != 0 {
|
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.RankOld = e.RankOld
|
||||||
tMatchPlayer.RankNew = e.RankNew
|
tMatchPlayer.RankNew = e.RankNew
|
||||||
|
Reference in New Issue
Block a user