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
CursoretEquipMenu, création / réutilisation de la case (UVerticalBoxnomméeLPBonusRewardBox), ajout d'une ligneUTextBlockpar récompense, style, minuterie de 20 s par ligne (FTimerManagerdu monde, ouFTSTicker: justifier ; poignées gardées et nettoyées), retrait en fin de scène, hauteur 500 (USizeBoxparent ? sinonSetDesiredSizeInViewport/ 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) ;
UMGdoit ê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 avecNewObject/WidgetTree->ConstructWidgetsur le bon outer ; pas d'accès après destruction (IsValid) ; le crochetecriture-gardienrefuse 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 niC:\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 statusavant / 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