# SB1-IMPL — Registre, interface, enveloppes (SB1-T2) - **Fiche** : SB1-T2 — **Agent** : A-IMPL-H — **Modèle** : prévu opus (M3) | utilisé opus (session principale) - **Dépôt** : addon, branche `lot/SB1-registre` (tag d'entrée `lot-SB1-avant` = `12d6198`) - **Instantané** : `LifePlay_Backup_5.5\SB1-addon` (`LPSandbox.cpp`, `LPSandbox.Build.cs`, `LPPairSandbox.h/.cpp`, `LPPairSandboxMenu.h`) ## Fichiers | Fichier | Nature | |---|---| | `LPSandboxMod.h` | nouveau : types (§ 2 de la SPEC) | | `LPSandboxModRegistry.h/.cpp` | nouveau : registre (§ 3-4), journal `LogLPSandboxMods` | | `LPSandboxModWrappers.h/.cpp` | nouveau : enveloppes `lps_couple` (Pair), `lps_interaction` (Interaction), `lps_asset_integration` (Mesure) | | `LPSandboxSidebar.h` | nouveau : déclaration du widget (implémentation : SB1-T3) | | `LPSandbox.cpp` | `StartupModule` : `RegisterAll()` puis `Scan()` | | `LPSandbox.Build.cs` | `Projects` en dépendance privée | | `LPPairSandbox.h/.cpp` | `OpenModeLabel`, `OpenNeutral`, `OpenInitialMod`, `MakeModContext` ; barre latérale à la place de la liste des modes ; reste du panneau dans `BodyRow` (repliable) ; `EndPlay` → `Registry.EndSession()` | | `LPPairSandboxMenu.h` | `BodyRow` | ## Écarts à la SPEC (décisions de l'implémenteur) 1. `EndSession()` ajouté au registre : à la fin de partie, le mod ouvert est oublié sans appel (la scène est détruite) ; évite un pointeur de personnage pendant entre deux sessions. 2. Scène neutre : `CloseOpen` du registre appelle `Player->OpenNeutral()` (Pair sans liste de clips) ; `OpenModeLabel` remet la liste de clips visible au retour sur Pair (`SelectMode` ne fait rien si le mode est déjà Pair). 3. `Saved/sandbox_mode.txt` : le fichier est remis à `Pair` après lecture (comportement existant) ; `Pair` est désormais traité comme « pas de déclencheur », sinon il masquerait à chaque lancement le mod ouvert mémorisé. Avant SB1, un fichier `Pair` masquait aussi `[Sandbox.Mode]` ; après, `[Sandbox.Mode]` n'est consulté que s'il n'y a ni déclencheur ni mod mémorisé. 4. Doublons : contrôlés par source (sandbox / jeu) ; un module du jeu peut porter le même identifiant qu'un module de la sandbox sans refus. 5. Le registre cherche un prérequis dans la sandbox puis dans le jeu (un module du jeu présent satisfait un prérequis).