assets/scripts.js: Clean up some global variables

This commit is contained in:
Vladimir Panteleev 2019-07-28 05:28:46 +00:00
parent 449e112040
commit bc5a6bf2b9

View file

@ -5,13 +5,6 @@ var choicePoints = bv.choicePointNavigatorMetadata.choicePointsMetadata.choicePo
var momentsBySegment = bv.momentsBySegment; var momentsBySegment = bv.momentsBySegment;
var segmentGroups = bv.segmentGroups; var segmentGroups = bv.segmentGroups;
// Global mutable state
var captions = {};
var currentSegment;
var nextSegment = null;
var currentMoments = [];
var globalChoices = {};
// Persistent state // Persistent state
var ls = window.localStorage || {}; var ls = window.localStorage || {};
@ -130,6 +123,8 @@ function addItem(ul, text, url) {
ul.appendChild(li); ul.appendChild(li);
} }
var nextSegment = null;
function setNextSegment(segmentId, comment) { function setNextSegment(segmentId, comment) {
console.log('setNextSegment', segmentId, comment); console.log('setNextSegment', segmentId, comment);
nextSegment = segmentId; nextSegment = segmentId;
@ -158,7 +153,7 @@ function addZones(segmentId) {
ul = newList("nextSegments"); ul = newList("nextSegments");
for (const [k, v] of Object.entries(segmentMap.segments[segmentId].next)) { for (const [k, v] of Object.entries(segmentMap.segments[segmentId].next)) {
let caption = captions[k] ? captions[k] : k; let caption = k;
if (segmentMap.segments[segmentId].defaultNext == k) { if (segmentMap.segments[segmentId].defaultNext == k) {
caption = '[' + caption + ']'; caption = '[' + caption + ']';
setNextSegment(k); setNextSegment(k);
@ -167,6 +162,8 @@ function addZones(segmentId) {
} }
} }
var globalChoices = {};
function addChoices(r) { function addChoices(r) {
var ul = newList("choices"); var ul = newList("choices");
document.getElementById("choiceCaption").innerHTML = ''; document.getElementById("choiceCaption").innerHTML = '';
@ -214,8 +211,10 @@ function momentEnd(m, seeked) {
var timerId = 0; var timerId = 0;
var lastMs = 0; var lastMs = 0;
var currentSegment;
var lastSegment = null; var lastSegment = null;
var segmentTransition = false; var segmentTransition = false;
var lastMoments = [];
function ontimeupdate(evt) { function ontimeupdate(evt) {
var ms = getCurrentMs(); var ms = getCurrentMs();
@ -264,27 +263,27 @@ function ontimeupdate(evt) {
var naturalTransition = !seeked || segmentTransition; var naturalTransition = !seeked || segmentTransition;
segmentTransition = false; segmentTransition = false;
var moments = getMoments(currentSegment, ms); var currentMoments = getMoments(currentSegment, ms);
for (let k in currentMoments) for (let k in lastMoments)
if (!(k in moments)) {
momentEnd(currentMoments[k], !naturalTransition);
placeChanged = true;
}
for (let k in currentMoments)
if (k in moments)
momentUpdate(currentMoments[k], ms);
for (let k in moments)
if (!(k in currentMoments)) { if (!(k in currentMoments)) {
momentStart(moments[k], !naturalTransition); momentEnd(lastMoments[k], !naturalTransition);
placeChanged = true; placeChanged = true;
} }
currentMoments = moments; for (let k in lastMoments)
if (k in currentMoments)
momentUpdate(lastMoments[k], ms);
for (let k in currentMoments)
if (!(k in lastMoments)) {
momentStart(currentMoments[k], !naturalTransition);
placeChanged = true;
}
lastMoments = currentMoments;
if (placeChanged) { if (placeChanged) {
let title = 'Bandersnatch'; let title = 'Bandersnatch';
title += ' - Chapter ' + currentSegment; title += ' - Chapter ' + currentSegment;
for (let k in moments) { for (let k in currentMoments) {
let m = moments[k]; let m = currentMoments[k];
if (m.type.substr(0, 6) == 'scene:') { if (m.type.substr(0, 6) == 'scene:') {
if (m.id && m.id in choicePoints && choicePoints[m.id].description) if (m.id && m.id in choicePoints && choicePoints[m.id].description)
title += ' - Choice "' + choicePoints[m.id].description + '"'; title += ' - Choice "' + choicePoints[m.id].description + '"';
@ -297,8 +296,8 @@ function ontimeupdate(evt) {
let hash = currentSegment; let hash = currentSegment;
// Pick the moment which starts closer to the current timestamp. // Pick the moment which starts closer to the current timestamp.
let bestMomentStart = segmentMap.segments[currentSegment].startTimeMs; let bestMomentStart = segmentMap.segments[currentSegment].startTimeMs;
for (let k in moments) { for (let k in currentMoments) {
let m = moments[k]; let m = currentMoments[k];
if (m.startMs > bestMomentStart) { if (m.startMs > bestMomentStart) {
hash = k; hash = k;
bestMomentStart = m.startMs; bestMomentStart = m.startMs;