Can target other players

This commit is contained in:
evanpelle
2024-10-02 16:39:15 -07:00
parent 2223e40d53
commit 4aae657690
8 changed files with 34 additions and 10 deletions
+17 -1
View File
@@ -1,6 +1,6 @@
import {nullable} from "zod";
import {EventBus, GameEvent} from "../../../core/EventBus";
import {AllianceExpiredEvent, AllianceRequestEvent, AllianceRequestReplyEvent, BrokeAllianceEvent, Game, Player, PlayerID} from "../../../core/game/Game";
import {AllianceExpiredEvent, AllianceRequestEvent, AllianceRequestReplyEvent, BrokeAllianceEvent, Game, Player, PlayerID, TargetPlayerEvent} from "../../../core/game/Game";
import {ClientID} from "../../../core/Schemas";
import {Layer} from "./Layer";
import {SendAllianceReplyIntentEvent} from "../../Transport";
@@ -52,6 +52,7 @@ export class EventsDisplay implements Layer {
this.eventBus.on(DisplayMessageEvent, e => this.onDisplayMessageEvent(e))
this.eventBus.on(BrokeAllianceEvent, e => this.onBrokeAllianceEvent(e))
this.eventBus.on(AllianceExpiredEvent, e => this.onAllianceExpiredEvent(e))
this.eventBus.on(TargetPlayerEvent, e => this.onTargetPlayerEvent(e))
this.renderTable()
}
@@ -210,6 +211,21 @@ export class EventsDisplay implements Layer {
})
}
onTargetPlayerEvent(event: TargetPlayerEvent) {
const myPlayer = this.game.playerByClientID(this.clientID)
if (myPlayer == null) {
return
}
if (myPlayer.isAlliedWith(event.player)) {
this.addEvent({
description: `${event.player.name()} requests you attack ${event.target.name()}`,
type: MessageType.INFO,
highlight: true,
createdAt: this.game.ticks(),
})
}
}
addEvent(event: Event): void {
this.events.push(event);
this.renderTable()
+1 -1
View File
@@ -178,7 +178,7 @@ export class NameLayer implements Layer {
);
}
if (new Set(myPlayer.transitiveTargets()).has(render.player)) {
if (myPlayer != null && new Set(myPlayer.transitiveTargets()).has(render.player)) {
context.drawImage(
this.targetIconImage,
nameCenterX - iconSize / 2,
+2
View File
@@ -254,6 +254,8 @@ export class RadialMenu implements Layer {
new SendAllianceRequestIntentEvent(myPlayer, other)
)
})
}
if (myPlayer.canTarget(other)) {
this.activateMenuElement(Slot.Target, "#c74848", targetIcon, () => {
this.eventBus.emit(
new SendTargetPlayerIntentEvent(other.id())