From 8658fd0ff9c235d72f9f1d7294d32e963df3e72b Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 15 Apr 2025 20:46:59 -0700 Subject: [PATCH] bufix: paint unit sprites correctly on alternate view --- src/client/graphics/SpriteLoader.ts | 3 ++- src/client/graphics/layers/UnitLayer.ts | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/client/graphics/SpriteLoader.ts b/src/client/graphics/SpriteLoader.ts index d7836efb8..53d4f2575 100644 --- a/src/client/graphics/SpriteLoader.ts +++ b/src/client/graphics/SpriteLoader.ts @@ -76,10 +76,11 @@ export const getColoredSprite = ( unit: UnitView, theme: Theme, customTerritoryColor?: Colord, + customBorderColor?: Colord, ): HTMLCanvasElement => { const owner = unit.owner(); const territoryColor = customTerritoryColor ?? theme.territoryColor(owner); - const borderColor = theme.borderColor(owner); + const borderColor = customBorderColor ?? theme.borderColor(owner); const spawnHighlightColor = theme.spawnHighlightColor(); const colorKey = customTerritoryColor ? customTerritoryColor.toRgbString() diff --git a/src/client/graphics/layers/UnitLayer.ts b/src/client/graphics/layers/UnitLayer.ts index d03957e04..716791f80 100644 --- a/src/client/graphics/layers/UnitLayer.ts +++ b/src/client/graphics/layers/UnitLayer.ts @@ -479,7 +479,29 @@ export class UnitLayer implements Layer { const x = this.game.x(unit.tile()); const y = this.game.y(unit.tile()); - const sprite = getColoredSprite(unit, this.theme, customTerritoryColor); + let alternateViewColor = null; + + if (this.alternateView) { + const rel = this.relationship(unit); + switch (rel) { + case Relationship.Self: + alternateViewColor = this.theme.selfColor(); + break; + case Relationship.Ally: + alternateViewColor = this.theme.allyColor(); + break; + case Relationship.Enemy: + alternateViewColor = this.theme.enemyColor(); + break; + } + } + + const sprite = getColoredSprite( + unit, + this.theme, + alternateViewColor ?? customTerritoryColor, + alternateViewColor, + ); this.context.drawImage( sprite,