1
0

Save point: Scene 3 timing rework, text duplication fix, rain 5s, cursor blink 1

This commit is contained in:
avi
2026-05-10 15:23:01 -05:00
parent a708f18bfc
commit 3ef72c3bb0

View File

@@ -348,6 +348,7 @@
<script> <script>
// Testing shortcuts state // Testing shortcuts state
let skipAnimations = false; let skipAnimations = false;
let scene3TypewriterTimeouts = [];
// Canvas setup for Matrix rain // Canvas setup for Matrix rain
const canvas = document.getElementById('matrixCanvas'); const canvas = document.getElementById('matrixCanvas');
@@ -365,7 +366,7 @@
let columns = Math.floor(canvas.width / fontSize); let columns = Math.floor(canvas.width / fontSize);
let drops = []; let drops = [];
const chars = '0123456789@#$%^&*()'; const chars = '0123456789@#$%^&*()';
const rainDuration = 8000; // 8 seconds const rainDuration = 5000; // 5 seconds
let rainActive = false; let rainActive = false;
let rainStartTime = null; let rainStartTime = null;
@@ -610,7 +611,7 @@
}, 500); }, 500);
} }
function typeCalmly(elem, text, callback, minDelay, maxDelay) { function typeCalmly(elem, text, callback, minDelay, maxDelay, timeoutArray) {
let i = 0; let i = 0;
const total = text.length; const total = text.length;
@@ -625,7 +626,8 @@
const dMin = minDelay || 35; const dMin = minDelay || 35;
const dMax = maxDelay || 65; const dMax = maxDelay || 65;
const delay = dMin + progress * progress * (dMax - dMin); const delay = dMin + progress * progress * (dMax - dMin);
setTimeout(typeChar, delay); const id = setTimeout(typeChar, delay);
timeoutArray && timeoutArray.push(id);
} }
typeChar(); typeChar();
} }
@@ -656,7 +658,7 @@
cursor.style.display = 'none'; cursor.style.display = 'none';
line2.style.display = 'flex'; line2.style.display = 'flex';
blinkCursor(cursor2, 3, () => { blinkCursor(cursor2, 1, () => {
typeCalmly(message2, "TO LAB 484", () => { typeCalmly(message2, "TO LAB 484", () => {
setTimeout(() => { setTimeout(() => {
btn.style.visibility = 'visible'; btn.style.visibility = 'visible';
@@ -670,7 +672,7 @@
} }
btn.style.opacity = btnOpacity; btn.style.opacity = btnOpacity;
}, 30); }, 30);
}, 3000); }, 1000);
}); });
}); });
}); });
@@ -750,6 +752,7 @@
const builderBtn = document.getElementById('builderBtn'); const builderBtn = document.getElementById('builderBtn');
const developerBtn = document.getElementById('developerBtn'); const developerBtn = document.getElementById('developerBtn');
const choiceBtns = [creatorBtn, builderBtn, developerBtn]; const choiceBtns = [creatorBtn, builderBtn, developerBtn];
scene3TypewriterTimeouts = [];
let opacity = 0; let opacity = 0;
const fadeIn = setInterval(() => { const fadeIn = setInterval(() => {
@@ -768,9 +771,22 @@
setTimeout(() => { setTimeout(() => {
rl1.style.display = 'flex'; rl1.style.display = 'flex';
blinkCursor(cursor, 3, () => { blinkCursor(cursor, 1, () => {
typeCalmly(rt1, "THE LAB IS CONNECTING WITH PEOPLE WHO SEE WHAT'S HAPPENINGG - WHO KNOW CHANGE ISN'T OPTIONAL. WE'RE LOOKING FOR THOSE READY TO STEP IN AND SHAPE THE FUTURE", () => { typeCalmly(rt1, "THE LAB IS CONNECTING WITH PEOPLE WHO SEE WHAT'S HAPPENINGG - WHO KNOW CHANGE ISN'T OPTIONAL. WE'RE LOOKING FOR THOSE READY TO STEP IN AND SHAPE THE FUTURE", () => {
setTimeout(() => { setTimeout(() => {
const fitInText = document.getElementById('scene3FitInText');
fitInText.textContent = 'WHERE DO YOU FIT IN?';
fitInText.style.visibility = 'visible';
let fiOpacity = 0;
const fiFadeIn = setInterval(() => {
fiOpacity += 0.05;
if (fiOpacity >= 1) {
fiOpacity = 1;
clearInterval(fiFadeIn);
}
fitInText.style.opacity = fiOpacity;
}, 30);
setTimeout(() => {
choiceBtns.forEach(btn => { choiceBtns.forEach(btn => {
btn.style.display = 'block'; btn.style.display = 'block';
btn.style.visibility = 'visible'; btn.style.visibility = 'visible';
@@ -785,25 +801,12 @@
btn.style.opacity = btnOpacity; btn.style.opacity = btnOpacity;
}, 30); }, 30);
}); });
setTimeout(() => {
const fitInText = document.getElementById('scene3FitInText');
fitInText.textContent = 'WHERE DO YOU FIT IN?';
fitInText.style.visibility = 'visible';
let fiOpacity = 0;
const fiFadeIn = setInterval(() => {
fiOpacity += 0.05;
if (fiOpacity >= 1) {
fiOpacity = 1;
clearInterval(fiFadeIn);
}
fitInText.style.opacity = fiOpacity;
}, 30);
}, 500); }, 500);
}, 3000); }, 500);
}, 10, 25); }, undefined, undefined, scene3TypewriterTimeouts);
}); });
}, 2000); }, 2000);
}); }, undefined, undefined, scene3TypewriterTimeouts);
} }
sceneElem.style.opacity = opacity; sceneElem.style.opacity = opacity;
}, 30); }, 30);
@@ -873,6 +876,8 @@
const builderBtn = document.getElementById('builderBtn'); const builderBtn = document.getElementById('builderBtn');
const developerBtn = document.getElementById('developerBtn'); const developerBtn = document.getElementById('developerBtn');
if (scene3.style.display === 'flex' && creatorBtn.style.visibility !== 'visible') { if (scene3.style.display === 'flex' && creatorBtn.style.visibility !== 'visible') {
scene3TypewriterTimeouts.forEach(t => clearTimeout(t));
scene3TypewriterTimeouts = [];
rCursor.style.display = 'none'; rCursor.style.display = 'none';
recruitLines.style.display = 'flex'; recruitLines.style.display = 'flex';
rl1.style.display = 'flex'; rl1.style.display = 'flex';