import {Dispatch, SetStateAction} from "react"; import {VerbalTimeProps} from "@/lib/types/story"; export function getVerbesStyle(verbalTimeValue: number, level: number): VerbalTimeProps { switch (verbalTimeValue) { case 1: return { actions: level === 1 ? 'Passé composé' : 'Passé simple', descriptions: 'Imparfait', dialogues: 'Passé composé', thoughts: level === 3 ? 'Subjonctif imparfait' : 'Plus-que-parfait', summary: '→ Narrations épurées, style classique', }; case 2: return { actions: 'Passé composé', descriptions: level === 1 ? 'Imparfait' : level === 2 ? 'Imparfait + infinitifs' : 'Conditionnel présent', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Présent + impératif' : 'Impératif', thoughts: level === 1 ? 'Futur proche' : level === 2 ? 'Conditionnel présent' : 'Subjonctif présent', summary: '→ Témoignages, récits autobiographiques', }; case 3: return { actions: level === 1 ? 'Plus-que-parfait' : 'Passé antérieur', descriptions: level === 1 ? 'Imparfait' : level === 2 ? 'Plus-que-parfait' : 'Conditionnel passé', dialogues: level === 3 ? 'Passé antérieur' : 'Passé simple', thoughts: level === 1 ? 'Plus-que-parfait' : 'Subjonctif imparfait', summary: '→ Flashbacks littéraires, tragédies', }; case 4: return { actions: level === 1 ? 'Présent simple' : level === 2 ? 'Présent' : 'Présent + participe présent', descriptions: level === 1 ? 'Participe présent' : level === 2 ? 'Participe présent + infinitifs' : 'Participes présents enchaînés', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Impératif' : 'Impératif + infinitifs', thoughts: level === 1 ? 'Futur proche' : level === 2 ? 'Futur simple' : 'Futur antérieur', summary: '→ Urgence, immersion totale', }; case 5: return { actions: 'Présent', descriptions: level === 1 ? 'Gérondif' : level === 2 ? 'Gérondif + infinitifs' : 'Gérondif + conditionnel', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Conditionnel présent' : 'Infinitif', thoughts: level === 1 ? 'Infinitif' : 'Infinitif passé', summary: '→ Méditations philosophiques', }; case 6: return { actions: level === 1 ? 'Futur simple' : 'Futur antérieur', descriptions: level === 1 ? 'Futur proche' : level === 2 ? 'Futur antérieur' : 'Futur antérieur', dialogues: level === 1 ? 'Futur simple' : 'Futur proche', thoughts: level === 1 ? 'Futur proche' : 'Futur antérieur', summary: '→ Prophéties, plans stratégiques', }; case 7: return { actions: level === 1 ? 'Futur simple' : 'Futur antérieur', descriptions: level === 1 ? 'Futur proche' : level === 2 ? 'Futur simple + conditionnel' : 'Conditionnel passé', dialogues: level === 1 ? 'Futur proche' : level === 2 ? 'Futur antérieur' : 'Futur simple', thoughts: level === 1 ? 'Futur simple' : level === 2 ? 'Conditionnel passé' : 'Futur antérieur', summary: '→ Dystopies, récits post-apocalyptiques', }; case 8: return { actions: 'Imparfait', descriptions: level === 1 ? 'Imparfait' : level === 2 ? 'Conditionnel présent' : 'Conditionnel passé', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Infinitif' : 'Infinitifs', thoughts: level === 1 ? 'Subjonctif présent' : level === 2 ? 'Subjonctif imparfait' : 'Subjonctif imparfait', summary: '→ Rêves, souvenirs déformés', }; case 9: return { actions: 'Conditionnel présent', descriptions: 'Conditionnel passé', dialogues: 'Subjonctif imparfait', thoughts: level === 3 ? 'Subjonctif imparfait' : 'Plus-que-parfait', summary: '→ Uchronies, réalités alternatives', }; case 10: return { actions: level === 1 ? 'Subjonctif présent' : 'Subjonctif imparfait', descriptions: level === 1 ? 'Subjonctif présent' : 'Subjonctif imparfait', dialogues: 'Impératif', thoughts: level === 3 ? 'Subjonctif imparfait' : 'Conditionnel passé', summary: '→ Drames psychologiques, dilemmes', }; case 11: return { actions: 'Passé composé', descriptions: 'Imparfait', dialogues: 'Plus-que-parfait', thoughts: 'Infinitif passé', summary: '→ Regrets, introspection nostalgique', }; case 12: return { actions: 'Présent', descriptions: level === 1 ? 'Passé composé' : 'Passé composé + futur antérieur', dialogues: level === 1 ? 'Futur proche' : 'Futur antérieur', thoughts: 'Participe présent', summary: '→ Crise en cours, compte à rebours', }; case 13: return { actions: level === 1 ? 'Présent simple' : level === 2 ? 'Présent + participe présent' : 'Participes présents enchaînés', descriptions: level === 1 ? 'Imparfait' : level === 2 ? 'Participe présent + adjectifs' : 'Subjonctif présent', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Conditionnel présent' : 'Subjonctif présent', thoughts: level === 1 ? 'Infinitif' : level === 2 ? 'Infinitif passé' : 'Subjonctif imparfait', summary: '→ Émotions intenses, introspections vives (romances, drames psychologiques)', }; case 14: return { actions: 'Présent', descriptions: level === 1 ? 'Gérondif' : level === 2 ? 'Gérondif + infinitifs' : 'Conditionnel présent', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Impératif' : 'Infinitif', thoughts: level === 1 ? 'Infinitif' : level === 2 ? 'Infinitif passé' : 'Subjonctif imparfait', summary: '→ Réflexions profondes, analyse des émotions (nouvelles philosophiques, récits introspectifs)', }; case 15: return { actions: level === 1 ? 'Présent simple' : level === 2 ? 'Présent + passé simple' : 'Présent + passé antérieur', descriptions: level === 1 ? 'Imparfait' : level === 2 ? 'Passé composé' : 'Conditionnel passé', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Passé simple' : 'Futur antérieur', thoughts: level === 1 ? 'Infinitif' : level === 2 ? 'Plus-que-parfait' : 'Subjonctif imparfait', summary: '→ Histoires historiques avec une intensité immédiate (batailles, moments décisifs)', }; case 16: return { actions: level === 1 ? 'Passé composé' : level === 2 ? 'Imparfait + passé simple' : 'Plus-que-parfait', descriptions: level === 1 ? 'Imparfait' : level === 2 ? 'Participe passé' : 'Conditionnel passé', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Imparfait' : 'Subjonctif imparfait', thoughts: level === 1 ? 'Infinitif' : level === 2 ? 'Infinitif passé' : 'Subjonctif présent', summary: '→ Récits introspectifs, auto-analyse (autofictions, récits de croissance personnelle)', }; case 17: return { actions: level === 1 ? 'Futur simple' : level === 2 ? 'Futur antérieur' : 'Conditionnel passé', descriptions: level === 1 ? 'Futur proche' : level === 2 ? 'Futur antérieur' : 'Conditionnel présent', dialogues: level === 1 ? 'Futur simple' : level === 2 ? 'Futur antérieur' : 'Subjonctif présent', thoughts: level === 1 ? 'Infinitif' : level === 2 ? 'Futur antérieur' : 'Conditionnel passé', summary: '→ Prophéties, visions apocalyptiques (récits mystiques, romans de science-fiction)', }; case 18: return { actions: level === 1 ? 'Conditionnel présent' : level === 2 ? 'Conditionnel passé' : 'Subjonctif imparfait', descriptions: level === 1 ? 'Conditionnel présent' : level === 2 ? 'Conditionnel passé' : 'Subjonctif présent', dialogues: level === 1 ? 'Conditionnel présent' : level === 2 ? 'Subjonctif imparfait' : 'Impératif', thoughts: level === 1 ? 'Infinitif' : level === 2 ? 'Infinitif passé' : 'Subjonctif imparfait', summary: '→ Mondes parallèles, uchronies (romans alternatifs, récits de fantasy)', }; case 19: return { actions: level === 1 ? 'Imparfait' : level === 2 ? 'Imparfait + participe présent' : 'Participes présents enchaînés', descriptions: level === 1 ? 'Imparfait' : level === 2 ? 'Participe présent + adjectifs' : 'Subjonctif présent', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Imparfait' : 'Subjonctif imparfait', thoughts: level === 1 ? 'Infinitif' : level === 2 ? 'Infinitif passé' : 'Subjonctif présent', summary: '→ Lyrisme, poésie narrative (récits oniriques, nouvelles littéraires)', }; case 20: return { actions: level === 1 ? 'Présent simple' : level === 2 ? 'Imparfait' : 'Futur simple', descriptions: level === 1 ? 'Imparfait' : level === 2 ? 'Participe présent' : 'Conditionnel présent', dialogues: level === 1 ? 'Présent' : level === 2 ? 'Imparfait' : 'Futur proche', thoughts: level === 1 ? 'Infinitif' : level === 2 ? 'Plus-que-parfait' : 'Subjonctif présent', summary: '→ Immersion totale (récits interactifs, jeux de rôle, romans à choix multiples)', }; default: return { actions: 'Passé simple', descriptions: 'Imparfait', dialogues: 'Passé composé', thoughts: 'Plus-que-parfait', summary: '→ Narrations épurées, style classique', }; } } export function presetStoryType( presetType: string, setTone: Dispatch>, setAtmosphere: Dispatch>, setVerbTense: Dispatch>, setPerson: Dispatch>, setDialogueType: Dispatch>, setIsExplicit: Dispatch>, ): void { switch (presetType) { case '1': setTone('Suspense angoissant, mystère troublant'); setAtmosphere('Tension oppressante, ombres menaçantes'); setVerbTense('3'); setPerson('1'); setDialogueType('3'); setIsExplicit(false); break; case '2': setTone('Brutalité crue, terreur psychologique'); setAtmosphere('Claustrophobie, clair-obscur sinistre'); setVerbTense('10'); setPerson('4'); setDialogueType('4'); setIsExplicit(true); break; case '3': setTone('Magie envoûtante, innocence poétique'); setAtmosphere('Forêt luminescente, brume enchantée'); setVerbTense('19'); setPerson('3'); setDialogueType('1'); setIsExplicit(false); break; case '4': setTone('Froidure technologique, désespoir systémique'); setAtmosphere('Métal rouillé, lumières néon vacillantes'); setVerbTense('7'); setPerson('5'); setDialogueType('3'); setIsExplicit(false); break; case '5': setTone('Passion tourmentée, mélancolie sensuelle'); setAtmosphere('Pluie fine, chambres aux rideaux lourds'); setVerbTense('13'); setPerson('1'); setDialogueType('1'); setIsExplicit(true); break; case '6': setTone('Héroïsme grandiose, dangers exaltants'); setAtmosphere('Vastes paysages, ruines anciennes'); setVerbTense('4'); setPerson('6'); setDialogueType('3'); setIsExplicit(false); break; case '7': setTone('Méditation existentielle, questions sans réponses'); setAtmosphere('Bibliothèque poussiéreuse, nuit silencieuse'); setVerbTense('5'); setPerson('5'); setDialogueType('4'); setIsExplicit(true); break; case '8': setTone('Tension psychologique, suspense mental'); setAtmosphere('Isolation, paranoïa croissante'); setVerbTense('10'); setPerson('4'); setDialogueType('4'); setIsExplicit(true); break; case '9': setTone('Mystère obscur, surnaturel inquiétant'); setAtmosphere('Forêts sombres, créatures cachées'); setVerbTense('3'); setPerson('1'); setDialogueType('3'); setIsExplicit(false); break; case '10': setTone('Amour interdit, passion à travers les âges'); setAtmosphere('Châteaux majestueux, bals somptueux'); setVerbTense('1'); setPerson('3'); setDialogueType('1'); setIsExplicit(true); break; case '11': setTone('Dure réalité, enquête sombre'); setAtmosphere('Rues sombres, ambiance de crime'); setVerbTense('16'); setPerson('5'); setDialogueType('4'); setIsExplicit(true); break; case '12': setTone('Espoir futuriste, société idéale'); setAtmosphere('Villes lumineuses, technologie avancée'); setVerbTense('6'); setPerson('4'); setDialogueType('3'); setIsExplicit(false); break; case '13': setTone('Magie contemporaine, réalisme enchanté'); setAtmosphere('Ville moderne, éléments féeriques'); setVerbTense('4'); setPerson('1'); setDialogueType('1'); setIsExplicit(true); break; case '14': setTone('Conflits émotionnels, relations complexes'); setAtmosphere('Intérieur chaleureux, tensions sous-jacentes'); setVerbTense('13'); setPerson('1'); setDialogueType('1'); setIsExplicit(true); break; case '15': setTone('Exploration audacieuse, dangers marins'); setAtmosphere('Océan infini, navires anciens'); setVerbTense('4'); setPerson('6'); setDialogueType('3'); setIsExplicit(false); break; case '16': setTone('Quête héroïque, magie puissante'); setAtmosphere('Mondes imaginaires, créatures mythiques'); setVerbTense('19'); setPerson('3'); setDialogueType('1'); setIsExplicit(true); break; case '17': setTone('Amour moderne, relations actuelles'); setAtmosphere('Ville animée, cafés cosy'); setVerbTense('13'); setPerson('1'); setDialogueType('1'); setIsExplicit(true); break; case '18': setTone("Intrigue internationale, secrets d'État"); setAtmosphere('Villes étrangères, tensions diplomatiques'); setVerbTense('16'); setPerson('5'); setDialogueType('4'); setIsExplicit(true); break; case '19': setTone('Survie désespérée, monde en ruines'); setAtmosphere('Paysages dévastés, ressources rares'); setVerbTense('7'); setPerson('4'); setDialogueType('3'); setIsExplicit(false); break; case '20': setTone('Leçons de vie, valeurs profondes'); setAtmosphere('Village paisible, nature environnante'); setVerbTense('1'); setPerson('3'); setDialogueType('1'); setIsExplicit(true); break; } } export function getNarrativePerson(value: number, level: number): string { if (level === 1) { switch (value) { case 1: return 'Première personne (Je acteur) - Parfait pour les débuts (ex: Je marchais)'; case 3: return 'Troisième omnisciente - Narration globale (ex: Il marchait)'; default: return 'Première personne'; } } else if (level === 2) { switch (value) { case 1: return 'Première personne (Je acteur)'; case 2: return 'Première personne (Je témoin) - Observateur (ex: Je le regardais marcher)'; case 3: return 'Troisième omnisciente'; case 4: return 'Troisième limitée - Focus sur un personnage (ex: Il marchait, ignorant le danger)'; default: return 'Première personne'; } } else if (level === 3) { switch (value) { case 1: return 'Première personne (Je acteur)'; case 2: return 'Première personne (Je témoin)'; case 3: return 'Troisième omnisciente'; case 4: return 'Troisième limitée'; case 5: return 'Deuxième personne (Tu) - Immersion forte (ex: Tu marches vers la mort)'; case 6: return 'Nous collectif - Voix chorale (ex: Nous marchions, unis par le destin)'; default: return 'Troisième omnisciente'; } } return 'Première personne'; } export function getDialogueType(value: number, level: number): string { if (level === 1) { switch (value) { case 1: return 'Dialogue direct - Paroles exactes (ex: "Je t\'aime !")'; case 2: return 'Dialogue indirect - Résumé par le narrateur (ex: Il dit qu\'il m\'aime)'; default: return 'Dialogue direct'; } } else if (level === 2) { switch (value) { case 1: return 'Dialogue direct'; case 2: return 'Dialogue indirect'; case 3: return 'Dialogue mixte (ex: "Je t\'aime" dit-il, puis explique ses sentiments)'; default: return 'Dialogue direct'; } } else if (level === 3) { switch (value) { case 1: return 'Dialogue direct'; case 2: return 'Dialogue indirect'; case 3: return 'Dialogue mixte'; case 4: return 'Monologue intérieur (ex: *Je ne peux pas le perdre...*)'; default: return 'Dialogue direct'; } } return 'Dialogue direct'; }