From df682aaabf40a032229483d0e020840e6902ccc1 Mon Sep 17 00:00:00 2001 From: evanpelle Date: Thu, 19 Sep 2024 08:00:13 -0700 Subject: [PATCH] handshake icon with allied --- resources/images/AllianceIcon.png | Bin 0 -> 43062 bytes src/client/graphics/GameRenderer.ts | 2 +- src/client/graphics/layers/NameLayer.ts | 31 ++++++++++++++++++++++-- src/core/game/PlayerImpl.ts | 3 +++ 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 resources/images/AllianceIcon.png diff --git a/resources/images/AllianceIcon.png b/resources/images/AllianceIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd140a6d3bbbc56f7d1455004a10712da76632d GIT binary patch literal 43062 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 Uci{;I@VDJ&_g_!89J%~I0JXK6ivR!s literal 0 HcmV?d00001 diff --git a/src/client/graphics/GameRenderer.ts b/src/client/graphics/GameRenderer.ts index 4edf943a6..120a47273 100644 --- a/src/client/graphics/GameRenderer.ts +++ b/src/client/graphics/GameRenderer.ts @@ -17,7 +17,7 @@ export function createRenderer(game: Game, eventBus: EventBus, clientID: ClientI const layers: Layer[] = [ new TerrainLayer(game), new TerritoryLayer(game, eventBus), - new NameLayer(game, game.config().theme(), transformHandler), + new NameLayer(game, game.config().theme(), transformHandler, clientID), new UILayer(eventBus, game, game.config().theme(), clientID, transformHandler) ] diff --git a/src/client/graphics/layers/NameLayer.ts b/src/client/graphics/layers/NameLayer.ts index bc0889674..d4251833d 100644 --- a/src/client/graphics/layers/NameLayer.ts +++ b/src/client/graphics/layers/NameLayer.ts @@ -7,6 +7,8 @@ import {placeName} from "../NameBoxCalculator" import {TransformHandler} from "../TransformHandler" import {renderTroops} from "../Utils" import traitorIcon from '../../../../resources/images/TraitorIcon.png'; +import allianceIcon from '../../../../resources/images/AllianceIcon.png'; +import {ClientID} from "../../../core/Schemas" class RenderInfo { @@ -30,18 +32,24 @@ export class NameLayer implements Layer { private renders: RenderInfo[] = [] private seenPlayers: Set = new Set() private traitorIconImage: HTMLImageElement; + private allianceIconImage: HTMLImageElement; + + private myPlayer: Player | null = null - constructor(private game: Game, private theme: Theme, private transformHandler: TransformHandler) { + + constructor(private game: Game, private theme: Theme, private transformHandler: TransformHandler, private clientID: ClientID) { this.traitorIconImage = new Image(); this.traitorIconImage.src = traitorIcon; + + this.allianceIconImage = new Image() + this.allianceIconImage.src = allianceIcon } shouldTransform(): boolean { return true } - public init() { } @@ -132,6 +140,17 @@ export class NameLayer implements Layer { ); } + const myPlayer = this.getPlayer() + if (myPlayer != null && myPlayer.alliedWith(render.player)) { + context.drawImage( + this.allianceIconImage, + nameCenterX - iconSize / 2, + nameCenterY - iconSize / 2, + iconSize, + iconSize + ); + } + context.textRendering = "optimizeSpeed"; context.font = `${render.fontSize}px ${this.theme.font()}`; @@ -144,4 +163,12 @@ export class NameLayer implements Layer { context.fillText(renderTroops(render.player.troops()), nameCenterX, nameCenterY + render.fontSize); } + + private getPlayer(): Player | null { + if(this.myPlayer != null) { + return this.myPlayer + } + this.myPlayer = this.game.players().find(p => p.clientID() == this.clientID) + return this.myPlayer + } } \ No newline at end of file diff --git a/src/core/game/PlayerImpl.ts b/src/core/game/PlayerImpl.ts index 51426884e..9cd61a472 100644 --- a/src/core/game/PlayerImpl.ts +++ b/src/core/game/PlayerImpl.ts @@ -124,6 +124,9 @@ export class PlayerImpl implements MutablePlayer { } alliedWith(other: Player): boolean { + if (other == this) { + return false + } return this.alliances().find(a => a.recipient() == other || a.requestor() == other) != null }