Fix: videos start playing after party starts
This commit is contained in:
parent
eba86f81d6
commit
032f2981a0
@ -1,6 +1,18 @@
|
|||||||
import * as THREE from 'three';
|
import * as THREE from 'three';
|
||||||
import { state } from '../state.js';
|
import { state } from '../state.js';
|
||||||
import { turnTvScreenOff, turnTvScreenOn } from '../scene/projection-screen.js';
|
import { turnTvScreenOff, turnTvScreenOn } from '../scene/projection-screen.js';
|
||||||
|
import sceneFeatureManager from '../scene/SceneFeatureManager.js';
|
||||||
|
|
||||||
|
// Register a feature to handle party start
|
||||||
|
sceneFeatureManager.register({
|
||||||
|
init: () => {},
|
||||||
|
update: () => {},
|
||||||
|
onPartyStart: () => {
|
||||||
|
if (state.videoUrls && state.videoUrls.length > 0) {
|
||||||
|
startVideoPlayback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// --- Play video by index ---
|
// --- Play video by index ---
|
||||||
export function playVideoByIndex(index) {
|
export function playVideoByIndex(index) {
|
||||||
@ -70,6 +82,14 @@ export function playNextVideo() {
|
|||||||
playVideoByIndex(nextIndex);
|
playVideoByIndex(nextIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function startVideoPlayback() {
|
||||||
|
if (state.videoUrls && state.videoUrls.length > 0) {
|
||||||
|
console.info(`Starting playback of ${state.videoUrls.length} tapes.`);
|
||||||
|
if (state.loadTapeButton) state.loadTapeButton.classList.add("hidden");
|
||||||
|
playVideoByIndex(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function playPreviousVideo() {
|
export function playPreviousVideo() {
|
||||||
let prevIndex = state.currentVideoIndex - 1;
|
let prevIndex = state.currentVideoIndex - 1;
|
||||||
if (prevIndex < 0) {
|
if (prevIndex < 0) {
|
||||||
@ -160,11 +180,13 @@ export function loadVideoFile(event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Start playback of the first video
|
// 3. Start playback logic
|
||||||
console.info(`Loaded ${state.videoUrls.length} tapes. Starting playback...`);
|
console.info(`Loaded ${state.videoUrls.length} tapes.`);
|
||||||
state.loadTapeButton.classList.add("hidden");
|
|
||||||
|
if (state.partyStarted) {
|
||||||
const startDelay = 5;
|
startVideoPlayback();
|
||||||
console.info(`Video will start in ${startDelay} seconds.`);
|
} else {
|
||||||
setTimeout(() => { playVideoByIndex(0); }, startDelay * 1000);
|
console.info("Tapes loaded. Waiting for party start...");
|
||||||
|
if (state.loadTapeButton) state.loadTapeButton.innerText = "Tapes Ready";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -12,7 +12,7 @@ void main() {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const ledCountX = 256;
|
const ledCountX = 128;
|
||||||
const ledCountY = ledCountX * (9 / 16);
|
const ledCountY = ledCountX * (9 / 16);
|
||||||
|
|
||||||
const screenFragmentShader = `
|
const screenFragmentShader = `
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user