LifePlay-Revival/Docs/Migration/etat/ST/STE/fiches/STE-ORG5-I2a.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.1 KiB

Fiche STE-ORG5-I2a — Niveau N3 — Modèle prévu (modèle de l'agent lp-impl) | utilisé <modèle déclaré> — Agent lp-impl — Skills sk-protocol, sk-change-safety, ue-cpp-build (lecture)

1 Objectif : écrire en C++ l'affichage des récompenses ORG5 appliquées selon STE-ORG5-I2-SPEC.md option (a) : à l'exécution, ajouter une case « LPBonusRewardBox » comme dernier enfant du panneau EquipMenu du widget Cursor, une ligne « Bonus : prénom stat ±valeur » (blanc, police 16, contour noir 2 alpha 0,8, marge gauche 10) par récompense appliquée, chaque ligne retirée après 20 s, EquipMenu porté à 500 de haut s'il est plus petit, bDisabled coupe tout — uniquement dans Source\LifePlay\LPBonusRewardSubsystem.h et .cpp — lot STE, registre D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STE\STE-TACHES.md ligne STE-ORG 2 Complexité : a1 b2 c1 d1 e1 f1 = 7 → N3 (aucun) ; barème § 2 : C3 = 1 (SPEC et décisions écrites) ; S = 2 < 3 → pas de scission ; C9a : relu le 2026-10-14 par l'orchestrateur (GO de Big Boss ; I1 PASS-STATIC ; les deux fichiers sont non suivis ??, écrits par ORG5-I1) 2b Agent : lp-impl (modèle surchargé : aucun) — préchargés : ceux de l'agent — à invoquer : sk-change-safety — outils retirés : aucun 3 Contexte : GO de Big Boss (2026-10-14) : C++ dans les deux fichiers seulement, sans UE ni compilation (compilation dans le build COMMUN-8), VAL statique par un agent distinct. SPEC : D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STE\STE-ORG5-I2-SPEC.md (lire en entier, dont « Décisions de l'utilisateur » en fin de fichier : Q-I2-1 lignes seules ; Q-I2-2 minuterie de 20 s par ligne ; Q-I2-3 hauteur 500 si inférieure ; Q-I2-4 bDisabled coupe tout). Code existant : LPBonusRewardSubsystem.h/.cpp (ORG5-I1, STE-ORG5-I1-IMPL.md, STE-ORG5-V1-VAL.md : défauts mineurs D1 WarnOnce qui construit la chaîne pour rien, D2 CurrentTags supposé TArray<FString>). Moteur : D:\Game\Launcher\Engine\UE_5.8\Engine\Source\ (lecture : UserWidget.cpp:1259-1262 GetWidgetFromName, PanelWidget.h, VerticalBox.h, TextBlock.h, SlateFontInfo.h, TimerManager.h). Gardes de Big Boss (obligatoires) : (1) Cursor ou EquipMenu introuvable → aucun plantage, un avertissement unique, la récompense reste appliquée ; (2) aucun ajout en double si EquipMenu est reconstruit (retrouver la case par nom avant d'en créer une ; pointeurs faibles) ; (3) minuteries nettoyées à la sortie de scène (SexOn faux) et dans Deinitialize. Points amont à reprendre : accès à GI.Cursor (propriété Blueprint, par réflexion comme I1 ; type réel non lu : tester UUserWidget) ; EquipMenu est un UPanelWidget (vertical ?) : le vérifier par Cast au lieu de le supposer ; D1 peut être corrigé au passage (tester avant de construire le message) ; D2 : accepter aussi FName / FText dans ReadStrings si c'est court. 4 Entrées et questions :

  • Code : recherche de Cursor et EquipMenu, création / réutilisation de la case (UVerticalBox nommée LPBonusRewardBox), ajout d'une ligne UTextBlock par récompense, style, minuterie de 20 s par ligne (FTimerManager du monde, ou FTSTicker : justifier ; poignées gardées et nettoyées), retrait en fin de scène, hauteur 500 (USizeBox parent ? sinon SetDesiredSizeInViewport / slot : dire la méthode et la preuve moteur), bDisabled.
  • Liste des écarts à la SPEC et des points « à vérifier à la compilation / en jeu ». 5 Pièges : pas de compilation : relire chaque signature UE 5.8 (fichier:ligne) ; UMG doit être dans les dépendances du module (LifePlay.Build.cs) : le vérifier en lecture ; s'il manque, arrêt et compte rendu (Build.cs est un fichier existant, interdit ici) ; widgets créés avec NewObject / WidgetTree->ConstructWidget sur le bon outer ; pas d'accès après destruction (IsValid) ; le crochet ecriture-gardien refuse tout caractère > ou < dans une commande Bash (même dans un motif, ->, 2>&1), tee, python -c, heredocs : au premier refus, arrêt et compte rendu (écrire les fichiers par Write / Edit) ; aucun nom d'utilisateur ni C:\Users\<nom> dans le code ni le livrable. 6 Interdits : aucun autre fichier modifié (ni .Build.cs, ni .ini, ni asset, ni autre source) ; pas d'éditeur, de MCP, de commandlet, de build ni de jeu ; aucun commit (+ sk-protocol § 2). 7 Livrable : les deux fichiers modifiés + D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STE\STE-ORG5-I2a-IMPL.md (changements, gardes de Big Boss et où elles sont tenues, appels moteur et preuves, écarts à la SPEC, points à vérifier à la compilation et en jeu, MD5 des deux fichiers après) + compte rendu sk-protocol § 3 8 Critère d'acceptation : affichage écrit selon les décisions, trois gardes tenues, aucune autre modification (git status avant / après), 0 CR 9 Budget et arrêt : 40 tours, pic ≤ 180 k, ≈ 40 min — tentative 1/4 ; arrêt au premier refus de permission ou du crochet, ou s'il faut modifier un autre fichier ; au budget : livrable partiel + état de reprise