dont make calls to Game. functions from addMenuToDom

This commit is contained in:
Zutatensuppe 2021-05-04 10:21:47 +02:00
parent 9b19f2da74
commit 46ba272226

View file

@ -54,8 +54,7 @@ let KEY_LISTENER_OFF = false
let PIECE_VIEW_FIXED = true let PIECE_VIEW_FIXED = true
let PIECE_VIEW_LOOSE = true let PIECE_VIEW_LOOSE = true
function addMenuToDom(gameId) { function addMenuToDom(previewImageUrl) {
const previewImageUrl = Game.getImageUrl(gameId)
function row (...elements) { function row (...elements) {
const row = ELEMENTS.TR.cloneNode(true) const row = ELEMENTS.TR.cloneNode(true)
for (let el of elements) { for (let el of elements) {
@ -231,10 +230,9 @@ function addMenuToDom(gameId) {
scoresTitleEl.appendChild(document.createTextNode('Scores')) scoresTitleEl.appendChild(document.createTextNode('Scores'))
const scoresListEl = ELEMENTS.TABLE.cloneNode(true) const scoresListEl = ELEMENTS.TABLE.cloneNode(true)
const updateScoreBoard = (ts) => { const updateScoreBoard = (players, ts) => {
const minTs = ts - 30 * Time.SEC const minTs = ts - 30 * Time.SEC
const players = Game.getRelevantPlayers(gameId, ts)
const actives = players.filter(player => player.ts >= minTs) const actives = players.filter(player => player.ts >= minTs)
const nonActives = players.filter(player => player.ts < minTs) const nonActives = players.filter(player => player.ts < minTs)
@ -262,25 +260,21 @@ function addMenuToDom(gameId) {
} }
} }
const timerStr = () => { const timerStr = (started, ended, ts) => {
const started = Game.getStartTs(gameId)
const ended = Game.getFinishTs(gameId)
const icon = ended ? '🏁' : '⏳' const icon = ended ? '🏁' : '⏳'
const from = started; const from = started;
const to = ended || TIME() const to = ended || ts
const timeDiffStr = Time.timeDiffStr(from, to) const timeDiffStr = Time.timeDiffStr(from, to)
return `${icon} ${timeDiffStr}` return `${icon} ${timeDiffStr}`
} }
const timerCountdownEl = ELEMENTS.DIV.cloneNode(true) const timerCountdownEl = ELEMENTS.DIV.cloneNode(true)
const updateTimer = () => { const updateTimer = (started, ended, ts) => {
timerCountdownEl.innerText = timerStr() timerCountdownEl.innerText = timerStr(started, ended, ts)
} }
const tilesDoneEl = ELEMENTS.DIV.cloneNode(true) const tilesDoneEl = ELEMENTS.DIV.cloneNode(true)
const udateTilesDone = () => { const udateTilesDone = (finished, total) => {
const tilesFinished = Game.getFinishedTileCount(gameId) tilesDoneEl.innerText = `🧩 ${finished}/${total}`
const tilesTotal = Game.getTileCount(gameId)
tilesDoneEl.innerText = `🧩 ${tilesFinished}/${tilesTotal}`
} }
const timerEl = ELEMENTS.DIV.cloneNode(true) const timerEl = ELEMENTS.DIV.cloneNode(true)
@ -562,10 +556,12 @@ async function main() {
udateTilesDone, udateTilesDone,
togglePreview, togglePreview,
replayControl, replayControl,
} = addMenuToDom(gameId) } = addMenuToDom(Game.getImageUrl(gameId))
updateTimer()
udateTilesDone() const ts = TIME()
updateScoreBoard(TIME()) updateTimer(Game.getStartTs(gameId), Game.getFinishTs(gameId), ts)
udateTilesDone(Game.getFinishedTileCount(gameId), Game.getTileCount(gameId))
updateScoreBoard(Game.getRelevantPlayers(gameId, ts), ts)
const longFinished = !! Game.getFinishTs(gameId) const longFinished = !! Game.getFinishTs(gameId)
let finished = longFinished let finished = longFinished
@ -640,7 +636,13 @@ async function main() {
localStorage.setItem('player_name', nameChangeEl.value) localStorage.setItem('player_name', nameChangeEl.value)
evts.addEvent([Protocol.INPUT_EV_PLAYER_NAME, nameChangeEl.value]) evts.addEvent([Protocol.INPUT_EV_PLAYER_NAME, nameChangeEl.value])
}) })
setInterval(updateTimer, 1000) setInterval(() => {
updateTimer(
Game.getStartTs(gameId),
Game.getFinishTs(gameId),
TIME()
)
}, 1000)
} else if (MODE === MODE_REPLAY) { } else if (MODE === MODE_REPLAY) {
const setSpeedStatus = () => { const setSpeedStatus = () => {
replayControl.speed.innerText = 'Replay-Speed: ' + replayControl.speed.innerText = 'Replay-Speed: ' +
@ -740,7 +742,11 @@ async function main() {
} while (true) } while (true)
REPLAY.lastRealTs = realTs REPLAY.lastRealTs = realTs
REPLAY.lastGameTs = maxGameTs REPLAY.lastGameTs = maxGameTs
updateTimer() updateTimer(
Game.getStartTs(gameId),
Game.getFinishTs(gameId),
TIME()
)
}, 50) }, 50)
} }
@ -944,8 +950,8 @@ async function main() {
// DRAW PLAYERS // DRAW PLAYERS
// --------------------------------------------------------------- // ---------------------------------------------------------------
updateScoreBoard(ts) updateScoreBoard(Game.getRelevantPlayers(gameId, ts), ts)
udateTilesDone() udateTilesDone(Game.getFinishedTileCount(gameId), Game.getTileCount(gameId))
if (DEBUG) Debug.checkpoint('scores done') if (DEBUG) Debug.checkpoint('scores done')
// --------------------------------------------------------------- // ---------------------------------------------------------------