[pongwars] improve scoreboard
This commit is contained in:
parent
240fc5fe4c
commit
7f63fb4c22
@ -91,7 +91,8 @@
|
||||
const canvas = document.getElementById("pongCanvas");
|
||||
const ctx = canvas.getContext("2d");
|
||||
const scoreElement = document.getElementById("score");
|
||||
const startTime = new Date();
|
||||
|
||||
var suddenDeathStart = null;
|
||||
var suddenDeathCoeff = 0;
|
||||
|
||||
const teams = [
|
||||
@ -215,7 +216,7 @@
|
||||
}
|
||||
|
||||
function elapsedSec() {
|
||||
return ((new Date()) - startTime)/1000
|
||||
return ((new Date()) - suddenDeathStart)/1000
|
||||
}
|
||||
|
||||
updateScoreElement();
|
||||
@ -245,10 +246,14 @@
|
||||
return v*x + (1-v)*y;
|
||||
}
|
||||
|
||||
var nTeams = teams.length;
|
||||
|
||||
function updateSquareAndBounce(x, y, dx, dy, color) {
|
||||
if (state[color].elim) return
|
||||
if (Math.max(Math.abs(dx), Math.abs(dy)) < 0.02) state[color].elim = true
|
||||
|
||||
nTeams = state.map(t => !t.elim).filter(Boolean).length
|
||||
|
||||
if (Math.min(x, y) < 0 || isNaN(x) || isNaN(y)) {
|
||||
console.warn(`warped ${teams[color].name}`)
|
||||
teams[color].x = canvas.width * 0.1;
|
||||
@ -265,8 +270,6 @@
|
||||
dy = -4;
|
||||
}
|
||||
|
||||
const nTeams = state.map(t => !t.elim).filter(Boolean).length
|
||||
|
||||
// death coefficient (if not enough territory, slow down)
|
||||
const coeff = Math.min((teams[color].score/(numSquaresX*numSquaresY/nTeams/mix(1.2, 4, suddenDeathCoeff))), 1.00);
|
||||
|
||||
@ -348,9 +351,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
scoreElement.textContent = teams
|
||||
.map((t, idx) => `(${idx}) ${t.name} ${t.score}`)
|
||||
.join(" | ") + (suddenDeathCoeff > 0.1 ? " | sudden death!" : "");
|
||||
if (nTeams > 1) {
|
||||
scoreElement.textContent = teams
|
||||
.map((t, idx) => `(${idx}) ${t.name} ${t.score}`)
|
||||
.filter((t, idx) => !state[idx].elim)
|
||||
.join(" | ") + (suddenDeathCoeff > 0.1 ? " | sudden death!" : "");
|
||||
} else {
|
||||
scoreElement.textContent = teams
|
||||
.filter((t, idx) => !state[idx].elim)
|
||||
.map((t) => `${t.name} 👑 wins`)
|
||||
}
|
||||
}
|
||||
|
||||
function draw() {
|
||||
@ -383,7 +393,11 @@
|
||||
}
|
||||
|
||||
updateScoreElement();
|
||||
// suddenDeathCoeff = Math.min((elapsedSec()/60/3)**15, 1);
|
||||
if (suddenDeathStart !== null) {
|
||||
suddenDeathCoeff = Math.min((elapsedSec()/60/5)**15, 1);
|
||||
} else if (nTeams <= 3) {
|
||||
suddenDeathStart = new Date();
|
||||
}
|
||||
requestAnimationFrame(draw);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user