From 5d04b928849ecf832c1af4281902cda02ac42ac6 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Wed, 31 Dec 2025 11:17:54 -0500 Subject: [PATCH] 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. --- game/engine.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/game/engine.go b/game/engine.go index 6c06494..e61c72d 100644 --- a/game/engine.go +++ b/game/engine.go @@ -6,6 +6,7 @@ import ( "lcthw.dev/go/ttarpit/builder" . "lcthw.dev/go/ttarpit/debug" "time" + "fmt" ) type Game struct { @@ -16,6 +17,7 @@ type Game struct { StartTime time.Time EndTime time.Time ErrorLog []data.ErrInfo + ErrorsSeen map[string]int } func New(settings config.Config) *Game { @@ -31,16 +33,27 @@ func New(settings config.Config) *Game { } game.EndTime = time.Now().Add(time_out) + game.ErrorsSeen = make(map[string]int, 10) return game } func (game *Game) ClearLog() { + clear(game.ErrorsSeen) 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) { - Log.Println("!!!!!!!!!!!!!!!!!", errinfo) + if game.SeenError(errinfo) > 1 { + return + } + game.Errors++ game.HP--