Merge remote-tracking branch 'origin/server_node'
Some checks failed
CI / verify (push) Has been cancelled
Some checks failed
CI / verify (push) Has been cancelled
This commit is contained in:
@@ -9,16 +9,21 @@ import {
|
||||
upsertSavedCustomWorldProfile,
|
||||
} from '../../data/customWorldLibrary';
|
||||
import { resolveCustomWorldCampSceneImage } from '../../data/customWorldVisuals';
|
||||
import { getScenePreset } from '../../data/scenePresets';
|
||||
import {
|
||||
type CustomWorldGenerationProgress,
|
||||
generateCustomWorldProfile,
|
||||
} from '../../services/ai';
|
||||
} from '../../services/aiService';
|
||||
import {
|
||||
buildCustomWorldCreatorIntentDisplayText,
|
||||
buildCustomWorldCreatorIntentGenerationText,
|
||||
createEmptyCustomWorldCreatorIntent,
|
||||
} from '../../services/customWorldCreatorIntent';
|
||||
import { detectCustomWorldThemeMode } from '../../services/customWorldTheme';
|
||||
import {
|
||||
listCustomWorldLibrary,
|
||||
upsertCustomWorldProfile,
|
||||
} from '../../services/storageService';
|
||||
import {
|
||||
type CustomWorldCreatorIntent,
|
||||
type CustomWorldGenerationMode,
|
||||
@@ -141,7 +146,7 @@ export function PreGameSelectionFlow({
|
||||
useState<GameState['customWorldProfile']>(null);
|
||||
const [savedCustomWorldProfiles, setSavedCustomWorldProfiles] = useState<
|
||||
CustomWorldProfile[]
|
||||
>(() => readSavedCustomWorldProfiles());
|
||||
>([]);
|
||||
const [showDeveloperTeamModal, setShowDeveloperTeamModal] = useState(false);
|
||||
const [showCustomWorldModal, setShowCustomWorldModal] = useState(false);
|
||||
const [customWorldCreatorIntent, setCustomWorldCreatorIntent] =
|
||||
@@ -217,6 +222,25 @@ export function PreGameSelectionFlow({
|
||||
},
|
||||
[],
|
||||
);
|
||||
useEffect(() => {
|
||||
let isActive = true;
|
||||
|
||||
void listCustomWorldLibrary()
|
||||
.then((profiles) => {
|
||||
if (!isActive) return;
|
||||
setSavedCustomWorldProfiles(profiles);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.warn(
|
||||
'[PreGameSelectionFlow] failed to load custom world library',
|
||||
error,
|
||||
);
|
||||
});
|
||||
|
||||
return () => {
|
||||
isActive = false;
|
||||
};
|
||||
}, []);
|
||||
|
||||
const leaveCustomWorldResult = () => {
|
||||
setGeneratedCustomWorldProfile(null);
|
||||
@@ -268,18 +292,18 @@ export function PreGameSelectionFlow({
|
||||
setShowCustomWorldModal(true);
|
||||
};
|
||||
|
||||
const saveGeneratedCustomWorld = () => {
|
||||
const saveGeneratedCustomWorld = async () => {
|
||||
if (!generatedCustomWorldProfile) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
setSavedCustomWorldProfiles(
|
||||
upsertSavedCustomWorldProfile(generatedCustomWorldProfile),
|
||||
await upsertCustomWorldProfile(generatedCustomWorldProfile),
|
||||
);
|
||||
} catch (error) {
|
||||
setCustomWorldError(
|
||||
error instanceof Error ? error.message : '本地保存自定义世界失败。',
|
||||
error instanceof Error ? error.message : '保存自定义世界失败。',
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -446,7 +470,7 @@ export function PreGameSelectionFlow({
|
||||
id: generatedCustomWorldProfile.id,
|
||||
}
|
||||
: profile;
|
||||
const savedProfiles = upsertSavedCustomWorldProfile(persistedProfile);
|
||||
const savedProfiles = await upsertCustomWorldProfile(persistedProfile);
|
||||
setSavedCustomWorldProfiles(savedProfiles);
|
||||
setGeneratedCustomWorldProfile(null);
|
||||
setCustomWorldError(null);
|
||||
@@ -760,7 +784,24 @@ export function PreGameSelectionFlow({
|
||||
onContinueExpand={() => {
|
||||
void continueExpandCustomWorld();
|
||||
}}
|
||||
onSave={saveGeneratedCustomWorld}
|
||||
onRegeneratePlayableNpc={(id) => {
|
||||
void regeneratePlayableNpc(id);
|
||||
}}
|
||||
onRegenerateStoryNpc={(id) => {
|
||||
void regenerateStoryNpc(id);
|
||||
}}
|
||||
onRegenerateLandmark={(id) => {
|
||||
void regenerateLandmark(id);
|
||||
}}
|
||||
onRegenerateStoryExpansion={() => {
|
||||
void regenerateStoryExpansion();
|
||||
}}
|
||||
onRegenerateLandmarkNetwork={() => {
|
||||
void regenerateLandmarkNetwork();
|
||||
}}
|
||||
onSave={() => {
|
||||
void saveGeneratedCustomWorld();
|
||||
}}
|
||||
/>
|
||||
</motion.div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user