initial commit
Build and Release / build-and-release (push) Has been cancelled

This commit is contained in:
2026-04-03 15:33:20 -07:00
commit aeabddcf3a
41 changed files with 16061 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
// ── Hardpoint Enemy Counter ──
// Displays enemy capture points being scored in Hardpoint mode.
let hpObserver: MutationObserver | null = null;
let hpCounterEl: HTMLElement | null = null;
let hpPointCounter: HTMLElement | null = null;
let hpEnemyOBJ = 0;
let hpTimeout: ReturnType<typeof setTimeout> | null = null;
let hpCheckInterval: ReturnType<typeof setInterval> | null = null;
function processTeamScores(): void {
const teams = document.querySelectorAll('#tScoreC1, #tScoreC2');
for (const team of teams) {
if (team.className.includes('you')) continue;
const scoreEl = team.nextElementSibling;
if (!scoreEl) continue;
const currentScore = parseInt(scoreEl.textContent || '0', 10);
if (currentScore > hpEnemyOBJ && hpPointCounter) {
hpPointCounter.textContent = String((currentScore - hpEnemyOBJ) / 10);
if (hpTimeout) clearTimeout(hpTimeout);
hpTimeout = setTimeout(() => {
if (hpPointCounter) hpPointCounter.textContent = '0';
hpTimeout = null;
}, 1600);
}
hpEnemyOBJ = currentScore;
}
}
function setupHPDisplay(): void {
const counters = document.querySelector('.topRightCounters');
if (!counters || hpCounterEl) return;
hpCounterEl = document.createElement('div');
hpCounterEl.className = 'statIcon kpc-hp-counter';
hpCounterEl.innerHTML =
'<div class="greyInner" style="display:flex">' +
'<span style="color:white;font-size:15px;margin-right:4px;">on</span>' +
'<span class="pointVal">0</span></div>';
hpPointCounter = hpCounterEl.querySelector('.pointVal');
counters.appendChild(hpCounterEl);
const teamScores = document.getElementById('teamScores');
if (teamScores) {
hpObserver = new MutationObserver(processTeamScores);
hpObserver.observe(teamScores, { childList: true, subtree: true });
}
}
export function initHPCounter(): void {
hpCheckInterval = setInterval(() => {
if (document.querySelector('.cmpTmHed')) {
if (hpCheckInterval) { clearInterval(hpCheckInterval); hpCheckInterval = null; }
setupHPDisplay();
}
}, 2000);
}
export function destroyHPCounter(): void {
if (hpCheckInterval) { clearInterval(hpCheckInterval); hpCheckInterval = null; }
if (hpObserver) { hpObserver.disconnect(); hpObserver = null; }
if (hpCounterEl) { hpCounterEl.remove(); hpCounterEl = null; }
if (hpTimeout) { clearTimeout(hpTimeout); hpTimeout = null; }
hpPointCounter = null;
hpEnemyOBJ = 0;
}