mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 07:50:45 +00:00
handshake icon with allied
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
@@ -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)
|
||||
]
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user