Improve narrative rules, update temperature defaults, fix session character loading
This commit is contained in:
+21
-2
@@ -10,6 +10,7 @@ import {
|
||||
saveSession as apiSaveSession,
|
||||
deleteSession,
|
||||
getPlayerCharacter,
|
||||
getPlayerCharacters,
|
||||
type SessionListItem,
|
||||
} from "../services/api";
|
||||
import {
|
||||
@@ -96,6 +97,13 @@ export default function GamePage() {
|
||||
if (characterId) {
|
||||
character = await getPlayerCharacter(characterId);
|
||||
setPlayerCharacter(character);
|
||||
} else {
|
||||
// Если персонаж не указан в URL, загружаем первого доступного (или избранного)
|
||||
const characters = await getPlayerCharacters();
|
||||
if (characters.length > 0) {
|
||||
character = characters.find(c => c.isFavorite) || characters[0];
|
||||
setPlayerCharacter(character);
|
||||
}
|
||||
}
|
||||
|
||||
// Если есть сессии, загружаем последнюю (или создаём новую)
|
||||
@@ -107,11 +115,21 @@ export default function GamePage() {
|
||||
console.log("[GamePage] Session data loaded:", sessionData);
|
||||
if (sessionData) {
|
||||
setSession(sessionData);
|
||||
// Загружаем персонажа из сессии если не выбран
|
||||
// Загружаем персонажа: приоритет URL > сессия
|
||||
if (!character && sessionData.playerId) {
|
||||
character = await getPlayerCharacter(sessionData.playerId);
|
||||
setPlayerCharacter(character);
|
||||
}
|
||||
// Если в сессии нет playerId, но персонаж выбран в URL — обновляем сессию
|
||||
if (!sessionData.playerId && character) {
|
||||
const updatedSession = { ...sessionData, playerId: character.id };
|
||||
await apiSaveSession(id, latestSession.id, updatedSession);
|
||||
setSession(updatedSession);
|
||||
}
|
||||
// Если сессия пустая (нет сообщений) — запускаем историю
|
||||
if (sessionData.messages.length === 0 && character) {
|
||||
startStory(normalizedStory, sessionData, character, latestSession.id);
|
||||
}
|
||||
}
|
||||
} else if (characterId) {
|
||||
// Нет сессий и выбран персонаж — создаём новую
|
||||
@@ -608,7 +626,8 @@ export default function GamePage() {
|
||||
// Используем персонажа из текущей сессии или выбранного
|
||||
const characterId = playerCharacter?.id || session?.playerId;
|
||||
if (!characterId) {
|
||||
alert("Не выбран персонаж для игры");
|
||||
// Перенаправляем на страницу выбора персонажа
|
||||
window.location.href = `/story/${id}`;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user