generator shouldn't draw markers in separate goroutines

This commit is contained in:
Dawid Wysokiński 2020-08-01 13:36:21 +02:00
parent 785e53d024
commit fb8892ceb2
2 changed files with 18 additions and 27 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 KiB

After

Width:  |  Height:  |  Size: 550 KiB

View File

@ -8,7 +8,6 @@ import (
"io"
"github.com/disintegration/imaging"
"golang.org/x/sync/errgroup"
"github.com/pkg/errors"
"github.com/tribalwarshelp/shared/models"
@ -81,7 +80,6 @@ func Generate(cfg Config) error {
mapSizeDividedBy10 := cfg.MapSize / 10
imgHalfWidth := cfg.MapSize / 2
imgHalfHeight := imgHalfWidth
g := new(errgroup.Group)
if cfg.BackgroundColor != defaultBackgroundColor {
backgroundColor, err := parseHexColorFast(cfg.BackgroundColor)
@ -100,34 +98,27 @@ func Generate(cfg Config) error {
// Markers
for _, marker := range cfg.Markers {
m := marker
g.Go(func() error {
parsedColor, err := parseHexColorFast(m.Color)
if err != nil {
return err
}
for _, village := range m.Villages {
if m.Larger {
for y := 1; y <= 1; y++ {
for x := 1; x <= 1; x++ {
img.Set(village.X+x, village.Y, parsedColor)
img.Set(village.X-x, village.Y, parsedColor)
img.Set(village.X, village.Y+y, parsedColor)
img.Set(village.X, village.Y-y, parsedColor)
img.Set(village.X+x, village.Y-y, parsedColor)
img.Set(village.X-x, village.Y-y, parsedColor)
img.Set(village.X+x, village.Y+y, parsedColor)
img.Set(village.X-x, village.Y+y, parsedColor)
}
parsedColor, err := parseHexColorFast(m.Color)
if err != nil {
return err
}
for _, village := range m.Villages {
if m.Larger {
for y := 1; y <= 1; y++ {
for x := 1; x <= 1; x++ {
img.Set(village.X+x, village.Y, parsedColor)
img.Set(village.X-x, village.Y, parsedColor)
img.Set(village.X, village.Y+y, parsedColor)
img.Set(village.X, village.Y-y, parsedColor)
img.Set(village.X+x, village.Y-y, parsedColor)
img.Set(village.X-x, village.Y-y, parsedColor)
img.Set(village.X+x, village.Y+y, parsedColor)
img.Set(village.X-x, village.Y+y, parsedColor)
}
}
img.Set(village.X, village.Y, parsedColor)
}
return nil
})
}
if err := g.Wait(); err != nil {
return err
img.Set(village.X, village.Y, parsedColor)
}
}
//Continents