LifePlay-Revival/Docs/Migration/etat/ST/STG/STG-SF5j-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

3.6 KiB

Fiche STG-SF5j — Niveau N2 — Modèle prévu claude-opus-5-5 | utilisé claude-opus-5-5

IMPL de S-F5j (DIAG STG-SF5b-DIAG.md) : étendre S-F5 au joueur posé au bord de la rue par standIdle. GO de Big Boss (2026-10-13), à partir de 5B65B064 / 54696352. Écrit sans compiler, sous instantané ; VAL statique par un agent distinct. Lot STG, registre STG-TACHES.md.

1. Instantané et MD5

Fichier Avant Après
Source/LifePlay/LPOutdoorRoomSubsystem.cpp 5B65B064983D4D66A903CA008DAFFEFD E84D59D6EC29052607DC5D8611566FA0
Source/LifePlay/LPOutdoorRoomSubsystem.h 546963528958AA55F2587E2E924774FE DFC20AD4CE48B3FDA3037F82586B6BDE (commentaire seul)

Instantané D:\Game\LifePlay_Backup_5.5\STG-SF5j\manifest.csv (pwsh, chemins entre guillemets simples, 2 copies). LF et ASCII pur, comme avant. Diff : STG-SF5j.diff (format diff classique, .cpp puis .h).

2. Gestes

  1. Includes : Blueprint/UserWidget.h, GameFramework/InputSettings.h, PlayerController.h, PlayerInput.h, LPKeyboardSubsystem.h, UObject/UObjectIterator.h. Le module dépend déjà de UMG (LifePlay.Build.cs l. 38).
  2. Constantes : PlayerSunkScans = 4 (examens à 0 ; 0,5 ; 1 ; 1,5 s) et PlayerMenuClasses (même liste que MenuClasses de LPDirectControlSubsystem, dont Scene_C).
  3. PlayerBusy(GI, World) rend vrai dans chacun de ces cas :
    • pas de contrôleur, d'entrée ou de réglages (par prudence) ;
    • une touche liée à MoveForward ou MoveRight est enfoncée (numérique) ou non nulle (analogique) ;
    • ULPKeyboardSubsystem::IsMenuOpen() ;
    • un widget de la liste est dans le viewport et visible.
  4. LiftSunkPersons :
    • la garde « jamais le joueur » devient bPlayer ;
    • le joueur passe le filtre de classe ; pour les PNJ, il reste Person_C* ;
    • toutes les autres gardes de S-F5 s'appliquent au joueur comme aux PNJ : extérieur, visible, pas en NoCollision, aucun meuble occupé (OccupyingFnt), hors scène (PersonsUsedThisScene), SexOn faux, enfoncé de plus de 15 cm, vitesse 2D ≤ 1 cm/s, même position à 1 cm près ;
    • 4 examens pour le joueur, au lieu de 3 ;
    • au moment du relevage, si PlayerBusy est vrai, le joueur n'est pas relevé et son examen repart de zéro (il n'est pas gardé dans la mémoire) ;
    • la ligne au journal commence par « joueur » : « Piece exterieure : joueur PlayerCharacter releve de … ; N releve(s) en tout ».

3. Preuves attendues de la VAL (exigence de Big Boss)

Le joueur n'est jamais déplacé dans les cas suivants :

  • pendant qu'il pilote : touche de marche enfoncée (PlayerBusy), et vitesse 2D > 1 ou position changée (examen remis à zéro) ;
  • pendant une action : OccupyingFnt valide (place de meuble), ou déplacement automatique (vitesse > 1) ;
  • pendant une scène : PersonsUsedThisScene, et boîte Scene_C à l'écran (PlayerBusy) ;
  • pendant SexOn : aucun relevage (sortie de la fonction).

4. Essai prévu (prochain build)

  1. Entrer dans la street sans toucher au clavier. Si le joueur est posé au bord, enfoncé, la ligne « joueur … releve de … » apparaît environ 1,5 s après, et ses pieds sont sur le pavé.
  2. Garder une touche ZQSD enfoncée contre le bord : aucun relevage du joueur.
  3. Ouvrir la carte de la ville (CityMenu_C) au bord : aucun relevage tant qu'elle est à l'écran.

5. Fichiers à commiter

Source/LifePlay/LPOutdoorRoomSubsystem.cpp, .h (après build et VAL), Docs/Migration/etat/ST/STG/STG-SF5b-DIAG.md, STG-SF5j-IMPL.md, STG-SF5j.diff, STG-SF5j-VAL.md.