Don't repeat errors on the same line. This cuts down on too much damage from languages like C++ that spam hundreds of errors to the same line that are basically the same.

master
Zed A. Shaw 2 weeks ago
parent 148396081d
commit 5d04b92884
  1. 15
      game/engine.go

@ -6,6 +6,7 @@ import (
"lcthw.dev/go/ttarpit/builder" "lcthw.dev/go/ttarpit/builder"
. "lcthw.dev/go/ttarpit/debug" . "lcthw.dev/go/ttarpit/debug"
"time" "time"
"fmt"
) )
type Game struct { type Game struct {
@ -16,6 +17,7 @@ type Game struct {
StartTime time.Time StartTime time.Time
EndTime time.Time EndTime time.Time
ErrorLog []data.ErrInfo ErrorLog []data.ErrInfo
ErrorsSeen map[string]int
} }
func New(settings config.Config) *Game { func New(settings config.Config) *Game {
@ -31,16 +33,27 @@ func New(settings config.Config) *Game {
} }
game.EndTime = time.Now().Add(time_out) game.EndTime = time.Now().Add(time_out)
game.ErrorsSeen = make(map[string]int, 10)
return game return game
} }
func (game *Game) ClearLog() { func (game *Game) ClearLog() {
clear(game.ErrorsSeen)
game.ErrorLog = game.ErrorLog[:0] game.ErrorLog = game.ErrorLog[:0]
} }
func (game *Game) SeenError(errinfo data.ErrInfo) int {
key := fmt.Sprintf("%s:%d", errinfo.File, errinfo.Line)
game.ErrorsSeen[key]++
return game.ErrorsSeen[key]
}
func (game *Game) TakeHit(build *builder.Builder, errinfo data.ErrInfo) { func (game *Game) TakeHit(build *builder.Builder, errinfo data.ErrInfo) {
Log.Println("!!!!!!!!!!!!!!!!!", errinfo) if game.SeenError(errinfo) > 1 {
return
}
game.Errors++ game.Errors++
game.HP-- game.HP--

Loading…
Cancel
Save