6.7 KiB
6.7 KiB
Fiche MAPDL1-L1 (CART-02) — Niveau N2 — Modèle prévu opus medium | utilisé claude-opus-5-5 — Agent session « Medium · MAPDL1 » (pas de sous-agent) — Skills sk-protocol, lp-city, lp-lot, lp-commandlets, lp-paths
MAPDL1-L1 : arbre de CityMenu et ligne de ville City (lecture hors éditeur, 2026-10-22)
GO de Big Boss (local_d2580e73). Décision de l'utilisateur, citée : « GO pour MAPDL1 avec les valeurs par défaut D7 à D14 : voie (a), commencer par L1, L2 et P1, vague 1 classée par population. »
Méthode : Tools\uasset58.py (events, imports --paquets, strings --motif, locate), en lecture seule et sans éditeur. Aucun jeton UE n'a été pris.
1. Mesuré (extraits)
python -I -X utf8 Tools\uasset58.py events Content\UI\CityMenu.uasset
exports 382 contigus=True noms=571 taille=459239
K2Node_ComponentBoundEvent_0 export#199 delegue=['OnTextChanged'] widget=['SearchAction']
K2Node_ComponentBoundEvent_1 export#200 delegue=['OnCheckStateChanged'] widget=['CheckBoxMoveNPC']
K2Node_ComponentBoundEvent_127 export#201 delegue=['OnClicked'] widget=['ClearButton']
K2Node_ComponentBoundEvent_2 export#202 delegue=['OnValueChanged'] widget=['RacePercent']
K2Node_ComponentBoundEvent_3 export#203 delegue=['OnClicked'] widget=['RaceButton']
K2Node_ComponentBoundEvent_31 export#204 delegue=['OnClicked'] widget=['StayButton']
K2Node_ComponentBoundEvent_34 export#205 delegue=['OnCheckStateChanged'] widget=['CheckboxRandomize']
K2Node_ComponentBoundEvent_4 export#206 delegue=['OnCheckStateChanged'] widget=['CheckBoxClassicMap']
python -I -X utf8 Tools\uasset58.py locate Content\UI\CityMenu.uasset CityScrollBox ...
== CityScrollBox : 5
@397970 export #287 CityScrollBox classe=ScrollBox +109/135
python -I -X utf8 Tools\uasset58.py events Content\UI\City.uasset
K2Node_ComponentBoundEvent_90 export#50 delegue=['OnClicked'] widget=['CityButton']
python -I -X utf8 Tools\uasset58.py imports Content\UI\City.uasset --paquets
/Game/BPs/GI /Game/BPs/StreetMap_Static /Game/Heavy/New2/Sound/ui_click /Game/Structs/City /Game/UI/CityMenu
python -I -X utf8 Tools\uasset58.py locate Content\UI\City.uasset InstalledText CityText CityButton City
== InstalledText : 5 @242508 export #95 InstalledText classe=TextBlock
== CityText : 5 @242009 export #94 CityText classe=TextBlock
== CityButton : 5 @130520 export #1 CityButton classe=Button
== City : 17 (variable de structure City, exports #98 et #99)
python -I -X utf8 Tools\uasset58.py strings Content\UI\City.uasset --min 3 --motif '(instal|download|avail|valid|exist|size)'
CallFunc_CheckIfValidProportion_Valid CheckIfValidProportion Installed InstalledText Not Installed ...
python -I -X utf8 Tools\uasset58.py strings Content\BPs\GI.uasset --min 3 --motif '(cityscroll|City_C|installed|CityMenu)'
CityMenu CityMenu_C CityScrollBox City_C ClearCityMenuWidget CreateCityMenuWidget OpenCityMenu CloseCityMenu MoveCity_Changed ...
2. Ce qui est établi
- Liste :
UI/CityMenuporte unScrollBoxnomméCityScrollBox(export #287). Ses enfants sont des widgetsUI/City(City_C) ;CityMenules caste parAsCity. - Création de la liste : elle est faite par le GI (
CreateCityMenuWidget,ClearCityMenuWidget,OpenCityMenu,CloseCityMenu, qui sont des noms présents dansGI.uasset). Le corps de ces fonctions n'est pas lu ici. - Une ligne (
UI/City) contient :- un bouton
CityButton(événementOnClicked, export #50 ; il appelleMoveCityetLoadCity, noms présents, avec « Loading, Please Wait ... » et « Same City ») ; - un texte
CityText; - un texte
InstalledText; - une variable
Cityde la structure/Game/Structs/City(DisplayName,StreetMapName,StaticMeshName).
- un bouton
- Indicateur déjà présent : les littéraux « Installed » et « Not Installed » et l'appel
CheckIfValidProportionfigurent dansCity. Le jeu d'origine marquait déjà chaque ville installée ou non. Ce qu'il calcule exactement (CheckIfValidProportion, couleurTextColor) n'est pas lu : il faudraitLPDumpFunction -BP=City, avec le jeton UE. Incertain. - Partie chargée :
MoveCity(GetCityByName(Save.City)), comparaison sans tenir compte de la casse avecDisplayName(STM1-CART-02.mdM4, établi). Une ville sans correspondance retombe sur la structure par défaut, puis surCities[0](M3).
3. Conséquences pour L4 (interface)
- Le sous-système C++ trouve l'instance de
CityMenuouverte (commeULPModInfoSubsystemtrouveModManager.ModScrollBox), puis sonCityScrollBox. Pour chaque enfantCity_C, il lit par réflexion la variableCityet son champDisplayName. - Ce qu'il fait ensuite :
- tri : retrait et réinsertion des enfants dans l'ordre installées, puis disponibles, puis sans pack (SPEC-03 § 3) ;
- non choisissable :
CityButton->SetIsEnabled(false); - état :
InstalledText->SetTextavec « Installed », « Download (xx MB) » ou « Not available », et une teinte ; - bouton Download : un
UButtonajouté par C++ dans la ligne (HorizontalBoxà lire) ou, plus sûr, un clic surInstalledTextrelayé à la fenêtre Slate de consentement.
- Point à trancher avant L4, avec le jeton UE, en lecture par commandlet :
LPDumpWidgetTree -BP=City: panneau qui contientInstalledText(pour y loger un bouton) ;LPDumpFunction -BP=City -Fn=Construct -Pins -Exec: ce que l'original met dansInstalledText, et donc ce que notre texte doit remplacer à chaque image (même règle quelp-city§ 3, R12-14 et R12-15 : réglage dansOnPostActorTick, sinon le Blueprint reprend la main).
4. Compte rendu
- Résultat : arbre utile établi :
CityMenucontientCityScrollBox, dont chaque enfant est une ligneCity_C;- une ligne contient
CityButton,CityText,InstalledTextet la variableCity; - un indicateur d'origine « Installed / Not Installed » existe.
- Mesuré : § 1.
- Incertitudes :
- calcul de l'indicateur d'origine ;
- panneau parent d'
InstalledText; - corps de
CreateCityMenuWidget(ordre de remplissage, qui doit être repris à chaque ouverture).
- Écarts : aucun ; ni éditeur ni jeton UE.
- Fichier :
D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\MAPDL1\MAPDL1-L1-CART-02.md(A). - Tours : ≈ 5 (lot L1).
- À verser :
lp-city§ 3 : la ligne de villeUI/Citya déjàInstalledText(« Installed » / « Not Installed »,CheckIfValidProportion) ; la liste estCityMenu.CityScrollBox, remplie parGI.CreateCityMenuWidget. - Suite : les lectures
LPDumpWidgetTree -BP=CityetLPDumpFunction -BP=City -Fn=Constructse font au début de L4, avec le jeton UE.