cocos02
bf4b09f4e0
feat: pause menu, accessibility improvements, main menu polish, roadmap update
2026-06-10 15:18:39 +08:00
cocos02
e7ed52d89b
fix: reduce menu overlay opacity to show background video
2026-06-10 14:54:28 +08:00
cocos02
76581d0326
feat: intro video, asset updates, roadmap and engine improvements
2026-06-10 14:47:45 +08:00
cocos02
bb289f5438
feat: switch hotspot coordinates from container percentage to absolute content pixels
2026-06-10 12:45:41 +08:00
cocos02
5eac0f23a8
fix: prefix locales path with assetBase so fetch resolves correctly
2026-06-10 12:32:20 +08:00
cocos02
8f6138f97e
fix: remove scene. prefix from textKey, add fallback to choice.text when locale key missing
2026-06-10 12:29:01 +08:00
cocos02
86a0aebdc8
feat: configurable locales path per story, dynamic language switching from story data
2026-06-10 12:17:52 +08:00
cocos02
4cf2263c78
refactor: separate story locales (public/) from UI locales (src/), async fetch for story messages
2026-06-10 12:10:03 +08:00
cocos02
0071a34acf
feat: add Japanese language support, three-language subtitles for all demo scenes
2026-06-10 11:55:03 +08:00
cocos02
937e709dca
feat: global assetBase for scene JSON, convert demo to relative paths
2026-06-10 11:01:21 +08:00
cocos02
23478f0065
feat: three-layer scene loading (?scene > config.json > main.json)
2026-06-10 10:48:17 +08:00
cocos02
48fb89449a
fix: clear gameEnded flag on new game start so MainMenu dismisses
2026-06-09 20:20:04 +08:00
cocos02
87ba62b9ef
feat: main menu component, roadmap update
2026-06-09 20:15:46 +08:00
cocos02
48da959b3a
fix: sync adjusted QTE total to ring animation via qteTimer event
2026-06-09 20:07:03 +08:00
cocos02
1c00ff9de5
fix: sync adjusted QTE total to ring animation via qteTimer event
2026-06-09 20:06:16 +08:00
cocos02
5eb727f17e
fix: watch QTE settings for immediate sync to engine during gameplay
2026-06-09 19:57:02 +08:00
cocos02
3185dc5819
fix: change pause key from Space to P, disable pause during QTE
2026-06-09 19:46:51 +08:00
cocos02
c9d29019a0
feat: accessibility settings, subtitle/QTE improvements, docs update
2026-06-09 19:42:08 +08:00
cocos02
906965c963
fix: wire up EndingGallery click to open ChapterRecap via chapterId
2026-06-09 17:57:21 +08:00
cocos02
9297117544
feat: P15 ending gallery, chapter recap, visited tracking, save system v6
2026-06-09 17:49:07 +08:00
cocos02
451c6ea025
chore: sync latest changes
2026-06-09 17:21:54 +08:00
cocos02
bca137535b
fix: hoist prompt toast to App.vue so it survives ChoicePanel unmount after selection
2026-06-09 16:55:57 +08:00
cocos02
bf4b85f727
feat: choice conditions with variables, demo updates, roadmap update
2026-06-09 16:46:06 +08:00
cocos02
f044ed0b60
refactor: switch to key-based i18n for choices, revert inline textEn approach
2026-06-09 15:54:55 +08:00
cocos02
8e7f77bc38
feat: inline bilingual choice text (textEn), lang-aware choice rendering
2026-06-09 15:51:37 +08:00
cocos02
daec24d69b
fix: App.vue updates
2026-06-09 15:45:58 +08:00
cocos02
59aed77199
feat: i18n system, lang switch component, english subtitles, UI improvements, roadmap update
2026-06-09 15:40:51 +08:00
cocos02
6b4114af43
feat: press Esc to open menu during gameplay, close with Esc
2026-06-09 15:40:01 +08:00
cocos02
72e442f2c3
feat: UI polish, chapter select improvements, save system enhancements, roadmap update
2026-06-09 15:19:53 +08:00
cocos02
2748b2c16f
fix: remove absolute positioning from PlaybackBar to prevent overlap with top-bar buttons
2026-06-09 15:03:18 +08:00
cocos02
0a6d26ecb0
fix: suppress videoEnd during QTE, clear QTE UI on game end and chapter restart
2026-06-09 14:55:13 +08:00
cocos02
660fa9347c
feat: playback bar component, save system improvements, demo and roadmap updates
2026-06-09 14:21:41 +08:00
cocos02
9e339c7c16
refactor: inline event registration at setup level, remove registerEvents duplication across entry points
2026-06-09 12:06:40 +08:00
cocos02
ace5ed1fb3
feat: chapter select system, multi-chapter support, scene manager refactor, and docs update
2026-06-09 11:35:11 +08:00
cocos02
655b9a23d0
feat: fullscreen composable, roadmap update, and future plans doc
2026-06-09 10:47:14 +08:00
cocos02
fa7c333214
fix: use v-show instead of v-if for GamePlayer to prevent video element detach during image scenes
2026-06-08 14:26:21 +08:00
cocos02
6b67989007
feat: engine improvements, new scenes, videos, subtitles, hotspot component and docs update
2026-06-08 14:01:58 +08:00
cocos02
65c26e0972
fix: clear old subtitle cues when switching to scene without subtitles
...
Previously when subtitleUrl became null, the old cues array was retained
and would replay from the beginning on the next scene.
2026-06-07 21:22:45 +08:00
cocos02
bb657b3547
fix: capture save thumbnail on videoEnd instead of sceneChange
...
Previously thumbnail was captured during sceneChange (before video starts
playing), so readyState was low and capture was skipped. Now capture on
videoEnd when frame is guaranteed visible, store in lastThumbnail, and
reuse for both auto-save (slot 0) and manual save.
2026-06-07 21:11:18 +08:00
cocos02
b6eb3c3959
fix: QTE false race condition + restore auto-save slot in menu
...
- QTESystem: add if (!this.active) return guard in setInterval/setTimeout
callbacks to prevent false result from firing after successful key press
- SaveLoadMenu: restore auto-save slot 0 row with blue styling, thumbnail,
scene label, and read-only load button
2026-06-07 21:07:21 +08:00
cocos02
e2670c50d4
refactor: rename Subtitles prop videoUrl to subtitleUrl
2026-06-07 20:48:39 +08:00
cocos02
ef00babdb7
feat: add dump() method to GameStore for debugging
2026-06-07 20:30:39 +08:00
cocos02
64a474a741
feat: expose store as window.__store for debugging
2026-06-07 20:29:14 +08:00
cocos02
319a379921
feat: P2 - QTE system, subtitles, save thumbnails
...
- QTESystem: trigger detection via timeupdate, multi-key matching, timeout handling
- QTEOverlay: SVG countdown ring + key prompts + success/fail animation
- Engine: integrate QTE (timeupdate check, conditional branching, effect application)
- Subtitles: WebVTT parsing + synchronized subtitle rendering
- GamePlayer: overlay QTE and subtitle components
- SaveSystem: DB v2 with thumbnail field, canvas snapshot at 320x180 JPEG
- SaveLoadMenu: thumbnail preview for save slots
- VideoManager: getActiveVideoElement() for canvas capture
- App.vue: QTE/subtitle integration, thumbnail capture on save
- stores: QTE state management, save list with thumbnails
- demo.json: QTE scene (right_door), subtitles, new event types
- ROADMAP: mark P2 as completed
2026-06-07 19:35:14 +08:00
cocos02
c61826e87c
feat: auto-save on scene change + resume from auto-save
...
- useGameEngine: auto-save to slot 0 on every sceneChange event
- useGameEngine: add resumeAutoSave() for continuing from auto-save
- useGameEngine: extract registerEvents() to share between start and resume
- SaveLoadMenu: show slot 0 as '自动存档' with distinct styling and read-only button
- App.vue: check auto-save on load, show '继续上次进度' button if available
2026-06-07 18:42:34 +08:00
cocos02
2de9f99a81
feat: add StateManager.dump() and expose window.__sm for debugging
...
- StateManager.dump(): console.table formatted dump of variables, flags, history
- window.__sm: exposes engine.stateManager in dev mode for console inspection
2026-06-07 17:27:52 +08:00
cocos02
937e45c203
feat: P1 core - seamless video switching, conditional branches, save/load
...
- VideoManager: A/B dual-buffered video with crossfade transitions and candidate preloading
- Engine: condition-based choice filtering, ChoiceSystem timer, resumeScene for save/load
- SceneManager: getCandidateUrls for preloading next scenes
- SaveSystem: Dexie.js IndexedDB multi-slot save/load
- ChoiceSystem: timed choices with countdown and auto-default on timeout
- GamePlayer: dual video elements with crossfade CSS
- ChoicePanel: timer progress bar and countdown text
- SaveLoadMenu: save/load UI component
- App.vue: menu trigger, dual video refs, save/load integration
- gameStore: timer state, saves list
- demo.json: conditional choice example (secret ending, requires trust >= 80)
- ROADMAP: mark P1 as completed
2026-06-07 16:48:52 +08:00
cocos02
42181fe185
chore: remove unused imports in useGameEngine
2026-06-07 16:18:05 +08:00
cocos02
7aed2b46ca
fix: add start button to satisfy browser autoplay policy
...
Replace auto-start after loading with a '开始游戏' button overlay.
The user click provides the required user gesture for autoplay with sound,
fixing the issue where play() was silently rejected and choices never appeared.
2026-06-07 15:44:31 +08:00
cocos02
fb93782331
fix: wait for DOM update before attaching video element
2026-06-07 14:16:20 +08:00