26 lines
2.3 KiB
Markdown
26 lines
2.3 KiB
Markdown
# 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).
|