Rework story engine flow and reorganize project docs
Some checks failed
CI / verify (push) Has been cancelled
Some checks failed
CI / verify (push) Has been cancelled
This commit is contained in:
@@ -30,10 +30,14 @@ import { getScenePresetById } from '../data/scenePresets';
|
||||
import { getOptionImpactSummary } from '../hooks/combatStoryUtils';
|
||||
import type { BattleRewardUi, QuestFlowUi } from '../hooks/useStoryGeneration';
|
||||
import type {
|
||||
CampEvent,
|
||||
ChapterState,
|
||||
Character,
|
||||
InventoryItem,
|
||||
JourneyBeat,
|
||||
NpcBattleMode,
|
||||
QuestLogEntry,
|
||||
SetpieceDirective,
|
||||
StoryMoment,
|
||||
StoryOption,
|
||||
WorldType,
|
||||
@@ -89,6 +93,11 @@ interface AdventurePanelProps {
|
||||
musicVolume: number;
|
||||
onMusicVolumeChange: (value: number) => void;
|
||||
onSaveAndExit: () => void;
|
||||
chapterState?: ChapterState | null;
|
||||
journeyBeat?: JourneyBeat | null;
|
||||
recentChronicleSummary?: string | null;
|
||||
currentCampEvent?: CampEvent | null;
|
||||
setpieceDirective?: SetpieceDirective | null;
|
||||
}
|
||||
|
||||
const AdventurePanelOverlays = lazy(async () => {
|
||||
@@ -591,6 +600,11 @@ export function AdventurePanel({
|
||||
musicVolume,
|
||||
onMusicVolumeChange,
|
||||
onSaveAndExit,
|
||||
chapterState = null,
|
||||
journeyBeat = null,
|
||||
recentChronicleSummary = null,
|
||||
currentCampEvent = null,
|
||||
setpieceDirective = null,
|
||||
}: AdventurePanelProps) {
|
||||
const isDialogueStory = currentStory.displayMode === 'dialogue';
|
||||
const dialogueTurns = currentStory.dialogue ?? [];
|
||||
@@ -601,6 +615,7 @@ export function AdventurePanel({
|
||||
currentStory.deferredOptions?.length,
|
||||
);
|
||||
const saveAndExitDisabled = isLoading || isStoryStreaming;
|
||||
const [isChapterPanelOpen, setIsChapterPanelOpen] = useState(false);
|
||||
const [isQuestPanelOpen, setIsQuestPanelOpen] = useState(false);
|
||||
const [isSettingsPanelOpen, setIsSettingsPanelOpen] = useState(false);
|
||||
const [isStatsPanelOpen, setIsStatsPanelOpen] = useState(false);
|
||||
@@ -798,6 +813,7 @@ export function AdventurePanel({
|
||||
[statistics],
|
||||
);
|
||||
const shouldMountAdventureOverlays =
|
||||
isChapterPanelOpen ||
|
||||
isSettingsPanelOpen ||
|
||||
isStatsPanelOpen ||
|
||||
isQuestPanelOpen ||
|
||||
@@ -838,9 +854,23 @@ export function AdventurePanel({
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setIsQuestPanelOpen(true)}
|
||||
onClick={() => setIsChapterPanelOpen(true)}
|
||||
className="fixed right-0 z-[26] flex min-w-[3.1rem] flex-col items-center gap-1 rounded-l-xl border border-r-0 border-white/10 bg-black/78 pl-2 pr-1.5 py-2 text-[10px] text-zinc-200 shadow-[0_8px_18px_rgba(0,0,0,0.35)] backdrop-blur-md transition hover:text-white"
|
||||
style={{ top: 'calc(env(safe-area-inset-top, 0px) + 7vh)' }}
|
||||
>
|
||||
<ScrollText className="h-4 w-4" />
|
||||
<span className="leading-none">章节</span>
|
||||
{chapterState?.title ? (
|
||||
<span className="max-w-[3.6rem] truncate text-[9px] text-zinc-400">
|
||||
{chapterState.title}
|
||||
</span>
|
||||
) : null}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setIsQuestPanelOpen(true)}
|
||||
className="fixed right-0 z-[26] flex min-w-[3.1rem] flex-col items-center gap-1 rounded-l-xl border border-r-0 border-white/10 bg-black/78 pl-2 pr-1.5 py-2 text-[10px] text-zinc-200 shadow-[0_8px_18px_rgba(0,0,0,0.35)] backdrop-blur-md transition hover:text-white"
|
||||
style={{ top: 'calc(env(safe-area-inset-top, 0px) + 14.5vh)' }}
|
||||
>
|
||||
{hasCompletedQuest && (
|
||||
<span
|
||||
@@ -1053,12 +1083,19 @@ export function AdventurePanel({
|
||||
onMusicVolumeChange={onMusicVolumeChange}
|
||||
onSaveAndExit={onSaveAndExit}
|
||||
saveAndExitDisabled={saveAndExitDisabled}
|
||||
isChapterPanelOpen={isChapterPanelOpen}
|
||||
setIsChapterPanelOpen={setIsChapterPanelOpen}
|
||||
isQuestPanelOpen={isQuestPanelOpen}
|
||||
setIsQuestPanelOpen={setIsQuestPanelOpen}
|
||||
isSettingsPanelOpen={isSettingsPanelOpen}
|
||||
setIsSettingsPanelOpen={setIsSettingsPanelOpen}
|
||||
isStatsPanelOpen={isStatsPanelOpen}
|
||||
setIsStatsPanelOpen={setIsStatsPanelOpen}
|
||||
chapterState={chapterState}
|
||||
journeyBeat={journeyBeat}
|
||||
recentChronicleSummary={recentChronicleSummary}
|
||||
currentCampEvent={currentCampEvent}
|
||||
setpieceDirective={setpieceDirective}
|
||||
selectedQuest={selectedQuest}
|
||||
setSelectedQuestId={setSelectedQuestId}
|
||||
completionNoticeQuest={completionNoticeQuest}
|
||||
|
||||
Reference in New Issue
Block a user