mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 07:50:45 +00:00
emoji icons show above players (just fire emoji for now)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import {Cell, Game, Player, PlayerType} from "../../../core/game/Game"
|
||||
import {AllPlayers, Cell, Game, Player, PlayerType} from "../../../core/game/Game"
|
||||
import {PseudoRandom} from "../../../core/PseudoRandom"
|
||||
import {calculateBoundingBox} from "../../../core/Util"
|
||||
import {Theme} from "../../../core/configuration/Config"
|
||||
@@ -188,6 +188,18 @@ export class NameLayer implements Layer {
|
||||
);
|
||||
}
|
||||
|
||||
if (myPlayer != null) {
|
||||
const emojis = render.player.outgoingEmojis().filter(e => e.recipient == AllPlayers || e.recipient == myPlayer)
|
||||
if (emojis.length > 0) {
|
||||
context.font = `${render.fontSize * 4}px ${this.theme.font()}`;
|
||||
context.fillStyle = this.theme.playerInfoColor(render.player.id()).toHex();
|
||||
context.textAlign = 'center';
|
||||
context.textBaseline = 'middle';
|
||||
|
||||
context.fillText(emojis[0].emoji, nameCenterX, nameCenterY + render.fontSize / 2);
|
||||
}
|
||||
}
|
||||
|
||||
context.textRendering = "optimizeSpeed";
|
||||
|
||||
context.font = `${render.fontSize}px ${this.theme.font()}`;
|
||||
|
||||
@@ -226,11 +226,13 @@ export class RadialMenu implements Layer {
|
||||
|
||||
if (tile.hasOwner()) {
|
||||
const target = tile.owner() == myPlayer ? AllPlayers : (tile.owner() as Player)
|
||||
this.activateMenuElement(Slot.Emoji, "#ebe250", emojiIcon, () => {
|
||||
this.eventBus.emit(
|
||||
new SendEmojiIntentEvent(target, Emoji.Fire)
|
||||
)
|
||||
})
|
||||
if (myPlayer.canSendEmoji(target)) {
|
||||
this.activateMenuElement(Slot.Emoji, "#ebe250", emojiIcon, () => {
|
||||
this.eventBus.emit(
|
||||
new SendEmojiIntentEvent(target, Emoji.Fire)
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (tile.owner() != myPlayer && tile.isLand() && myPlayer.sharesBorderWith(other)) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import {PlayerInfo} from "../game/Game";
|
||||
import {DefaultConfig} from "./DefaultConfig";
|
||||
|
||||
export const devConfig = new class extends DefaultConfig {
|
||||
@@ -5,14 +6,14 @@ export const devConfig = new class extends DefaultConfig {
|
||||
return 95
|
||||
}
|
||||
numSpawnPhaseTurns(): number {
|
||||
return 80
|
||||
return 40
|
||||
}
|
||||
gameCreationRate(): number {
|
||||
return 2 * 1000
|
||||
}
|
||||
lobbyLifetime(): number {
|
||||
return 2 * 1000
|
||||
}
|
||||
// gameCreationRate(): number {
|
||||
// return 2 * 1000
|
||||
// }
|
||||
// lobbyLifetime(): number {
|
||||
// return 2 * 1000
|
||||
// }
|
||||
turnIntervalMs(): number {
|
||||
return 100
|
||||
}
|
||||
@@ -29,12 +30,12 @@ export const devConfig = new class extends DefaultConfig {
|
||||
// return 1
|
||||
// }
|
||||
|
||||
// startTroops(playerInfo: PlayerInfo): number {
|
||||
// if (playerInfo.isBot) {
|
||||
// return 5000
|
||||
// }
|
||||
// return 5000
|
||||
// }
|
||||
startTroops(playerInfo: PlayerInfo): number {
|
||||
// if (playerInfo.isBot) {
|
||||
// return 5000
|
||||
// }
|
||||
return 50000
|
||||
}
|
||||
|
||||
// troopAdditionRate(player: Player): number {
|
||||
// if (player.isBot()) {
|
||||
|
||||
@@ -219,10 +219,12 @@ export class PlayerImpl implements MutablePlayer {
|
||||
}
|
||||
|
||||
outgoingEmojis(): EmojiMessage[] {
|
||||
return null
|
||||
return this.outgoingEmojis_
|
||||
.filter(e => this.gs.ticks() - e.createdAt < this.gs.config().emojiMessageDuration())
|
||||
.sort((a, b) => b.createdAt - a.createdAt)
|
||||
}
|
||||
|
||||
canSendEmoji(recipient: Player | null): boolean {
|
||||
canSendEmoji(recipient: Player | typeof AllPlayers): boolean {
|
||||
const prevMsgs = this.outgoingEmojis_.filter(msg => msg.recipient == recipient)
|
||||
for (const msg of prevMsgs) {
|
||||
if (this.gs.ticks() - msg.createdAt < this.gs.config().emojiMessageCooldown()) {
|
||||
|
||||
Reference in New Issue
Block a user