Skip to content

Commit 3ab2e90

Browse files
committed
Fix cutscene skip to coin insert flow
1 parent 64ccf56 commit 3ab2e90

1 file changed

Lines changed: 12 additions & 42 deletions

File tree

js/app.js

Lines changed: 12 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@
5050
let phase = 'phase1';
5151
let cutsceneDone = false;
5252
let cutsceneSkipBound = false;
53-
let phase3ReadyToEnter = false;
54-
5553
function playVideo(video) {
5654
video.currentTime = 0;
5755
const promise = video.play();
@@ -87,48 +85,20 @@
8785
});
8886
}
8987

90-
function holdPhase3EndFrame(from) {
91-
phase = 'awaiting-entry';
92-
phase3ReadyToEnter = true;
93-
hidePrompt();
94-
requestAnimationFrame(() => {
95-
v3.style.opacity = '1';
96-
if (from) {
97-
v3.addEventListener('transitionend', () => {
98-
from.style.opacity = '0';
99-
}, { once: true });
100-
}
101-
});
102-
103-
const seekToEndFrame = () => {
104-
const safeDuration = Number.isFinite(v3.duration) ? v3.duration : 0;
105-
const endFrameTime = safeDuration > 0.08 ? safeDuration - 0.05 : Math.max(safeDuration, 0);
106-
v3.currentTime = endFrameTime;
107-
v3.pause();
108-
};
109-
110-
if (v3.readyState >= HTMLMediaElement.HAVE_METADATA) {
111-
seekToEndFrame();
112-
} else {
113-
v3.addEventListener('loadedmetadata', seekToEndFrame, { once: true });
114-
v3.load();
115-
}
116-
}
117-
11888
function goToPhase3() {
119-
if (phase === 'phase3' || phase === 'awaiting-entry' || phase === 'done') return;
89+
if (phase === 'phase3' || phase === 'done') return;
12090
const from = phase === 'loop' ? v2 : v1;
121-
phase3ReadyToEnter = false;
91+
phase = 'phase3';
12292
v2.loop = false;
12393
v2.pause();
124-
holdPhase3EndFrame(from);
94+
hidePrompt();
95+
show(v3, from);
12596
}
12697

12798
function enterWebsite() {
12899
if (cutsceneDone) return;
129100
cutsceneDone = true;
130101
phase = 'done';
131-
phase3ReadyToEnter = false;
132102
unbindCutsceneSkip();
133103
hidePrompt();
134104

@@ -181,13 +151,7 @@
181151
if (e.type === 'keydown' && e.code !== 'Space' && e.code !== 'Enter') return;
182152
if (e.type !== 'keydown' && !isTouchDevice) return;
183153
if (e.cancelable) e.preventDefault();
184-
if (phase === 'phase1' || phase === 'loop') {
185-
goToPhase3();
186-
return;
187-
}
188-
if (phase === 'awaiting-entry' && phase3ReadyToEnter) {
189-
enterWebsite();
190-
}
154+
if (phase === 'phase1' || phase === 'loop') goToPhase3();
191155
}
192156

193157
function bindCutsceneSkip() {
@@ -209,7 +173,9 @@
209173
phase = 'loop';
210174
show(v2, v1);
211175
setTimeout(() => {
212-
setPrompt('PRESS SPACE / TAP TO SKIP');
176+
if (phase === 'loop') {
177+
setPrompt('PRESS SPACE / TAP TO INSERT COIN');
178+
}
213179
}, 4000);
214180
}, { once: true });
215181

@@ -231,5 +197,9 @@
231197
v1.addEventListener('canplay', () => playVideo(v1), { once: true });
232198
}
233199

200+
v3.addEventListener('ended', () => {
201+
enterWebsite();
202+
}, { once: true });
203+
234204
});
235205
})();

0 commit comments

Comments
 (0)