LifePlay-Revival/Docs/Migration/etat/sandbox/SB1/SB1-IMPL.md
2026-10-07 15:50:03 +02:00

2.3 KiB

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).