2022-08-13 12:40:42 +02:00
|
|
|
|
import * as Enum from "./Enums.js";
|
2022-10-18 17:05:32 +02:00
|
|
|
|
import {BuyMenu} from "./hud/BuyMenu.js";
|
|
|
|
|
import {ScoreBoard} from "./hud/ScoreBoard.js";
|
|
|
|
|
import {KillFeed} from "./hud/KillFeed.js";
|
2022-10-19 17:19:04 +02:00
|
|
|
|
import {Radar} from "./hud/Radar.js";
|
2022-08-13 12:40:42 +02:00
|
|
|
|
|
|
|
|
|
export class HUD {
|
|
|
|
|
#game
|
2022-10-18 17:05:32 +02:00
|
|
|
|
#buyMenu = null;
|
|
|
|
|
#scoreBoard = null;
|
|
|
|
|
#killFeed = null;
|
2022-10-19 17:19:04 +02:00
|
|
|
|
#radar = null;
|
2022-10-22 21:35:14 +02:00
|
|
|
|
#showAble = {
|
2022-10-07 15:44:35 +02:00
|
|
|
|
showScore: false,
|
|
|
|
|
showBuyMenu: false
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
#elements = {
|
|
|
|
|
score: null,
|
2022-10-05 20:08:33 +02:00
|
|
|
|
scoreDetail: null,
|
2022-10-07 15:44:35 +02:00
|
|
|
|
buyMenu: null,
|
2022-10-09 17:40:06 +02:00
|
|
|
|
canBuyIcon: null,
|
2022-10-30 15:07:24 +01:00
|
|
|
|
canPlantIcon: null,
|
2022-11-13 16:54:06 +01:00
|
|
|
|
haveDefuseKit: null,
|
2022-11-09 12:33:06 +01:00
|
|
|
|
spectateUi: null,
|
2022-08-13 12:40:42 +02:00
|
|
|
|
equippedItem: null,
|
|
|
|
|
slotModel: null,
|
2022-10-12 13:48:22 +02:00
|
|
|
|
shotModel: null,
|
2022-11-05 17:12:25 +01:00
|
|
|
|
dropModel: null,
|
2022-08-13 12:40:42 +02:00
|
|
|
|
inventory: null,
|
|
|
|
|
money: null,
|
|
|
|
|
health: null,
|
|
|
|
|
armor: null,
|
2022-10-04 19:45:10 +02:00
|
|
|
|
ammo: null,
|
2022-08-13 12:40:42 +02:00
|
|
|
|
messageTop: null,
|
|
|
|
|
messageBottom: null,
|
|
|
|
|
scoreMyTeam: null,
|
|
|
|
|
scoreOpponentTeam: null,
|
|
|
|
|
aliveMyTeam: null,
|
|
|
|
|
aliveOpponentTeam: null,
|
|
|
|
|
time: null,
|
|
|
|
|
killFeed: null,
|
|
|
|
|
}
|
2022-10-12 13:48:22 +02:00
|
|
|
|
#shotAnimationInterval = null;
|
2022-08-13 12:40:42 +02:00
|
|
|
|
#countDownIntervalId = null;
|
2022-10-18 17:05:32 +02:00
|
|
|
|
#scoreBoardData = null;
|
2022-08-13 12:40:42 +02:00
|
|
|
|
|
2022-11-07 20:02:09 +01:00
|
|
|
|
injectDependency(game) {
|
2022-08-13 12:40:42 +02:00
|
|
|
|
this.#game = game
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pause(msg, timeMs) {
|
|
|
|
|
this.#startCountDown(timeMs)
|
|
|
|
|
this.displayTopMessage(msg)
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-11 16:55:14 +02:00
|
|
|
|
toggleBuyMenu() {
|
2022-10-22 21:35:14 +02:00
|
|
|
|
this.#showAble.showBuyMenu = !this.#showAble.showBuyMenu
|
2022-10-07 15:44:35 +02:00
|
|
|
|
}
|
|
|
|
|
|
2022-10-22 21:35:14 +02:00
|
|
|
|
toggleScore(enabled) {
|
|
|
|
|
this.#showAble.showScore = enabled
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
2022-10-30 15:07:24 +01:00
|
|
|
|
bombPlanted(detonationTimeSec) {
|
|
|
|
|
this.#resetCountDown()
|
|
|
|
|
this.#elements.time.innerText = '⚠️ 💣'
|
|
|
|
|
this.displayBottomMessage(`<span class="text-danger">⚠️ Alert</span><br>The bomb has been planted.<br>${detonationTimeSec} seconds to detonation.`)
|
|
|
|
|
setTimeout(() => this.clearBottomMessage(), 3000)
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
2022-10-18 17:05:32 +02:00
|
|
|
|
requestFullScoreBoardUpdate(scoreBoardData) {
|
|
|
|
|
this.#scoreBoardData = scoreBoardData
|
2022-10-07 15:44:35 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
updateMyTeamPlayerMoney(playerData, money) {
|
2022-10-18 17:05:32 +02:00
|
|
|
|
const moneyElement = this.#scoreBoard.getPlayerStatRowElement(playerData).querySelector('[data-money]')
|
2022-10-07 15:44:35 +02:00
|
|
|
|
moneyElement.innerText = `${money}`
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-06 20:35:28 +02:00
|
|
|
|
showKill(playerCulprit, playerDead, wasHeadshot, playerMe, killedItemId) {
|
2022-10-18 17:05:32 +02:00
|
|
|
|
this.#killFeed.showKill(playerCulprit, playerDead, wasHeadshot, playerMe, killedItemId)
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
roundStart(roundTimeMs) {
|
|
|
|
|
this.#startCountDown(roundTimeMs)
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-30 15:07:24 +01:00
|
|
|
|
#resetCountDown() {
|
2022-08-13 12:40:42 +02:00
|
|
|
|
clearInterval(this.#countDownIntervalId)
|
2022-10-30 15:07:24 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#startCountDown(timeMs) {
|
|
|
|
|
this.#resetCountDown()
|
2022-08-13 12:40:42 +02:00
|
|
|
|
let roundTimeSec = Math.floor(timeMs / 1000)
|
|
|
|
|
|
|
|
|
|
const timeElement = this.#elements.time
|
|
|
|
|
let roundTimeInterval = setInterval(function () {
|
|
|
|
|
roundTimeSec--
|
|
|
|
|
|
|
|
|
|
let roundTimeMinute = Math.floor(roundTimeSec / 60)
|
|
|
|
|
timeElement.innerText = `${roundTimeMinute.toString().padStart(2, '0')}:${(roundTimeSec % 60).toString().padStart(2, '0')}`
|
|
|
|
|
if (roundTimeSec === 0) {
|
|
|
|
|
clearInterval(roundTimeInterval)
|
|
|
|
|
}
|
|
|
|
|
}, 1000)
|
|
|
|
|
this.#countDownIntervalId = roundTimeInterval
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
startWarmup(timeMs) {
|
2022-10-16 17:53:47 +02:00
|
|
|
|
this.displayTopMessage('Waiting for all players to connect')
|
2022-08-13 12:40:42 +02:00
|
|
|
|
this.#startCountDown(timeMs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
displayTopMessage(msg) {
|
2022-10-16 17:53:47 +02:00
|
|
|
|
this.#elements.messageTop.innerText = msg
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
displayBottomMessage(msg) {
|
|
|
|
|
this.#elements.messageBottom.innerHTML = msg
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clearAlerts() {
|
|
|
|
|
this.clearTopMessage()
|
|
|
|
|
this.clearBottomMessage()
|
|
|
|
|
this.#elements.killFeed.innerHTML = ''
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clearTopMessage() {
|
2022-10-16 17:53:47 +02:00
|
|
|
|
this.#elements.messageTop.innerText = ''
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clearBottomMessage() {
|
2022-10-16 17:53:47 +02:00
|
|
|
|
this.#elements.messageBottom.innerHTML = ''
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
2022-10-05 20:08:33 +02:00
|
|
|
|
equip(slotId, availableSlots) {
|
2022-10-17 11:56:29 +02:00
|
|
|
|
this.#elements.slotModel.src = `./resources/slot_${slotId}.png`
|
2022-08-13 12:40:42 +02:00
|
|
|
|
this.#elements.inventory.querySelectorAll('[data-slot]').forEach(function (node) {
|
2022-10-05 20:08:33 +02:00
|
|
|
|
node.classList.remove('highlight', 'hidden')
|
2022-11-04 17:16:35 +01:00
|
|
|
|
if (availableSlots[node.dataset.slot] === undefined) {
|
2022-10-05 20:08:33 +02:00
|
|
|
|
node.classList.add('hidden')
|
|
|
|
|
}
|
2022-08-13 12:40:42 +02:00
|
|
|
|
})
|
|
|
|
|
this.#elements.inventory.querySelector(`[data-slot="${slotId}"]`).classList.add('highlight')
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-05 17:12:25 +01:00
|
|
|
|
showShot(item) {
|
2022-10-12 13:48:22 +02:00
|
|
|
|
clearTimeout(this.#shotAnimationInterval)
|
|
|
|
|
this.#elements.shotModel.classList.remove('hidden');
|
|
|
|
|
this.#shotAnimationInterval = setTimeout(() => this.#elements.shotModel.classList.add('hidden'), 30)
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-05 17:12:25 +01:00
|
|
|
|
showDropAnimation(item) {
|
|
|
|
|
clearTimeout(this.#shotAnimationInterval)
|
|
|
|
|
this.#elements.dropModel.classList.remove('hidden');
|
|
|
|
|
this.#shotAnimationInterval = setTimeout(() => this.#elements.dropModel.classList.add('hidden'), 100)
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-13 12:40:42 +02:00
|
|
|
|
updateHud(player) {
|
2022-10-19 17:19:04 +02:00
|
|
|
|
if (this.#radar) {
|
2022-11-16 18:12:16 +01:00
|
|
|
|
this.#radar.update(
|
|
|
|
|
this.#game.getMyTeamPlayers(),
|
|
|
|
|
this.#game.playerSpectate.getId(),
|
|
|
|
|
this.#game.getPlayerSpectateRotation()[0],
|
|
|
|
|
this.#game.playerMe.isAttacker() ? this.#game.bombDropPosition : null
|
|
|
|
|
)
|
2022-10-19 17:19:04 +02:00
|
|
|
|
}
|
2022-10-18 17:05:32 +02:00
|
|
|
|
if (this.#scoreBoardData !== null) {
|
|
|
|
|
this.#scoreBoard.update(this.#scoreBoardData)
|
|
|
|
|
this.#scoreBoardData = null
|
|
|
|
|
}
|
2022-10-30 15:07:24 +01:00
|
|
|
|
this.#elements.score.classList.toggle('hidden', !this.#showAble.showScore);
|
2022-10-09 17:40:06 +02:00
|
|
|
|
this.#elements.canBuyIcon.classList.toggle('hidden', !player.canBuy);
|
2022-10-30 15:07:24 +01:00
|
|
|
|
this.#elements.canPlantIcon.classList.toggle('hidden', !player.canPlant);
|
2022-11-13 16:54:06 +01:00
|
|
|
|
this.#elements.haveDefuseKit.classList.toggle('hidden', (player.slots[Enum.InventorySlot.SLOT_KIT] === undefined));
|
2022-11-09 12:33:06 +01:00
|
|
|
|
this.#elements.spectateUi.classList.toggle('hidden', this.#game.playerMe.getId() === this.#game.playerSpectate.getId());
|
2022-10-22 21:35:14 +02:00
|
|
|
|
if (player.canBuy && this.#showAble.showBuyMenu) {
|
|
|
|
|
this.#game.requestPointerUnLock()
|
2022-10-18 17:05:32 +02:00
|
|
|
|
this.#buyMenu.refresh(player, this.#game.playerMe.getTeamName())
|
2022-10-07 15:44:35 +02:00
|
|
|
|
this.#elements.buyMenu.classList.remove('hidden');
|
2022-10-11 16:55:14 +02:00
|
|
|
|
} else if (!this.#elements.buyMenu.classList.contains('hidden')) {
|
2022-10-22 21:35:14 +02:00
|
|
|
|
this.#game.requestPointerLock()
|
2022-10-09 13:28:35 +02:00
|
|
|
|
this.#elements.buyMenu.innerHTML = ''
|
2022-10-07 15:44:35 +02:00
|
|
|
|
this.#elements.buyMenu.classList.add('hidden');
|
2022-11-15 12:16:18 +01:00
|
|
|
|
this.#showAble.showBuyMenu = false
|
2022-10-07 15:44:35 +02:00
|
|
|
|
}
|
2022-08-13 12:40:42 +02:00
|
|
|
|
|
|
|
|
|
this.#elements.money.innerText = player.money
|
|
|
|
|
this.#elements.health.innerText = player.health
|
|
|
|
|
this.#elements.armor.innerText = player.armor
|
2022-10-04 19:45:10 +02:00
|
|
|
|
if (player.ammo === null) {
|
|
|
|
|
this.#elements.ammo.innerText = `${player.item.name}`
|
|
|
|
|
} else {
|
|
|
|
|
this.#elements.ammo.innerText = `${player.item.name} - ${player.ammo} / ${player.ammoReserve}`
|
|
|
|
|
}
|
2022-08-13 12:40:42 +02:00
|
|
|
|
|
2022-10-18 15:14:38 +02:00
|
|
|
|
let myTeamIndex = this.#game.playerMe.getTeamIndex()
|
|
|
|
|
let otherTeamIndex = this.#game.playerMe.getOtherTeamIndex()
|
2022-10-06 20:35:28 +02:00
|
|
|
|
this.#elements.scoreMyTeam.innerHTML = this.#game.score.score[myTeamIndex]
|
|
|
|
|
this.#elements.scoreOpponentTeam.innerHTML = this.#game.score.score[otherTeamIndex]
|
|
|
|
|
this.#elements.aliveMyTeam.innerHTML = this.#game.alivePlayers[myTeamIndex]
|
|
|
|
|
this.#elements.aliveOpponentTeam.innerHTML = this.#game.alivePlayers[otherTeamIndex]
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
|
2022-11-07 20:02:09 +01:00
|
|
|
|
createHud(elementHud, map, setting) {
|
2022-08-13 12:40:42 +02:00
|
|
|
|
if (this.#elements.score) {
|
|
|
|
|
throw new Error("HUD already created")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
elementHud.innerHTML = `
|
2022-11-15 12:16:18 +01:00
|
|
|
|
<div id="cross">${setting.getCrosshairSymbol()}</div>
|
2022-10-12 13:48:22 +02:00
|
|
|
|
<div id="equipped-item">
|
|
|
|
|
<div style="position:relative">
|
2022-10-17 11:56:29 +02:00
|
|
|
|
<img data-shot class="hidden" src="./resources/shot.gif">
|
2022-11-05 17:12:25 +01:00
|
|
|
|
<img data-drop class="hidden" src="./resources/drop.gif">
|
2022-10-18 15:14:38 +02:00
|
|
|
|
<img data-slot src="./resources/slot_${Enum.InventorySlot.SLOT_SECONDARY}.png">
|
2022-10-12 13:48:22 +02:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2022-08-13 12:40:42 +02:00
|
|
|
|
<div id="scoreboard" class="hidden">
|
2022-10-05 20:08:33 +02:00
|
|
|
|
<div id="scoreboard-detail"></div>
|
2022-08-13 12:40:42 +02:00
|
|
|
|
</div>
|
2022-10-09 13:28:35 +02:00
|
|
|
|
<div id="buy-menu" class="hidden"></div>
|
2022-08-13 12:40:42 +02:00
|
|
|
|
<section>
|
|
|
|
|
<div class="left">
|
|
|
|
|
<div class="top">
|
2022-10-19 17:19:04 +02:00
|
|
|
|
<div id="radar">
|
|
|
|
|
<canvas id="radar-canvas"></canvas>
|
2022-08-13 12:40:42 +02:00
|
|
|
|
</div>
|
2022-11-09 12:33:06 +01:00
|
|
|
|
<div id="mode-spectate" class="hidden" style="padding:12px 4px">Spectating</div>
|
2022-10-09 17:40:06 +02:00
|
|
|
|
<div class="money bg"><span data-money>0</span> $ <span data-can-buy>🛒</span></div>
|
2022-10-30 15:07:24 +01:00
|
|
|
|
<div data-can-plant class="hidden" style="margin:22px 4px">⇣ 💣 ⇣</div>
|
2022-11-13 16:54:06 +01:00
|
|
|
|
<div data-have-defuse-kit class="hidden" style="margin:22px 4px;font-size:140%">✂</div>
|
2022-08-13 12:40:42 +02:00
|
|
|
|
</div>
|
|
|
|
|
<div class="bottom">
|
2022-10-19 17:19:04 +02:00
|
|
|
|
<div id="fps-stats"></div>
|
2022-08-13 12:40:42 +02:00
|
|
|
|
<div class="health row bg">
|
|
|
|
|
<div class="hp">
|
|
|
|
|
➕ <span data-health>100</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="hp">
|
|
|
|
|
🛡️ <span data-armor>0</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="middle">
|
|
|
|
|
<div class="timer">
|
|
|
|
|
<div class="team-me-alive"></div>
|
|
|
|
|
<div class="timer-center bg">
|
|
|
|
|
<div id="time">---</div>
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="team-me-score">0</div>
|
|
|
|
|
<div class="team-opponent-score">0</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="team-opponent-alive"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="message-top"></div>
|
|
|
|
|
<div id="message-bottom"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="right">
|
|
|
|
|
<div class="kill-feed">
|
|
|
|
|
</div>
|
|
|
|
|
<div class="inventory">
|
2022-10-30 15:07:24 +01:00
|
|
|
|
<p data-slot="${Enum.InventorySlot.SLOT_KNIFE}">Knife</p>
|
|
|
|
|
<p class="hidden" data-slot="${Enum.InventorySlot.SLOT_PRIMARY}">Primary</p>
|
|
|
|
|
<p class="hidden" data-slot="${Enum.InventorySlot.SLOT_SECONDARY}">Secondary</p>
|
|
|
|
|
<p class="hidden" data-slot="${Enum.InventorySlot.SLOT_BOMB}">Bomb</p>
|
2022-08-13 12:40:42 +02:00
|
|
|
|
</div>
|
|
|
|
|
<div>
|
2022-11-15 12:16:18 +01:00
|
|
|
|
<span data-ammo class="ammo bg"></span>
|
2022-08-13 12:40:42 +02:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
this.#elements.score = elementHud.querySelector('#scoreboard')
|
2022-10-07 15:44:35 +02:00
|
|
|
|
this.#elements.buyMenu = elementHud.querySelector('#buy-menu')
|
2022-10-09 17:40:06 +02:00
|
|
|
|
this.#elements.canBuyIcon = elementHud.querySelector('[data-can-buy]')
|
2022-10-30 15:07:24 +01:00
|
|
|
|
this.#elements.canPlantIcon = elementHud.querySelector('[data-can-plant]')
|
2022-11-13 16:54:06 +01:00
|
|
|
|
this.#elements.haveDefuseKit = elementHud.querySelector('[data-have-defuse-kit]')
|
2022-11-09 12:33:06 +01:00
|
|
|
|
this.#elements.spectateUi = elementHud.querySelector('#mode-spectate')
|
2022-10-05 20:08:33 +02:00
|
|
|
|
this.#elements.scoreDetail = elementHud.querySelector('#scoreboard-detail')
|
2022-08-13 12:40:42 +02:00
|
|
|
|
this.#elements.equippedItem = elementHud.querySelector('#equipped-item')
|
2022-10-12 13:48:22 +02:00
|
|
|
|
this.#elements.slotModel = elementHud.querySelector('#equipped-item img[data-slot]')
|
|
|
|
|
this.#elements.shotModel = elementHud.querySelector('#equipped-item img[data-shot]')
|
2022-11-05 17:12:25 +01:00
|
|
|
|
this.#elements.dropModel = elementHud.querySelector('#equipped-item img[data-drop]')
|
2022-08-13 12:40:42 +02:00
|
|
|
|
this.#elements.inventory = elementHud.querySelector('.inventory')
|
|
|
|
|
this.#elements.money = elementHud.querySelector('[data-money]')
|
|
|
|
|
this.#elements.health = elementHud.querySelector('[data-health]')
|
|
|
|
|
this.#elements.armor = elementHud.querySelector('[data-armor]')
|
2022-10-04 19:45:10 +02:00
|
|
|
|
this.#elements.ammo = elementHud.querySelector('[data-ammo]')
|
2022-08-13 12:40:42 +02:00
|
|
|
|
this.#elements.messageTop = elementHud.querySelector('#message-top')
|
|
|
|
|
this.#elements.messageBottom = elementHud.querySelector('#message-bottom')
|
|
|
|
|
this.#elements.scoreMyTeam = elementHud.querySelector('.team-me-score')
|
|
|
|
|
this.#elements.scoreOpponentTeam = elementHud.querySelector('.team-opponent-score')
|
|
|
|
|
this.#elements.aliveMyTeam = elementHud.querySelector('.team-me-alive')
|
|
|
|
|
this.#elements.aliveOpponentTeam = elementHud.querySelector('.team-opponent-alive')
|
|
|
|
|
this.#elements.time = elementHud.querySelector('#time')
|
|
|
|
|
this.#elements.killFeed = elementHud.querySelector('.kill-feed')
|
2022-10-09 13:28:35 +02:00
|
|
|
|
|
|
|
|
|
const game = this.#game
|
2022-10-18 17:05:32 +02:00
|
|
|
|
this.#buyMenu = new BuyMenu(this.#elements.buyMenu)
|
|
|
|
|
this.#scoreBoard = new ScoreBoard(game, this.#elements.scoreDetail)
|
|
|
|
|
this.#killFeed = new KillFeed(this.#scoreBoard, this.#elements.killFeed)
|
|
|
|
|
|
2022-10-19 17:19:04 +02:00
|
|
|
|
const self = this
|
|
|
|
|
const radarImage = new Image()
|
|
|
|
|
radarImage.onload = function () {
|
|
|
|
|
const radarCanvas = elementHud.querySelector('#radar-canvas')
|
|
|
|
|
radarCanvas.width = this.width
|
|
|
|
|
radarCanvas.height = this.height
|
2022-11-07 20:02:09 +01:00
|
|
|
|
self.#radar = new Radar(radarCanvas, radarImage, map, setting.getRadarZoom())
|
2022-10-19 17:19:04 +02:00
|
|
|
|
}
|
|
|
|
|
radarImage.src = `./resources/map/${map}.png`
|
|
|
|
|
|
2022-10-09 13:28:35 +02:00
|
|
|
|
this.#elements.buyMenu.addEventListener('click', function (e) {
|
|
|
|
|
if (!e.target.classList.contains('action-buy')) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
game.buyList.push(e.target.dataset.buyMenuItemId)
|
|
|
|
|
}, {capture: true})
|
2022-08-13 12:40:42 +02:00
|
|
|
|
}
|
|
|
|
|
}
|