feat: P22 merge chapter select and gallery into StoryGallery, i18n updates
This commit is contained in:
65
src/App.vue
65
src/App.vue
@@ -6,15 +6,13 @@ import QTEOverlay from '@/components/QTEOverlay.vue'
|
||||
import Subtitles from '@/components/Subtitles.vue'
|
||||
import HotspotLayer from '@/components/HotspotLayer.vue'
|
||||
import SaveLoadMenu from '@/components/SaveLoadMenu.vue'
|
||||
import ChapterSelect from '@/components/ChapterSelect.vue'
|
||||
import PlaybackBar from '@/components/PlaybackBar.vue'
|
||||
import MainMenu from '@/components/MainMenu.vue'
|
||||
import PauseMenu from '@/components/PauseMenu.vue'
|
||||
import AchievementToast from '@/components/AchievementToast.vue'
|
||||
import AchievementPanel from '@/components/AchievementPanel.vue'
|
||||
import EndingGallery from '@/components/EndingGallery.vue'
|
||||
import ChapterRecap from '@/components/ChapterRecap.vue'
|
||||
import AccessibilitySettings from '@/components/AccessibilitySettings.vue'
|
||||
import StoryGallery from '@/components/StoryGallery.vue'
|
||||
import { useGameEngine } from '@/composables/useGameEngine'
|
||||
import { useGameStore } from '@/stores/gameStore'
|
||||
import { useFullscreen } from '@/composables/useFullscreen'
|
||||
@@ -29,10 +27,8 @@ const loading = ref(true)
|
||||
const started = ref(false)
|
||||
const showMenu = ref(false)
|
||||
const showPauseMenu = ref(false)
|
||||
const showChapterSelect = ref(false)
|
||||
const showStoryGallery = ref(false)
|
||||
const showAchievements = ref(false)
|
||||
const showEndingGallery = ref(false)
|
||||
const recapChapterId = ref<string | null>(null)
|
||||
const hasAutoSave = ref(false)
|
||||
const currentSpeed = ref(1)
|
||||
const canSkip = ref(false)
|
||||
@@ -117,8 +113,8 @@ watch([() => store.qteTimeRelax, () => store.qteSingleKey], () => {
|
||||
|
||||
watch(
|
||||
() => [
|
||||
showPauseMenu.value, showMenu.value, showChapterSelect.value,
|
||||
showAchievements.value, showEndingGallery.value, recapChapterId.value,
|
||||
showPauseMenu.value, showMenu.value,
|
||||
showAchievements.value, showStoryGallery.value,
|
||||
paused.value, store.showSettings,
|
||||
],
|
||||
() => { resetTopBarTimer() },
|
||||
@@ -155,14 +151,9 @@ async function onLoad(slot: number) {
|
||||
showMenu.value = false
|
||||
}
|
||||
|
||||
function openChapterSelect() {
|
||||
showMenu.value = false
|
||||
showChapterSelect.value = true
|
||||
}
|
||||
|
||||
async function onStartChapter(chapterId: string) {
|
||||
showChapterSelect.value = false
|
||||
started.value = true
|
||||
applyQteParams()
|
||||
startChapter(chapterId)
|
||||
}
|
||||
|
||||
@@ -201,18 +192,14 @@ function onGlobalKeydown(e: KeyboardEvent) {
|
||||
if (key === 'Escape') {
|
||||
if (store.showSettings) {
|
||||
store.showSettings = false
|
||||
} else if (showChapterSelect.value) {
|
||||
showChapterSelect.value = false
|
||||
} else if (showStoryGallery.value) {
|
||||
showStoryGallery.value = false
|
||||
} else if (showMenu.value) {
|
||||
showMenu.value = false
|
||||
} else if (showPauseMenu.value) {
|
||||
showPauseMenu.value = false
|
||||
} else if (showAchievements.value) {
|
||||
showAchievements.value = false
|
||||
} else if (showEndingGallery.value) {
|
||||
showEndingGallery.value = false
|
||||
} else if (recapChapterId.value) {
|
||||
recapChapterId.value = null
|
||||
} else if (started.value && !store.gameEnded) {
|
||||
showPauseMenu.value = true
|
||||
}
|
||||
@@ -258,9 +245,8 @@ function onGlobalMouseMove() {
|
||||
}
|
||||
|
||||
function anyOverlayOpen(): boolean {
|
||||
return showPauseMenu.value || showMenu.value || showChapterSelect.value
|
||||
|| showAchievements.value || showEndingGallery.value || !!recapChapterId.value
|
||||
|| paused.value || store.showSettings
|
||||
return showPauseMenu.value || showMenu.value || showStoryGallery.value
|
||||
|| showAchievements.value || paused.value || store.showSettings
|
||||
}
|
||||
|
||||
function resetTopBarTimer() {
|
||||
@@ -346,15 +332,13 @@ init()
|
||||
<MainMenu
|
||||
v-if="!started || store.gameEnded"
|
||||
:show-resume="!store.gameEnded && hasAutoSave"
|
||||
:show-chapters="store.chapters.length > 0"
|
||||
:show-story="store.chapters.length > 0"
|
||||
:show-achievements="store.achievementDefs.length > 0"
|
||||
:show-gallery="store.endings.length > 0"
|
||||
:is-game-end="store.gameEnded"
|
||||
@start="handleStart"
|
||||
@resume="handleResume"
|
||||
@chapters="openChapterSelect"
|
||||
@story="showStoryGallery = true"
|
||||
@achievements="showAchievements = true"
|
||||
@gallery="showEndingGallery = true"
|
||||
@settings="store.setShowSettings(true)"
|
||||
/>
|
||||
<PauseMenu
|
||||
@@ -371,12 +355,15 @@ init()
|
||||
@load="onLoad"
|
||||
@close="showMenu = false"
|
||||
/>
|
||||
<ChapterSelect
|
||||
v-if="showChapterSelect"
|
||||
<StoryGallery
|
||||
v-if="showStoryGallery"
|
||||
:chapters="store.chapters"
|
||||
:unlocked-ids="store.unlockedChapterIds"
|
||||
@select="onStartChapter"
|
||||
@back="showChapterSelect = false"
|
||||
:endings="store.endings"
|
||||
:scenes="engine.sceneManager.getScenes()"
|
||||
:visited-ids="store.visitedSceneIds"
|
||||
:unlocked-chapter-ids="store.unlockedChapterIds"
|
||||
@start-chapter="(chId: string) => { showStoryGallery = false; onStartChapter(chId) }"
|
||||
@close="showStoryGallery = false"
|
||||
/>
|
||||
<AchievementPanel
|
||||
v-if="showAchievements"
|
||||
@@ -384,20 +371,6 @@ init()
|
||||
:unlocked-ids="store.unlockedAchievementIds"
|
||||
@close="showAchievements = false"
|
||||
/>
|
||||
<EndingGallery
|
||||
v-if="showEndingGallery"
|
||||
:endings="store.endings"
|
||||
:visited-ids="store.visitedSceneIds"
|
||||
@close="showEndingGallery = false"
|
||||
@select-chapter="(chId: string) => { showEndingGallery = false; recapChapterId = chId }"
|
||||
/>
|
||||
<ChapterRecap
|
||||
v-if="recapChapterId"
|
||||
:chapter="store.chapters.find(c => c.id === recapChapterId)!"
|
||||
:scenes="engine.sceneManager.getScenes()"
|
||||
:visited-ids="store.visitedSceneIds"
|
||||
@close="recapChapterId = null"
|
||||
/>
|
||||
<AccessibilitySettings
|
||||
v-if="store.showSettings"
|
||||
@close="store.setShowSettings(false)"
|
||||
|
||||
Reference in New Issue
Block a user