UNPKG

comic-bubbles

Version:

Animated comic bubbles - what else?

72 lines (55 loc) 1.91 kB
import { incCounter, resetCharsDrawn, resetCounter } from './javascript/heartbeat.mjs' import { cacheFontDesc, drawWord } from './javascript/fontMapper.mjs' import { injectBubbles, getRandomPhraseId } from './javascript/phrases.mjs' import { injectScenePrefs } from './javascript/scenePrefs.mjs' import { wait, fixParents } from './javascript/helperFunctions.mjs' import { paintBubbles } from './javascript/painter.mjs' import { getScene, deleteScene, hasScene } from './javascript/sceneCache.mjs' import { generateBubbleDeviations, randomizeBubbleDeviations, injectBubbleDeviations, } from './javascript/deviations.mjs' export let stopRequested = new Map() export async function settingScene(sceneId) { await wait(50) resetCharsDrawn() resetCounter() deleteScene(sceneId) let scene = getScene(sceneId) await cacheFontDesc('font-6') await injectScenePrefs(sceneId) generateBubbleDeviations(sceneId) randomizeBubbleDeviations(sceneId) scene.calcBounds() let randomPhraseId = await getRandomPhraseId() // Animate for (let i = 0; i < 10000; i++) { await wait((1000 / 60) * 4) if (stopRequested.has(sceneId)) { await wait(300) stopRequested.delete(sceneId) return } requestAnimationFrame(async function () { incCounter() const startTime = performance.now() scene.bubCon.clearBubbles() await injectBubbles(sceneId, randomPhraseId) fixParents(sceneId) await injectScenePrefs(sceneId) injectBubbleDeviations(sceneId) paintBubbles(sceneId) const endTime = performance.now() const elapsedTime = endTime - startTime //drawWord('' + elapsedTime.toFixed(2) + ' ' + counter, 'font-6', false, false, 80, 95) }) } } export async function stopScene(sceneId) { if (hasScene(sceneId)) { stopRequested.set(sceneId) await wait(50) deleteScene(sceneId) } }