From e2083b53df1467096c1c7bee4b1e4ab79bc7c80a Mon Sep 17 00:00:00 2001 From: ilan schemoul Date: Sun, 2 Mar 2025 18:34:22 +0100 Subject: [PATCH] feat: icon over player name to signal embargo --- resources/images/EmbargoIcon.svg | 29 +++++++++++++++++++++++++ src/client/graphics/layers/NameLayer.ts | 22 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100755 resources/images/EmbargoIcon.svg diff --git a/resources/images/EmbargoIcon.svg b/resources/images/EmbargoIcon.svg new file mode 100755 index 000000000..62e41ad6b --- /dev/null +++ b/resources/images/EmbargoIcon.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/src/client/graphics/layers/NameLayer.ts b/src/client/graphics/layers/NameLayer.ts index 734507917..f4e085e66 100644 --- a/src/client/graphics/layers/NameLayer.ts +++ b/src/client/graphics/layers/NameLayer.ts @@ -14,6 +14,7 @@ import allianceIcon from "../../../../resources/images/AllianceIcon.svg"; import allianceRequestIcon from "../../../../resources/images/AllianceRequestIcon.svg"; import crownIcon from "../../../../resources/images/CrownIcon.svg"; import targetIcon from "../../../../resources/images/TargetIcon.svg"; +import embargoIcon from "../../../../resources/images/EmbargoIcon.svg"; import { ClientID } from "../../../core/Schemas"; import { GameView, PlayerView } from "../../../core/game/GameView"; import { createCanvas, renderTroops } from "../../Utils"; @@ -45,6 +46,7 @@ export class NameLayer implements Layer { private allianceIconImage: HTMLImageElement; private targetIconImage: HTMLImageElement; private crownIconImage: HTMLImageElement; + private embargoIconImage: HTMLImageElement; private container: HTMLDivElement; private myPlayer: PlayerView | null = null; private firstPlace: PlayerView | null = null; @@ -65,6 +67,8 @@ export class NameLayer implements Layer { this.crownIconImage.src = crownIcon; this.targetIconImage = new Image(); this.targetIconImage.src = targetIcon; + this.embargoIconImage = new Image(); + this.embargoIconImage.src = embargoIcon; } resizeCanvas() { @@ -380,6 +384,24 @@ export class NameLayer implements Layer { existingEmoji.remove(); } + const existingEmbargo = iconsDiv.querySelector('[data-icon="embargo"]'); + const hasEmbargo = + render.player.hasEmbargoAgainst(myPlayer) || + myPlayer.hasEmbargoAgainst(render.player); + if (myPlayer && hasEmbargo) { + if (!existingEmbargo) { + iconsDiv.appendChild( + this.createIconElement( + this.embargoIconImage.src, + iconSize, + "embargo", + ), + ); + } + } else if (existingEmbargo) { + existingEmbargo.remove(); + } + // Update all icon sizes const icons = iconsDiv.getElementsByTagName("img"); for (const icon of icons) {