aboutsummaryrefslogtreecommitdiff
path: root/go/ui/mapView.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-08-07 14:22:09 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2025-08-20 15:57:08 +0200
commit7763f0520541e55021076da332430cdc998fcf8f (patch)
tree19f488e403ddd5a253e71223794c458fc50d2146 /go/ui/mapView.go
parent1e6bffa4ab5d6ebc99ba06db8fa17464a8ed55e6 (diff)
downloadmuhqs-game-7763f0520541e55021076da332430cdc998fcf8f.tar.gz
muhqs-game-7763f0520541e55021076da332430cdc998fcf8f.zip
ui: allow multiple highlights of thesame game piece
Diffstat (limited to 'go/ui/mapView.go')
-rw-r--r--go/ui/mapView.go44
1 files changed, 28 insertions, 16 deletions
diff --git a/go/ui/mapView.go b/go/ui/mapView.go
index 6a69ad5e..97dc19a2 100644
--- a/go/ui/mapView.go
+++ b/go/ui/mapView.go
@@ -42,15 +42,15 @@ type MapView struct {
gameState *game.State
mapLayer *ebiten.Image
permanentsLayer *ebiten.Image
- tileHighlights map[game.Position]color.Color
- permanentsHighlights map[game.Permanent]color.Color
+ tileHighlights map[game.Position][]color.Color
+ permanentsHighlights map[game.Permanent][]color.Color
}
func NewMapView(g *game.State) *MapView {
vw := &MapView{
gameState: g,
- tileHighlights: make(map[game.Position]color.Color),
- permanentsHighlights: make(map[game.Permanent]color.Color),
+ tileHighlights: make(map[game.Position][]color.Color),
+ permanentsHighlights: make(map[game.Permanent][]color.Color),
}
vw.hoverPermInfo.init(vw)
return vw
@@ -147,8 +147,10 @@ func (vw *MapView) drawMapLayer(screen *ebiten.Image) {
op.GeoM.Translate(x_px, y_px)
- if color, found := vw.tileHighlights[pos]; found {
- op.ColorScale.ScaleWithColor(color)
+ if colors, found := vw.tileHighlights[pos]; found {
+ for _, color := range colors {
+ op.ColorScale.ScaleWithColor(color)
+ }
}
vw.mapLayer.DrawImage(tileImg, op)
@@ -194,8 +196,10 @@ func (vw *MapView) drawPermanentsLayer(screen *ebiten.Image) {
op.GeoM.Translate(float64(x_px), float64(y_px))
op.ColorScale.ScaleWithColor(p.Controller().Color)
- if color, found := vw.permanentsHighlights[p]; found {
- op.ColorScale.ScaleWithColor(color)
+ if colors, found := vw.permanentsHighlights[p]; found {
+ for _, color := range colors {
+ op.ColorScale.ScaleWithColor(color)
+ }
}
vw.permanentsLayer.DrawImage(permanentSymbol, op)
@@ -304,16 +308,20 @@ func (vw *MapView) FindObjectAt(screenX, screenY int) interface{} {
}
func (vw *MapView) HighlightPositions(pos []game.Position, col color.Color) {
- highlights := make(map[game.Position]color.Color)
+ highlights := make(map[game.Position][]color.Color)
for _, p := range pos {
- highlights[p] = col
+ highlights[p] = []color.Color{col}
}
vw.tileHighlights = highlights
vw.ForceRedraw()
}
-func (vw *MapView) AddHighlightPosition(pos game.Position, color color.Color) {
- vw.tileHighlights[pos] = color
+func (vw *MapView) AddHighlightPosition(pos game.Position, col color.Color) {
+ if colors, found := vw.tileHighlights[pos]; found {
+ vw.tileHighlights[pos] = append(colors, col)
+ } else {
+ vw.tileHighlights[pos] = []color.Color{col}
+ }
vw.ForceRedraw()
}
@@ -338,17 +346,21 @@ func (vw *MapView) ClearTileHighlights() {
}
func (vw *MapView) HighlightPermanents(permanents []game.Permanent, col color.Color) {
- highlights := make(map[game.Permanent]color.Color)
+ highlights := make(map[game.Permanent][]color.Color)
for _, p := range permanents {
- highlights[p] = col
+ highlights[p] = []color.Color{col}
}
vw.permanentsHighlights = highlights
vw.ForceRedraw()
}
-func (vw *MapView) AddHighlightPermanent(p game.Permanent, color color.Color) {
+func (vw *MapView) AddHighlightPermanent(p game.Permanent, col color.Color) {
+ if colors, found := vw.permanentsHighlights[p]; found {
+ vw.permanentsHighlights[p] = append(colors, col)
+ } else {
+ vw.permanentsHighlights[p] = []color.Color{col}
+ }
vw.ForceRedraw()
- vw.permanentsHighlights[p] = color
}
func (vw *MapView) HighlightPermanent(p game.Permanent, color color.Color) {