25 KiB
Fiche MAPDL1-E1 — Niveau N3 — Modèle prévu sonnet (agent lp-impl ; escalade lp-impl-max) | utilisé claude-sonnet-5-5 — Agent lp-impl — Skills sk-protocol, ue-cpp-build, lp-build, lp-ue-compat (préchargés) ; lp-city (invoqué en fin de travail) ; lp-lot de la fiche non chargé
MAPDL1-E1-IMPL : états des villes et menu, C1 à C5 de SPEC-05 v3, en C++ (2026-10-22)
Hors gabarit : le gabarit IMPL (sections 1 à 6) est suivi dans l'ordre. Les éléments que la fiche § 4 ajoute (MD5, choix, sorties des contrôles § 3, compte rendu) sont dans les sections 1 à 5 et dans ## Constats.
Déroulé : décision de l'utilisateur citée par la fiche (SPEC-05 v3 approuvée). Hors moteur : aucun build, commandlet, éditeur, commit, rien sous Mods\, aucun Blueprint. Pendant la lecture des références, la session MAPDL1 a ordonné de ne rien écrire dans l'arbre (cuisson de la copie en cours), puis a donné le feu vert. Établi : rien n'avait été écrit avant cet ordre (git status --short des fichiers du § 1 vide au 15:55, ls : fichiers neufs absents) ; le dossier E1-prepa\ n'a pas été utilisé ; les écritures de l'arbre ont toutes eu lieu après le feu vert.
1. Fichiers modifiés (chemins, lignes, MD5 avant / après)
MD5 « avant » = manifeste de l'instantané du 15:56 (Get-FileHash -Algorithm MD5). « Après » relevé à la fin.
Fichier (copie D:\Game\LifePlay-master 5.8) |
État | Lignes | MD5 avant | MD5 après |
|---|---|---|---|---|
Plugins/ModdingExtra/Source/ModdingExtra/Public/ModdingExtraBPLibrary.h |
M | +5 (l. 52-56, hors de la classe) | 5933990B42C62A02AC59B2A18342E69A | 01132482CCDB59F3C3DE3256F3EE905F |
Plugins/ModdingExtra/Source/ModdingExtra/Private/ModdingExtraBPLibrary.cpp |
M | +19 −2 (l. 31-38 filtre, l. 166-167 ExtRecu, l. 235-240 appel) |
1F93601C71D126F173FE30636AEC0660 | BFADF97CDC90FE168D22FDEDFE2856D0 |
Source/LifePlay/LifePlay.Build.cs |
M | +4 (l. 43-46) | BC37B92F3496B2A3E2BB9B3BBCD74B40 | 29A02ED098581BC186E679A1C461ABE8 |
Config/DefaultGame.ini |
M | +1 (l. 75, section [/Script/UnrealEd.ProjectPackagingSettings], après la l. 74) |
8D7F4BDF45E4F36620CCFE043B380C66 | FBB022145B5C1AC7DB22A13C06F1913A |
Source/LifePlay/LPCityMapsSubsystem.h |
A | 160 | absent | 8D48BB187947025902FF1EC266C94256 |
Source/LifePlay/LPCityMapsSubsystem.cpp |
A | 842 | absent | 79C7BBAF4FD72DA869A7AD0849D922F9 |
Content/Data/LPCityMaps.json |
A | 15 | absent | 308B46C40A43BC4180B66E46A07018DE |
Tools/IndexCartes.ps1 |
A (hors git, .gitignore:91 /Tools/) |
194 | absent | 30D9DFADB328AA71CCCE4610DEE6EDBF |
Fichiers de ville de STM1 non commités (LPCityWaterSubsystem.*, LPCityWaterMask.h, LPCityNamesSubsystem.*, LPCityHouses.h, LPCityLandmarks.h, LPAssetRegistryHelpers.*) : 9 empreintes relevées avant et après, identiques (sortie collée dans ## Constats).
Diff résumé :
- ModdingExtra : alias
FModdingExtraFileListFilteretMODDINGEXTRA_API void ModdingExtraSetFileListFilter(...)(.h:55-56) ; variablestatic FModdingExtraFileListFilter GLPFileListFilteret définition (.cpp:33-38) ; copieExtRecudeExtavant sa transformation en*.uasset(.cpp:167) ; appelGLPFileListFilter(RootFolderFullPath, ExtRecu, Files)juste avantreturn true;(.cpp:236-239). Le plugin ne dépend toujours pas du jeu. - Build.cs :
"ModdingExtra"et"Json"en dépendances privées, avec le commentaire « Lot MAPDL1 (SPEC-05) ». - DefaultGame.ini :
+DirectoriesToAlwaysStageAsUFS=(Path="Data"), pour livrerContent/Data/LPCityMaps.jsondans le pak. ULPCityMapsSubsystem(C1 à C4) : index (Saved puis Content/Data), étatInstalled/Downloadable/Unavailablemis en cache, filtre de la listeHeavy/StreetMap, ticker de 0 s pour le menu (tri stable en trois groupes, textes, couleurs, bouton grisé, relais de clicULPCityRowClick), bandeau de 10 s surOnCityMapResolved.LPCityMaps.json: format 2,base,licences(osmetlifeplay_ancienne, titre = texte deMAPDL1-SPEC-05-v2.md§ 4, identique au caractère près, comparaison sensible à la casse : 333 / 333 caractères,True),villes: []. UTF-8 sans BOM, LF.IndexCartes.ps1(C5) : voir § 2 pour les choix ; ASCII, LF, 0 erreur de syntaxe.
2. Écarts à la SPEC (obligatoire) et choix là où la fiche laisse une latitude
Écart :
- E-1. Le ticker du menu est un
FTSTickerde 0 s, comme la fiche § 2.3 le prescrit. La SPEC v1 (C3) etlp-city§ 3 (R12-14) disentFWorldDelegates::OnWorldPostActorTick. Estimé (non lu dans le moteur) : le ticker du cœur passe avant les acteurs ; si le Blueprint réécritInstalledTextaprès notre passage dans la même image, une image peut montrer le texte d'origine. Suivi : la fiche. Repli si l'essai en jeu (E4) montre un clignotement : poser le même corps dansOnWorldPostActorTick(modèle :LPCityWaterSubsystem). Non mesuré.
Choix (latitude, tous dans les fichiers de § 1) :
- C-1. La recherche de
CityScrollBoxparTObjectIteratorn'a pas lieu à chaque image : toutes les 0,1 s sans liste connue, toutes les 0,5 s avec une liste connue (pour détecter une instance plus récente). La liste connue est revalidée à chaque image (mêmes conditions que la fiche : nomCityScrollBox, objet extérieur de classeCityMenu_C,IsVisible(),GetCachedWidget().IsValid(), plus même instance de jeu). Raison : le parcours de tous lesUScrollBoxà chaque image tournerait toute la partie, menu fermé. - C-2. Plusieurs
CityMenu_Cvivants : celui qui est au viewport (IsInViewport()) l'emporte, puis la liste déjà suivie. - C-3. Liens non HTTPS écartés à la lecture de l'index (SPEC v3 § 2, « HTTPS seulement ») : « au moins une URL » de la fiche s'entend donc « au moins une URL HTTPS ».
pagenon HTTPS est vidée. - C-4. Versions : composante absente =
0, comparaison textuelle insensible à la casse quand l'une des composantes n'est pas un nombre ; bornejeu_minoujeu_maxvide = pas de limite de ce côté. - C-5. « Mo » = 1 048 576 octets, arrondi supérieur.
octets= 0 donne « Download (0 MB) » (le texte reste dans les deux autorisés du § 2.3). - C-6. Plusieurs entrées pour une même ville : la première éligible dans l'ordre du fichier.
- C-7. Index présent mais
baseabsente ou vide :CentralLondonet00BathCC. Index présent mais illisible : pas de repli sur le second fichier (la fiche dit « le premier fichier présent »), avertissement, aucune ville téléchargeable. - C-8. Nom de ville d'une ligne : champ
StreetMapName*lu enFNameProperty; repliFStrPropertysi le champ est une chaîne (non demandé, sans effet si c'est un nom). - C-9. Ligne
City_Cdont la ville est illisible (valeur vide ou par défaut…/) : rangée avec les installées, non décorée. - C-10. Tri sauté (pas de
ClearChildren) quand l'ordre est déjà le bon. - C-11. Le filtre de ModdingExtra n'est retiré par
Deinitializeque s'il a été posé par cette instance (en PIE, plusieurs instances de jeu). - C-12. Chemins de l'index passés tels que le moteur les donne (
ProjectSavedDir,ProjectContentDir), sansConvertRelativePathToFull, pour que le pak retrouve le fichier. - C-13.
IndexCartes.ps1:baseetlicencessont reprises deContent\Data\LPCityMaps.json(le texte de licence n'existe qu'à un endroit) ;sha256en minuscules ;-Toutesécarte, avec un message, un pack dont le CREDITS n'a pas de ligne- file … SHA-256 …(Paris : pas une ancienne carte, CREDITS d'une autre forme) ; avec-Villes Paris, c'est une erreur (code 2) ;VersionNamedu.upluginsource différent de la version de l'archive : code 2 ;source= la ligne du CREDITS sans le- filedu début ;-Villeset-Toutesexclusifs, validation de-Hebergeurà la main (code 2 et non l'erreur de liaison deValidateSet).
- C-14. Espaces de fin : deux lignes du
.cppde ModdingExtra qui portaient des espaces en fin (la ligne vide avant// FPaths::NormalizeDirectoryNameetreturn true;) sont normalisées par le remplacement. Aucun autre octet de ce fichier ne change (git diff --stat: 19 insertions, 2 suppressions). - C-15. Trois commentaires du
.cppcontiennent le signe « § » (non ASCII, commeLPModInfoSubsystem.h) ; rien d'autre n'est hors ASCII dans le.het le.cpp(grep : 3 lignes).
3. Instantané
- Lot
MAPDL1-E1, un chemin par appel (Tools\Snapshot.ps1 -Lot MAPDL1-E1 -Path <chemin>, 8 appels, code 0), manifeste :D:\Game\LifePlay_Backup_5.5\MAPDL1-E1\manifest.csv. - 4 fichiers existants sauvegardés (MD5 du § 1) ; 4 fichiers neufs notés absents (
Existed=False) :LPCityMapsSubsystem.h,.cpp,Content\Data\LPCityMaps.json,Tools\IndexCartes.ps1. - Pris à 15:56:38-47, avant toute écriture dans l'arbre. Retour arrière :
Tools\Restore.ps1 -Lot MAPDL1-E1, seulement proposé.
4. Ce qui n'a pas été fait
- Aucun build, commandlet, éditeur ni essai en jeu (étape E2 et suivantes). Rien n'est compilé : tout ce qui suit est « écrit, non compilé ».
- C6 (fenêtre de téléchargement, HTTP, SHA-256, libzip, pose) : étape E5. Le clic d'une ligne téléchargeable ouvre le navigateur.
- Pas de
Saved/LPCityMaps.jsond'essai posé (la fiche renvoie àMAPDL1-ESSAI-FJF4) ;Content/Data/LPCityMaps.jsonlivré avecvilles: []. - Pas de ligne ajoutée à
Tools\LISEZMOI.md(hors du § 1). Proposition de ligne d'index :| IndexCartes.ps1 | Écrit l'index LPCityMaps.json (format 2) des cartes de villes téléchargeables depuis les archives lpm_city_* de la publication et les sources des packs ; hébergeur en paramètre (Forgejo, GitHub, modèle d'URL), aucun réseau |.\Tools\IndexCartes.ps1 (-Villes A,B | -Toutes) -Hebergeur Forgejo -Owner o -Repo r -Tag t [-Miroir "https://…/{zip}"] [-Sortie f [-Livre]] [-ABlanc](lot MAPDL1) |. À reporter par l'orchestrateur avec une entrée CHG (Tools\est local, non suivi). Tools\FicheStats.pynon relancé.
5. Points à confirmer en VAL / à la compilation (E2), un par ligne
- V-1 (E2) UHT accepte, dans
ModdingExtraBPLibrary.h, un aliasusing … = TFunction<…>et une fonction libreMODDINGEXTRA_APIaprès la classe. - V-2 (E2) Édition de liens :
LifePlay(dépendance privée) appelleModdingExtraSetFileListFilterexportée parModdingExtra; l'en-têteModdingExtraBPLibrary.h(avec son.generated.h) est trouvé depuisLifePlay. Le module aLoadingPhase: PreLoadingScreen. - V-3 (E2) Compilation de
LPCityMapsSubsystem.cpp: surtoutSNew(SOverlay).Visibility(…) + SOverlay::Slot()…,SBox::Padding(FMargin),TSet<TWeakObjectPtr<UObject>>::Contains,AddUniqueDynamicsurUButton::OnClicked,CastField<…>sur unconst FProperty*,ContainerPtrToValuePtr<void>sur unconst UUserWidget*, boucle surFJsonObject::Values(const auto&, cléUE::FSharedString). - V-4 (E2) 0 avertissement nouveau (aucun membre déprécié utilisé :
UScrollBoxSlotpar accesseurs) ; collisions d'unity build (tous les noms du.cppsont dansLPCityMapsImpl). - V-5 (jeu) Journal au premier menu :
[LPCity] CARTES index …,ETAT <V>pour chaque ville vue (de l'ordre de 280 lignes),LISTE Heavy/StreetMap : <n> entrees, <m> retirees,MENU tri : …. - V-6 (jeu) Le Blueprint
CityrelanceConstructquand une ligne est retirée puis remise (ClearChildren+AddChild) : textes, couleurs et boutons doivent se rétablir ; pas de clignotement (cf. E-1). - V-7 (jeu) Le champ
StreetMapName*de la structureCityest lisible (type, suffixe) ; variablesCity,InstalledText,CityButtontrouvées sur les lignesCity_C. - V-8 (jeu) Tokyo (pack monté) reste « Installed » en vert et se charge ; une ville de gabarit apparaît « Not available », grisée, en bas ; une ville de l'index d'essai apparaît « Download (xx MB) » en bleu, au milieu.
- V-9 (jeu) Le clic sur une ligne téléchargeable n'appelle pas
MoveCityet ouvre le navigateur ; journal[LPCity] CLIC <V> : navigateur <url>. - V-10 (jeu) Bandeau : texte, 10 s, une fois par ville, au-dessus de la fenêtre des mods (Z 1100 contre 1000), sans bloquer la souris.
- V-11 (cuisson)
Content/Data/LPCityMaps.jsonest dans le pak (DirectoriesToAlwaysStageAsUFS) etIFileManager::FileExists/LoadFileToStringle lisent en Shipping. - V-12 (jeu) Moment du premier appel de
ResolveCityPath: il met en cache un résultat négatif ; l'état n'est calculé qu'à l'ouverture du menu (dossierHeavy/StreetMap), après le montage des packs. À confirmer qu'aucun autre appelant deGetAllFilesFromFolder("Heavy/StreetMap")ne le déclenche plus tôt (E0 : un seul Blueprint porte ce littéral). - V-13 (dépôt) Dépendance de commit :
OnCityMapResolvedetResolveCityPathsont dansLPAssetRegistryHelpers.*, encore enM(STM1, non commité). Le commit de ce lot ne se compile pas seul : ordre STM1 d'abord, ou ensemble, décision du gardien.
6. Fichiers à commiter
Dépôt du jeu (D:\Game\LifePlay-master 5.8, branche ue5.8) ; aucun agent ne commite, le gardien le fait sur ticket :
- M
Config/DefaultGame.ini - M
Plugins/ModdingExtra/Source/ModdingExtra/Private/ModdingExtraBPLibrary.cpp - M
Plugins/ModdingExtra/Source/ModdingExtra/Public/ModdingExtraBPLibrary.h - M
Source/LifePlay/LifePlay.Build.cs - A
Source/LifePlay/LPCityMapsSubsystem.cpp - A
Source/LifePlay/LPCityMapsSubsystem.h - A
Content/Data/LPCityMaps.json - A
Docs/Migration/etat/REL/MAPDL1/MAPDL1-E1-IMPL.md
Hors git : Tools/IndexCartes.ps1 (ignoré, .gitignore:91, instantané + CHG + ligne d'index remplacent le commit) ; instantané D:\Game\LifePlay_Backup_5.5\MAPDL1-E1\.
Tours : 47 / 60 (décompte de l'agent ; FicheStats non relancé)
Constats
Sorties des contrôles du § 3 de la fiche (collées)
git diff --statdes fichiers M ;git status --shortdes fichiers du § 1 :
Config/DefaultGame.ini | 1 +
.../ModdingExtra/Private/ModdingExtraBPLibrary.cpp | 21 +++++++++++++++++++--
.../ModdingExtra/Public/ModdingExtraBPLibrary.h | 5 +++++
Source/LifePlay/LifePlay.Build.cs | 4 ++++
4 files changed, 29 insertions(+), 2 deletions(-)
M Config/DefaultGame.ini
M Plugins/ModdingExtra/Source/ModdingExtra/Private/ModdingExtraBPLibrary.cpp
M Plugins/ModdingExtra/Source/ModdingExtra/Public/ModdingExtraBPLibrary.h
M Source/LifePlay/LifePlay.Build.cs
?? Content/Data/
?? Source/LifePlay/LPCityMapsSubsystem.cpp
?? Source/LifePlay/LPCityMapsSubsystem.h
Fichiers A : LPCityMapsSubsystem.h, LPCityMapsSubsystem.cpp, Content/Data/LPCityMaps.json (suivis par git une fois commités) ; Tools/IndexCartes.ps1 ignoré (git check-ignore -v : .gitignore:91:/Tools/).
- MD5 avant / après : tableau du § 1. Fichiers de STM1 (avant = après,
diffdes deux relevés :IDENTIQUE) :
CC146CC6979ED4321413130DCD1B4417 .\Source\LifePlay\LPCityWaterSubsystem.cpp
4A6C67116A76BFFB9D8D04E38A6C9AC5 .\Source\LifePlay\LPCityWaterSubsystem.h
E5027FD7FD2B827831D52E8CE5727A36 .\Source\LifePlay\LPCityWaterMask.h
F378333812EFD901C72F252131F28E47 .\Source\LifePlay\LPCityNamesSubsystem.cpp
1063948323E856860350F143296D8611 .\Source\LifePlay\LPCityNamesSubsystem.h
01CC49D85CA415B11A04D19E8EA23FBB .\Source\LifePlay\LPCityHouses.h
B4FF95AE838F241DBBAB23C7DDAB4D5A .\Source\LifePlay\LPCityLandmarks.h
7B44F5FA7A1CB33EA8E96C9ECC1C7BDE .\Source\LifePlay\LPAssetRegistryHelpers.cpp
8E3B725A609CC8E5E23D2F0CEC309C1A .\Source\LifePlay\LPAssetRegistryHelpers.h
- Fins de ligne,
git ls-files --eol(fichiers M suivis), puis CR / BOM / non-ASCII des fichiers neufs (tr -cd '\r' | wc -c,head -c 3 | od,grep -c -P '[^\x00-\x7F]') :
i/lf w/lf attr/-text Config/DefaultGame.ini
i/lf w/lf attr/-text Plugins/ModdingExtra/Source/ModdingExtra/Private/ModdingExtraBPLibrary.cpp
i/lf w/lf attr/-text Plugins/ModdingExtra/Source/ModdingExtra/Public/ModdingExtraBPLibrary.h
i/lf w/lf attr/-text Source/LifePlay/LifePlay.Build.cs
Source/LifePlay/LPCityMapsSubsystem.h : CR=0 BOM=2f2f20 nonASCII-lignes=0
Source/LifePlay/LPCityMapsSubsystem.cpp : CR=0 BOM=2f2f20 nonASCII-lignes=3
Content/Data/LPCityMaps.json : CR=0 BOM=7b0a20 nonASCII-lignes=1
Tools/IndexCartes.ps1 : CR=0 BOM=3c230a nonASCII-lignes=0
(LPCityMaps.json : 1 ligne non ASCII = le tiret demi-cadratin U+2013 de « 2018–2022 », octets 342 200 223 ; premiers octets { \n = pas de BOM. La console de l'outil affiche ce tiret en - : l'affichage seul est en cause.)
- Analyse syntaxique PowerShell de
IndexCartes.ps1([System.Management.Automation.Language.Parser]::ParseFile) :
erreurs de syntaxe: 0
Test-Jsonsous pwsh surContent/Data/LPCityMaps.json:
Test-Json: True
villes: 0 ; base: CentralLondon,00BathCC
titre identique a v2 par 4 : True (match: True ; longueurs v2/json : 333 / 333)
- Essai à blanc du § 2.7, valeurs fictives (
pwsh -NoProfile -File Tools/IndexCartes.ps1 -Villes Manila -Hebergeur Forgejo -Owner exemple -Repo exemple -Tag cartes-test-1 -ABlanc, code 0 ; octets et SHA-256 identiques àPRODUCTION.csvligne Manila : 22075120 ; 2BA28C4E…B4CF) :
packs retenus : 1 ; ecartes : 0 ; archives : D:\Game\LifePlay_Publication\Mods ; hebergeur : Forgejo
{
"format": 2,
"base": [
"CentralLondon",
"00BathCC"
],
"licences": {
"osm": {
"titre": "Map data (c) OpenStreetMap contributors, ODbL 1.0",
"fichier": "Licenses/OpenStreetMap_Geodata_License.txt"
},
"lifeplay_ancienne": {
"titre": "Original LifePlay city map (2018-2022), inherited from the original LifePlay game's \"NEW Maps\" download folder. Author and licence of the original map asset are not recorded in the source. Map data (c) OpenStreetMap contributors, ODbL 1.0. LifePlay code and assets by Vinfamy are under the MIT licence (Licenses/Vinfamy_License.txt).",
"fichier": "Licenses/Vinfamy_License.txt"
}
},
"villes": [
{
"ville": "Manila",
"pack": "lpm_city_manila",
"version": "1.0.1",
"jeu_min": "2026.10.2.2a",
"jeu_max": "2026.12.99",
"zip": "lpm_city_manila-1.0.1-for-LifePlay-2026.10.2.2a.zip",
"octets": 22075120,
"sha256": "2ba28c4edfb98e7b0265be719e3a42489f0fd79b17268c6ee9f3fbe2dc08b4cf",
"urls": [
"https://forgejo.edujiro5972.fr/exemple/exemple/releases/download/cartes-test-1/lpm_city_manila-1.0.1-for-LifePlay-2026.10.2.2a.zip"
],
"page": "",
"licences": [
"osm",
"lifeplay_ancienne"
],
"source": "Manila.zip, 19 946 453 bytes, SHA-256 cb0fce4be80df76e54b7a6c5a8a448b46739c7944644925f59be9d7c2bf0f308"
}
]
}
a blanc : rien n'a ete ecrit
exit=0
(Le tiret de « 2018–2022 » s'affiche - à la console, voir 3 ; le JSON de l'outil le reprend du fichier livré.)
- Essais complémentaires de
IndexCartes.ps1(non demandés, tous à blanc ou refusés, rien d'écrit) :
-Toutes -Hebergeur Modele -Modele "https://cartes.exemple.org/{zip}" -Miroir "https://github.com/exemple/exemple/releases/download/t/{zip}" -ABlanc:packs retenus : 10 ; ecartes : 1(ligne :lpm_city_paris ecarte : CREDITS sans ligne "- file ... SHA-256 ..." (pas une ancienne carte)) ; villes : Bangalore 1.0.0, Beijing 1.0.1, Manila 1.0.1, MexicoCity 1.0.1, Moscow 1.0.1, Mumbai 1.0.0, NYC 1.0.0, Seoul 1.0.1, Shanghai 1.0.1, Tokyo 1.0.0 ; deux URL par ville (principal puis miroir). Paris a plusieurs dizaines d'archives de versions différentes dans la publication ; les copiesprecedent_*ne correspondent pas au motif et sont ignorées.-Villes Paris …:IndexCartes.ps1 : CREDITS de lpm_city_paris sans ligne '- file ... SHA-256 ...' : …\ModSources\lpm_city_paris\Module\CREDITS.txt, code 2.-Villes Atlantis …:archive absente pour le pack lpm_city_atlantis dans D:\Game\LifePlay_Publication\Mods, code 2.-Sortie Content/Data/LPCityMaps.jsonsans-Livre:ecrire Content\Data\LPCityMaps.json (copie livree avec le jeu) exige -Livre, code 2.- sans argument :
-Villes ou -Toutes attendu. …, code 2.
API moteur UE 5.8 lues dans les sources (D:\Game\Launcher\Engine\UE_5.8\Engine\Source, chemins sous Runtime\ sauf mention)
UMG/Public/Components/PanelWidget.h:28(GetChildrenCount),:36(GetChildAt),:59(AddChild(UWidget*)),:122(virtual ClearChildren).UMG/Public/Components/ScrollBoxSlot.h:46, 49, 55, 58, 60, 63(GetPadding,SetPadding,Get/SetHorizontalAlignment,Get/SetVerticalAlignment; les membresPaddingetc. sontUE_DEPRECATED(5.1), lignes 29-42, donc non utilisés).UMG/Public/Components/Widget.h:264(TObjectPtr<UPanelSlot> Slot),:541/:545(GetIsEnabled/SetIsEnabled),:582(IsVisible),:598/:602(Get/SetRenderOpacity),:857(GetCachedWidget) ;UMG/Private/Components/Widget.cpp:395-404(IsVisiblelit la visibilité du widget Slate en cache).UMG/Public/Components/TextBlock.h:95, 103, 106, 114(GetText,SetText,GetColorAndOpacity,SetColorAndOpacity) ;UMG/Public/Components/Button.h:76(OnClicked) ;SlateCore/Public/Styling/SlateColor.h:134(GetSpecifiedColor).Core/Public/GenericPlatform/GenericPlatformProcess.h:563(LaunchURL(const TCHAR*, const TCHAR*, FString*)),Core/Public/Windows/WindowsPlatformProcess.h:238.Json/Public/Dom/JsonObject.h:237(Valuesà cléFStringType,UE::FSharedStringpar défaut,UE_JSONOBJECT_LEGACY_STRING_KEYSà 0 ::46-47),:414-441(TryGetNumberField, dontint64&à:429),:450(TryGetStringField),:494(TryGetArrayField),:507(TryGetObjectField), tous avecFStringView;Json/Public/Dom/JsonValue.h:74(TryGetString),:89(TryGetObject(const TSharedPtr<FJsonObject>*&) const) ;Json/Public/Serialization/JsonSerializer.h:676(FJsonSerializer) ;Json/Public/Serialization/JsonReader.h:1088(TJsonReaderFactory::Create(const StringType&)) ;Core/Public/Containers/SharedString.h:92(ToView). Même emploi dans le jeu :LPBuildCityLandmarksCommandlet.cpp:118,LPDataCache.cpp:150et:203.CoreUObject/Public/UObject/UnrealType.h:801-816(ContainerPtrToValuePtr),:1663(GetPropertyValue_InContainerdes propriétés de valeur :FName,FString),:2896(GetObjectPropertyValue_InContainer),:3723(FNameProperty),:6387(FStructProperty) ;CoreUObject/Public/UObject/Class.h:663(FindPropertyByName(FName)).Core/Public/Containers/UnrealString.h.inl:1219(FindChar),:1231(FindLastChar) ;Core/Public/Misc/Char.h:240(IsDigit),:261(IsHexDigit) ;Core/Public/Misc/Paths.h:527(GetBaseFilename) ;Core/Public/HAL/FileManager.h:116(FileExists).Engine/Classes/Engine/GameViewportClient.h:258(AddViewportWidgetContent),:265(RemoveViewportWidgetContent) ;SlateCore/Public/Widgets/SOverlay.h:57(arguments deFOverlaySlot) ;Slate/Public/Widgets/Layout/SBox.h:55(SLATE_ATTRIBUTE(FMargin, Padding)) ;SlateCore/Public/Layout/Visibility.h:23(HitTestInvisible).- Livraison du JSON dans le pak :
Developer/DeveloperToolSettings/Classes/Settings/ProjectPackagingSettings.h:586-591(DirectoriesToAlwaysStageAsUFS: « added to the .pak », chemins relatifs àContent) etPrograms/AutomationTool/Scripts/CopyBuildToStagingDirectory.Automation.cs:2052-2054(la clé est lue parStageAdditionalDirectoriesFromConfigavecProjectContentRoot).
Compte rendu (sk-protocol)
[sk-protocol] Skills présents dans mon contexte : sk-protocol, ue-cpp-build, lp-build, lp-ue-compat (préchargés) ; lp-city (invoqué en fin de travail).
- Résultat : réussi hors moteur (C1 à C5 écrits, contrôles du § 3 faits) ; rien n'est compilé, la compilation est l'étape E2.
- Preuves :
MAPDL1-E1-FICHE.md,SPEC-05-v3§ 1,SPEC-05§ 1-2,SPEC-05-v2§ 4,E0-INV,L1-CART-02,L4-CART-01; modèleLPModInfoSubsystem.h/.cpp:308-373;LPAssetRegistryHelpers.h:19,.cpp:37, 101-133; API moteur ci-dessus (fichier:ligne). - Mesuré : sorties collées dans
## Constats(git diff --stat, status,ls-files --eol, MD5 avant / après, analyse syntaxique 0 erreur,Test-Json True, essai à blanc, code 0). - Incertitudes : toute la compilation (V-1 à V-4) ; le comportement dans le Blueprint (V-6 à V-10 : relance de
Constructaprès le tri, ordre d'écriture deInstalledTextface au ticker de 0 s, E-1) ; la livraison du JSON dans le pak (V-11) ; le moment du premierResolveCityPath(V-12). Non mesuré : tout ce qui demande le moteur. - Écarts : E-1 (ticker de 0 s) et choix C-1 à C-15 (§ 2). Fichiers écrits : les 8 du § 1, plus ce livrable
D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\MAPDL1\MAPDL1-E1-IMPL.md. À commiter : liste du § 6 (Tools/IndexCartes.ps1hors git). - Tours : 47 / 60 (décompte de l'agent).
- À verser :
lp-city§ 3 — le menu des villes est décoré parULPCityMapsSubsystem(ticker de 0 s,CityScrollBox/City_C, filtre deGetAllFilesFromFolderdans ModdingExtra) ;lp-commandletsouTools\LISEZMOI.md— ligne d'index deIndexCartes.ps1(§ 4) ;sk-protocol§ 7 —Writed'un fichier contenant un tiret demi-cadratin : les octets sont bons (od -c), la console des outils l'affiche en-, vérifier parod, pas par l'affichage. - Handoff : Suite : lp-builder doit lancer E2 (
Tools\Build.ps1 -Lot MAPDL1-E2, éditeur puis jeu Development, jeton UE) puis rapporter les erreurs sans les corriger ; état : code écrit et non compilé, fichiers de STM1 inchangés, instantanéMAPDL1-E1en place, ordre de commit à fixer avec STM1 (V-13).