Checkpoint WebGL book reveal optimization
This commit is contained in:
@@ -29,6 +29,7 @@ class UIControllerModule extends BaseModule {
|
||||
this.ttsHandler = null;
|
||||
this.socketClient = null;
|
||||
this.animationQueue = null;
|
||||
this.currentInputMode = document.documentElement.dataset.inputMode || 'none';
|
||||
|
||||
// Add TTS toggle state
|
||||
this.ttsEnabled = false;
|
||||
@@ -56,6 +57,7 @@ class UIControllerModule extends BaseModule {
|
||||
'clearDisplay',
|
||||
'sendCommand',
|
||||
'isInteractiveClickTarget',
|
||||
'isChoiceAwaitingPlayer',
|
||||
'updateButtonStates'
|
||||
]);
|
||||
}
|
||||
@@ -262,6 +264,9 @@ class UIControllerModule extends BaseModule {
|
||||
if (!event.detail || event.detail.moduleId === this.id) return;
|
||||
this.handleCommand(event.detail);
|
||||
});
|
||||
this.addEventListener(document, 'story:input-mode', (event) => {
|
||||
this.currentInputMode = ['text', 'choice', 'end', 'none'].includes(event.detail) ? event.detail : 'none';
|
||||
});
|
||||
|
||||
this.addEventListener(document, 'click', (event) => {
|
||||
if (this.isInteractiveClickTarget(event.target)) {
|
||||
@@ -270,7 +275,7 @@ class UIControllerModule extends BaseModule {
|
||||
|
||||
const playbackCoordinator = this.getModule('playback-coordinator');
|
||||
const hasSkippablePause = document.documentElement.dataset.skippablePause === 'true';
|
||||
if ((playbackCoordinator && playbackCoordinator.isPlaying) || hasSkippablePause) {
|
||||
if (((playbackCoordinator && playbackCoordinator.isPlaying) || hasSkippablePause) && !this.isChoiceAwaitingPlayer()) {
|
||||
this.handleCommand({ type: 'continue', source: 'book-click' });
|
||||
}
|
||||
|
||||
@@ -667,6 +672,14 @@ class UIControllerModule extends BaseModule {
|
||||
'.volume-toggle'
|
||||
].join(',')));
|
||||
}
|
||||
|
||||
isChoiceAwaitingPlayer() {
|
||||
if (this.currentInputMode !== 'choice') {
|
||||
return false;
|
||||
}
|
||||
const choicePanel = document.getElementById('story_choices');
|
||||
return Boolean(choicePanel && !choicePanel.hidden && choicePanel.dataset.choiceReady === 'true');
|
||||
}
|
||||
|
||||
handleCommand(command) {
|
||||
// Route commands to appropriate handlers
|
||||
@@ -679,6 +692,9 @@ class UIControllerModule extends BaseModule {
|
||||
break;
|
||||
case 'continue':
|
||||
{
|
||||
if (this.isChoiceAwaitingPlayer()) {
|
||||
return;
|
||||
}
|
||||
document.dispatchEvent(new CustomEvent('ui:command', {
|
||||
detail: { moduleId: this.id, type: 'continue', source: command.source || 'ui-controller-forward' }
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user