handshake icon with allied

This commit is contained in:
evanpelle
2024-09-19 08:00:13 -07:00
parent 41e77858ee
commit df682aaabf
4 changed files with 33 additions and 3 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

+1 -1
View File
@@ -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)
]
+29 -2
View File
@@ -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<Player> = 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
}
}
+3
View File
@@ -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
}