fixed a small potentially non-determinimistic tree problem

This commit is contained in:
Grimsace
2026-02-26 14:22:23 -06:00
parent 4925aab8bf
commit 505d9ebbdd
2 changed files with 23 additions and 1 deletions
+15
View File
@@ -624,6 +624,10 @@ func main() {
// Main generation button and logic // Main generation button and logic
generateBtn = widget.NewButton("Generate", func() { generateBtn = widget.NewButton("Generate", func() {
go func() { go func() {
var timedOutSteps []string
addTimeout := func(step string) {
timedOutSteps = append(timedOutSteps, step)
}
// Disable button and show progress bar during generation // Disable button and show progress bar during generation
fyne.Do(func() { fyne.Do(func() {
generateBtn.Disable() generateBtn.Disable()
@@ -670,6 +674,7 @@ func main() {
lakes = out.lks lakes = out.lks
} else { } else {
log.Println("GenerateLakes timed out after 1 minute; continuing.") log.Println("GenerateLakes timed out after 1 minute; continuing.")
addTimeout("Lakes")
lakes = nil lakes = nil
} }
@@ -695,6 +700,7 @@ func main() {
finalImage = cloneToRGBA(out.img, settings.Width, settings.Height) finalImage = cloneToRGBA(out.img, settings.Width, settings.Height)
} else { } else {
log.Println("GenerateRivers timed out after 1 minute; continuing.") log.Println("GenerateRivers timed out after 1 minute; continuing.")
addTimeout("Rivers")
riverMask = NewPixelMask(settings.Width, settings.Height) riverMask = NewPixelMask(settings.Width, settings.Height)
} }
waterMask = BuildMaskFromLakes(settings.Width, settings.Height, lakes) waterMask = BuildMaskFromLakes(settings.Width, settings.Height, lakes)
@@ -728,6 +734,7 @@ func main() {
finalImage = roadBase finalImage = roadBase
} else { } else {
log.Println("GenerateRoads timed out after 1 minute; continuing.") log.Println("GenerateRoads timed out after 1 minute; continuing.")
addTimeout("Roads")
roadMask = NewPixelMask(settings.Width, settings.Height) roadMask = NewPixelMask(settings.Width, settings.Height)
bridgeMask = NewPixelMask(settings.Width, settings.Height) bridgeMask = NewPixelMask(settings.Width, settings.Height)
exitRoadMask = NewPixelMask(settings.Width, settings.Height) exitRoadMask = NewPixelMask(settings.Width, settings.Height)
@@ -755,6 +762,7 @@ func main() {
finalImage = buildingBase finalImage = buildingBase
} else { } else {
log.Println("GenerateBuildings timed out after 1 minute; continuing.") log.Println("GenerateBuildings timed out after 1 minute; continuing.")
addTimeout("Buildings")
buildings = nil buildings = nil
buildingMask = NewPixelMask(settings.Width, settings.Height) buildingMask = NewPixelMask(settings.Width, settings.Height)
} }
@@ -803,6 +811,7 @@ func main() {
finalImage = treeBase finalImage = treeBase
} else { } else {
log.Println("GenerateTrees timed out after 1 minute; continuing.") log.Println("GenerateTrees timed out after 1 minute; continuing.")
addTimeout("Trees")
treeMask = NewPixelMask(settings.Width, settings.Height) treeMask = NewPixelMask(settings.Width, settings.Height)
} }
@@ -823,6 +832,12 @@ func main() {
bumpmapImg.Refresh() bumpmapImg.Refresh()
canvasImg.Image = finalImage canvasImg.Image = finalImage
canvasImg.Refresh() canvasImg.Refresh()
if len(timedOutSteps) > 0 {
errorLabel.SetText("Generation timed out after 1 minute for: " + strings.Join(timedOutSteps, ", ") + ". Partial results were used.")
errorLabel.Show()
} else {
errorLabel.Hide()
}
}) })
}() }()
}) })
+8 -1
View File
@@ -261,7 +261,6 @@ func GenerateTrees(img *image.RGBA, waterMask, roadMask, buildingMask *PixelMask
} }
if (math.Pow(float64(x-p.X), 2) + math.Pow(float64(y-p.Y), 2)) <= r*r { if (math.Pow(float64(x-p.X), 2) + math.Pow(float64(y-p.Y), 2)) <= r*r {
img.Set(x, y, color.RGBA{R: 0, G: 100, B: 0, A: 255})
localTreePixels = append(localTreePixels, pt) localTreePixels = append(localTreePixels, pt)
} }
} }
@@ -280,6 +279,14 @@ func GenerateTrees(img *image.RGBA, waterMask, roadMask, buildingMask *PixelMask
treeMask.SetPoint(p) treeMask.SetPoint(p)
} }
} }
for y := 0; y < treeMask.Height; y++ {
row := y * treeMask.Width
for x := 0; x < treeMask.Width; x++ {
if treeMask.Data[row+x] != 0 {
img.Set(x, y, color.RGBA{R: 0, G: 100, B: 0, A: 255})
}
}
}
return treeMask return treeMask
} }