LifePlay-Revival/Docs/Migration/etat/ST/STG/STG-M1e-IMPL.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

5 KiB

Fiche STG-M1e-IMPL — Niveau N3 — Modèle prévu claude-opus-5-5 | utilisé claude-opus-5-5 — Agent orchestrateur STG (session principale) — Skills lp-lot, sk-change-safety

STG-M1e-IMPL : témoin des touches de marche (2026-10-14)

GO de Big Boss du 2026-10-14 : M1e (STG-COMMUN6-DIAG.md § 5), journal seulement. Sans UE ni compilation ; VAL statique par un agent distinct ; la mesure entre dans le build suivant. Lot STG, registre STG-TACHES.md.

1. Écart à la proposition du DIAG

Le DIAG plaçait le témoin dans le préprocesseur de LPKeyboardSubsystem. Celui-ci n'est enregistré que pendant que le panneau Clavier est ouvert (OpenKeyboardMenu l. 637, TakeEmbeddedPage l. 618), et il consomme alors toutes les touches. Il ne voit donc rien en jeu. Le témoin est un préprocesseur propre à DirectControl, enregistré à Initialize et retiré à Deinitialize. LPKeyboardSubsystem n'est pas modifié. Le périmètre reste dans le GO : un seul des deux fichiers nommés, et le journal seulement.

2. Instantané

Snapshot.ps1 -Lot STG-M1e. Les quatre fichiers ont été sauvegardés (D:\Game\LifePlay_Backup_5.5\STG-M1e\manifest.csv) :

Fichier MD5 avant
LPDirectControlSubsystem.cpp BAAA3982583B70A56602CBFE95BF4FA4
LPDirectControlSubsystem.h 77AE7007C77403F05C6697771029CC8C
LPKeyboardSubsystem.cpp / .h (non modifiés) 5D60D3F8FFE721698820FE68E55F938C / EED95E9860B26C5A7327CE4E3F90D8C8

3. Changements (STG-M1e.diff, contre l'instantané)

LPDirectControlSubsystem.cpp (CRLF conservé) :

  • include Framework/Application/IInputProcessor.h ;

  • MenuOnScreen (bool) devient MenuReason (FString), avec les mêmes tests dans le même ordre. Valeurs renvoyées :

    • clavier : panneau Clavier ;
    • nom de la classe du menu affiché (liste MenuClasses inchangée) ;
    • focus <type> : saisie de texte ;
    • vide : rien ne bloque.

    Tick en tire bMenuBlocks = !MenuWhy.IsEmpty(), toujours toutes les 0,25 s. Le comportement de la marche est inchangé.

  • IsMoveKey, SlateMoveKeys et FMoveKeyWitness (IInputProcessor) : chaque appui et chaque relâchement d'une touche des axes MoveForward / MoveRight est noté. Le témoin renvoie toujours false et ne consomme jamais l'évènement.

  • Initialize enregistre le témoin (si Slate est initialisé) et Deinitialize le retire.

  • WitnessMoveKeys, appelé à chaque tick :

    • une ligne M1e : marche coupee par le menu <cause> au début d'un blocage par menu, et une ligne M1e : marche rendue (fin du blocage par <cause>) à la fin ;
    • tant qu'une touche de marche est tenue, une ligne par seconde au plus, au format : M1e : touche <K> vue par Slate ; PlayerInput=<0|1> ; marche <ouverte | coupee (menu X) | coupee (SexOn)> ; focus <type> ; entree PC=<0|1> move ignore=<0|1> viewport ignore=<0|1> ; vue <acteur> ;
    • si la fenêtre du jeu perd l'activité, la liste du témoin est vidée (un relâchement perdu ne laisse pas de touche fantôme).
  • le commentaire de ScenePlaying (l. 459) cite MenuReason au lieu de MenuOnScreen.

LPDirectControlSubsystem.h : la déclaration WitnessMoveKeys, et les membres MoveWitness, MenuWhy, LoggedMenuWhy et MoveLogDelay.

4. Lecture attendue à l'essai (cas du DIAG)

Ligne Lecture
vue par Slate ; PlayerInput=0 ; marche ouverte H2 : la touche se perd entre Slate et le contrôleur → C6-a
PlayerInput=1 ; marche ouverte, sans « le joueur quitte » anomalie dans Walk (non attendue)
marche coupee (menu Scene_C) alors qu'aucune boîte n'est visible (capture) boîte invisible → C6-b
aucune ligne M1e : touche pendant la tentative la touche n'atteint même pas Slate (fenêtre, clavier) ou H1

5. MD5 après

Fichier MD5
LPDirectControlSubsystem.cpp AD60A24FB3E3075299C1F4EC5F087011
LPDirectControlSubsystem.h 979AE0ADA261655CBBE9AEFD6969E833

Non compilé (consigne du GO) : la compilation relève du prochain build commun.

6. Retour arrière (proposé, jamais lancé sans accord)

Snapshot.ps1 -Lot STG-M1e-retour -Path … puis Restore.ps1 -Lot STG-M1e -Only Source\LifePlay\LPDirectControlSubsystem.cpp (et .h). Ces fichiers reprennent alors BAAA3982… / 77AE7007….

7. Ce qui n'a pas été fait

  • Compilation et essai : au prochain build commun, sur ordre de Big Boss.
  • LPKeyboardSubsystem : non modifié (§ 1).
  • C6-a, C6-b : décidés après la mesure.

8. Points à confirmer

  • Compilation : la VAL statique (STG-M1e-VAL.md) n'a relevé aucune erreur probable sur les en-têtes UE 5.8.
  • En jeu : vérifier qu'aucune ligne M1e n'apparaît sans touche tenue, et que le menu Clavier ou une saisie de texte n'en donnent pas de fausse.

9. Fichiers à commiter

Source/LifePlay/LPDirectControlSubsystem.cpp, Source/LifePlay/LPDirectControlSubsystem.h, Docs/Migration/etat/ST/STG/STG-M1e-IMPL.md, Docs/Migration/etat/ST/STG/STG-M1e.diff.

Tours : 8