Commit Graph

161 Commits

Author SHA1 Message Date
Adrestie 7af9382cfd ForeverUI : minimap de camelot 1.60.1.70450
Camelot a maintenant son propre code de minimap (Skin.lua supprimé) :
- barre de zone en une image ui-hud-minimap-header-button, 152 x 23 à
  TOP (10, 0) ; texte GameFontHighlightSmall 110 x 12 à LEFT (8, -1) ;
- survol et clic de la barre, du calendrier et du suivi : copie de
  l'image en ADD, alpha 0,1 et 0,2 ;
- calendrier 23 x 23 à droite de la barre, image fixe, sans le jour ;
- suivi : bouton 23 x 23 ui-hud-minimap-tracking-button ;
- courrier 32 x 24 sous la barre, icône fixe ;
- horloge à RIGHT (-3, -1) de la barre ; à l'alarme, l'heure clignote et
  la lueur reste cachée ;
- anneau jour/nuit à CENTER (55, 86) du conteneur.
La difficulté d'instance, que camelot supprime, est gardée sous le bout
droit de la barre. Feuille uiminimapc60 de la 70450 versée, ses entrées
refaites. NOTES.md §1.12 à jour.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-18 00:03:42 +02:00
Adrestie 2fd1b024e4 ForeverUI : titres de quête de camelot 1.60.1.70450
- Suivi des objectifs : titre « [niveau(+)] Titre (Type) », comme
  QuestObjectiveTrackerMixin:UpdateSingle avec QuestUtilsOverrides :
  préfixe de niveau toujours posé, « + » pour une élite, puis le type pour
  quatre cas (Élite, Donjon, JcJ, Raid), tirés du questTag de
  GetQuestLogTitle comparé aux textes du client (ELITE,
  CALENDAR_TYPE_DUNGEON, CALENDAR_TYPE_PVP, RAID). Pas de couleur de
  difficulté : la CVar showQuestDifficultyColor n'existe pas en 3.3.5.
- Journal : même étiquette de type pour les quatre cas (l'élite seule
  avant) ; lignes de quête décalées de 4 (titleFrameLeftPadding).
- « Lien dans la discussion » retiré des menus du suivi et du journal
  (camelot ne le garde qu'en mode manette) ; Maj-clic lie toujours la
  quête.
SUIVI_DES_QUETES.md : décision 1 révisée.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:59:16 +02:00
Adrestie f727a7da25 ForeverUI : séparateurs et repère de repos des barres d'état
Comme camelot (StatusTrackingBarContainerMixin:UpdateDividers, inchangé en
70450) : 20 segments, soit 19 séparateurs StatusBarDividerTemplate (3 x 10,
ui-hud-experiencebar-divider) à largeur / 20 x i, sur la barre
d'expérience et sur celle de réputation, au-dessus du remplissage ;
replacés quand la barre prend sa largeur.
Repère de repos (UI-HUD-ExperienceBar-Frame-Pip, 10 x 14) centré au bout
de la partie reposée, tant qu'il reste du repos ; sans infobulle.
NOTES.md §3 à jour.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:48:41 +02:00
Adrestie a7709279b8 ForeverUI : fenêtre de butin de camelot
La fenêtre de butin reprend le LootFrame de camelot : panneau plat
« Objets » de 220 de large et 290 de haut au plus, une carte par
emplacement (fond teinté par la qualité, contour, étiquette de rareté,
bouton d'objet de 37, nom), barre de défilement au-delà, place sous la
souris ou à (16, -116). Le LootFrame du client reste l'hôte, invisible :
événements, liste du butin de maître ancrée au bouton choisi, CloseLoot.
Feuille interface/lootframe/lootframe.blp ajoutée. Animations à venir.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 02:18:38 +02:00
Adrestie ae87393c0c ForeverUI : textes de la fiche de fabrication repliés
Le nom du résultat et les outils débordaient de la fiche (largeur de 800
de la fiche camelot normale) : ils suivent la règle de la fiche réduite de
camelot, 250 de large sur plusieurs lignes, et ce qui suit descend sous eux
quand ils dépassent sa place. Les composants passent au pas de 163 pour que
la deuxième colonne reste dans la fiche de 360. Écart noté dans NOTES.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:42:35 +02:00
Claude afdd314370 ForeverUI : feuille de personnage, lignes des listes, statistiques, ensembles par personnage
Listes de réputation, compétences et statistiques : une ligne qui ne tenait
plus était cachée, mais la boucle continuait, et une ligne plus courte plus
loin (un en-tête après une entrée) prenait sa place, hors d'ordre. Rien
n'est plus placé après la première ligne qui ne tient pas.

Statistiques : la page possédait les douze lignes et les réaffichait toutes
après chaque mise à jour, y compris la sixième que le client cache pour la
catégorie Distance (les chasseurs par défaut), avec le contenu de la
catégorie d'avant. Elle possède désormais leur parent, CharacterAttributesFrame.

Ensembles : le panneau était créé visible, et GearManagerDialog_Update
(ensemble porté depuis une barre, /equipset) pouvait le construire avant
la première ouverture de sa page, par-dessus les statistiques. Il naît
caché, et sa page le connaît même ouverte en combat.

L'ordre d'affichage et le dernier ensemble porté étaient au compte, alors
que les ensembles sont à un personnage : ouvrir la page sur un autre
personnage élaguait l'ordre du premier. Ils sont rangés par personnage, et
le premier usage reprend les anciennes valeurs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:35:58 +00:00
Claude 39fbfc8c10 ForeverUI : barres, la barre de forme reste à l'écran en combat
Les boutons bonus sont ancrés à la glissière, ce qui la rend protégée :
en combat, ses SetPoint étaient bloqués (action bloquée par image). Après
un retrait hors combat elle reposait 45 px plus bas, et un druide prenant
une forme en combat gardait sa barre à moitié sous l'écran tout le combat.
Elle ne bouge plus en combat, attend au repos, y revient avant le
verrouillage, et suit une barre réaffichée pendant son propre retrait.
Durée : BONUSACTIONBAR_SLIDETIME du client (0,15 s).

Familier et postures : le porteur, protégé par les boutons qu'on y ancre,
était masqué avant le test de combat (familier mort ou expiré en combat :
action bloquée). Le test passe d'abord ; la sortie de combat le replace.

Choix d'icône d'un ensemble : une icône portée deux fois (deux anneaux,
bijoux ou armes identiques) ne compte qu'une fois, comme
RefreshEquipmentSetIconInfo, sinon la grille gagnait des cases vides au
delà de la liste du client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:19:58 +00:00
Adrestie 0ab47349b9 ForeverUI : feuilles BGRA de 2048 réduites à 1024
Le Wow.exe d'origine décode chaque BLP dans un tampon unique de
1024 x 1024 en 32 bits : les 22 feuilles non compressées de 2048
(talents, grimoire, barre d'action, journal de quêtes, raccourcis,
création de personnage) y débordaient et faisaient planter le jeu
(ERROR #132 à 0x40CB6A). Réduites de moitié, alpha prémultiplié.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:39:26 +02:00
Adrestie 5842eb7a2b ForeverUI : code en anglais, commentaires resserres, code mort retire
Traduction
- Identifiants en anglais dans tout le module : addon, ecrans d'accueil,
  outils Python, banc d'essai et patcheur C#.
- Fichiers au nom francais renommes (Gabarits.lua -> Templates.lua,
  Textes_*.lua -> Texts_*.lua, deployer.py -> deploy.py,
  tools/patcheur -> tools/patcher, etc.).
- Commandes /fui et options de deploy.py en anglais (--check, --server,
  --remove-dbc).
- Cles des variables sauvegardees et de data/dbc/statistics.json
  traduites, sans reprise des anciennes cles.
- API de la micro-barre : ForeverUI.AddMicroButton(def) avec les champs
  name, atlasSet, after, tooltip, onClick, ready, et
  ForeverUI.UpdateMicro(name, isOpen).
- Commentaires reecrits en anglais, courts, sans dates ni historique ;
  les fonctions au nom peu parlant et leurs parametres sont expliques.

Code mort
- Exports, fonctions et variables jamais lus retires.
- Retires a la demande des modules : ForeverUI.PvPJauge, les exports
  FondEntete / TuilerEntete / Polices de TradeSkill, l'art legacy-up-c60,
  honorfill(half)blue et inv_misc_book_09, leurs entrees d'atlas et les
  parties d'outils correspondantes.

Verifications : liaisons des noms comparees avant et apres, banc vert,
chemins de textures inchanges, generateurs reproduisant les fichiers,
patcheur identique octet pour octet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 09:15:52 +02:00
Adrestie b53f36a794 Fenetres secondaires, inspection, JcJ servi par le serveur, Deshonore
- hauts faits (Achievements.lua) : camelot n'en a pas, la fenetre du
  client se deplace par son en-tete, place gardee et reposee apres
  UpdateUIPanelPositions
- tutoriel (Tutorial.lua) : fenetre, bouton d'alerte et compteur masques
- horloge (TimeManager.lua) : ButtonFrameTemplate 220 x 240, globe en
  portrait, encart, menus d'alarme en style 1 (Gb.MenuStyle1), case
  d'alarme
- carte de zone (ZoneMap.lua) : cadre battlefieldminimap-border, croix
  rouge, alpha suivant l'opacite (image retiree : le client la repose)
- cabine d'essayage (DressUp.lua) : ButtonFrameTemplate 450 x 545, fond de
  race, fleches et rotation a la souris
- inspection (Inspect.lua) : 338 x 424, deplacable, portrait 48, onglets
  lateraux, page du personnage a la camelot (cadre Char-Paperdoll), page
  JcJ en cartes avec en tete le nom du rang et l'embleme de la faction
  sous son insigne, Civilian sans rang ni donnees ; bouton Talents
- talents de l'inspecte (Talents.lua) : notre fenetre en lecture seule,
  compacte (colonnes de 260, sans portes ni bande du bas), sans recherche
  ni points ; elle ne suit pas l'inspection
- JcJ (PvPTab.lua) : seuils de rang lus du serveur (canal d'addon
  PVPTITLES de mod-pvp-titles-ext : RANKS, REQ), sans serveur les seules
  victoires ; etat Deshonore (DISHONOR) : rang et temps restant, blason
  brise de la faction a la place de l'embleme
- debuff Deshonore dessine par ForeverUI en tete des affaiblissements
  (Buffs.lua), aucun sort ni DBC requis
- art : blasons brises honor-dishonored-alliance / -horde (cuits par
  tools/cuire_deshonneur.py), battlefieldminimap, char-paperdoll-*
- /fui croix : temoin de la croix de la feuille de personnage
- banc : inspection, talents compacts, tete JcJ, canal du serveur, blason
  brise, debuff dessine, temoin de la croix
- README : lignes JcJ, fenetres secondaires, ameliorations et affaiblissements

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:33:28 +02:00
Adrestie a66aabb7f6 Points d'AMELIORATIONS.md : carte, journal, sacs, trousseau, barres
- carte (WorldMapZoom.lua) : zoom a la molette vers le curseur (x 1,25 par
  cran, de 1 a 4) et deplacement au glisser ; tuiles rognees a la vue,
  reperes hors vue eteints, surface cliquable bornee, fleche du joueur
  reposee ; retour a 1 au changement de carte, de mode, a la fermeture
- journal : le micro-bouton et L rattrapes quand 3.3.5 refuse QuestLogFrame
  (carte agrandie), marque effacee a l'image suivante au lieu de GetTime
  (qui avance pendant l'ouverture de la carte) ; case de suivi redessinee
  au clic ; en-tete de categorie en trois tranches, centre en mosaique
- sacs : ecarts comptes et marge haute (ecart assume) ; le sac ouvert est
  empile des son ouverture
- trousseau : icone en double densite (feuille uiactionbar2xc60), voile a
  la recherche, animation d'entree de camelot
- minimap : la molette fait + et - ; latence du micro-menu : ancre reposee
  apres 3.3.5, trait a 3 pixels ; reputation a la place de l'XP au niveau
  maximum ; /fui barres plus disert
- ajouter_feuilles.py : un nom logique deja servi par une autre table garde
  sa feuille
- banc : cadres de carte freres de WorldMapDetailFrame, panneau "full",
  carte lente a charger ; AMELIORATIONS.md vide, NOTES.md a jour

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 04:11:16 +02:00
Adrestie 1de02d13a0 Ecrans d'accueil a la DA de camelot : connexion, menu, selection, dialogues et creation de personnage
- GlueXML ForeverUI (data/glue) : cadre 2:1, polices, atlas, gabarits ;
  connexion, menu, selection des personnages, dialogues, creation en deux
  etapes (races et classes ; personnalisation numerotee, listes ouvrantes,
  echantillons de couleur, apercu differe, nom en bas de l'ecran)
- choix valides calcules sur CharSections aux regles du moteur
  (tools/choix_personnalisation.py) ; couleurs des echantillons lues dans
  les textures du client (tools/couleurs_personnalisation.py), peau teintee
  par la lumiere du decor
- decors de la creation et de la selection reduits a 0,912 pour compenser
  le cadre 2:1 (tools/decors_accueil.py) ; deployer.py suit aussi
  Interface\Glues\Models
- patcheur optionnel de Wow.exe (tools/patcheur, source et executable) :
  CycleCharCustomization rend l'indice du reglage
- art des ecrans d'accueil (data/art), outils de decoupe, d'atlas et de
  donnees
- barre du bas : boutons JcJ et Aide retires, bandeau a la largeur de ses
  boutons

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 23:44:01 +02:00
Adrestie bdf41cf40f Update AMELIORATIONS.md with new feature requests
Add new features and improvements for map interactions.
2026-09-26 16:20:28 +02:00
Adrestie 070a1ca863 Update AMELIORATIONS.md with new issues
Added new issues related to quest menu and quest journal visuals.
2026-09-26 16:12:46 +02:00
Adrestie cc7d2d45fa Talents camelot, glyphes refaits, cadre du familier, superposition des fenetres
- Talents : trois arbres cote a cote facon camelot sur PlayerTalentFrame,
  noeuds carres/ronds (TalentsData.lua genere des DBC), fleches, portes,
  changements en attente (Apply / Undo), onglets lateraux des specialisations,
  Activate, talents du familier en fenetre reduite, recherche (marques sur les
  noeuds, apercu, options, absents des barres), confirmation a la fermeture,
  glisser un sort de talent appris vers une barre
- Glyphes : page refaite sur l'art fourni (tools/cuire_glyphes.py), lueurs,
  etincelles, cercles concentriques tournants ; le GlyphFrame de WotLK reste
  sous PlayerTalentFrame (le reparenter plantait le client a la deconnexion)
- Cadre du familier facon camelot (PetFrame.lua)
- Superposition.lua : feuille, grimoire et talents passent entierement l'un
  devant l'autre, grimoire et talents deplacables
- Grimoire : la recherche "Missing from action bar" suit les barres

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:12:34 +02:00
Adrestie 9a88e947dd Grimoire : recherche camelot ; README a jour
- Recherche du grimoire (SpellBookSearch.lua) : champ, apercu de 5
  resultats, resultats en sections (exact, apparente, nom, description),
  "Missing from action bar" ; suit Hide Passives et Show all spell ranks,
  ne groupe jamais ; resultats feuilletables en combat.
- README : minimap, carte et journal, suivi de quetes, grimoire.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 13:53:07 +02:00
Adrestie 400a3dc1da Grimoire : grille camelot sur cases securisees, combat, menus volants, reglages
- Livre de camelot dans SpellBookFrame : deux pages ou une, categories en
  onglets-icones, grille condensee, en-tete repete, portrait cuit rond.
- Menus volants : groupes de SpellFlyout.db2, completes des sorts de BC et
  WotLK, un groupe par onglet et par faction ; Seals et Judgements en plus.
- Combat : controleur securise ; onglets, pages, roulette, groupes,
  agrandir/reduire et les trois reglages passent par des blocs securises,
  les huit jeux de reglages publies hors combat.
- Banc : modele de securite de 3.3.5, OnShow/OnHide propages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 13:19:07 +02:00
Adrestie 29dc3dfe5b Carte du monde : mode agrandi camelot, selecteur d'etages
- Mode agrandi (etape 4) : le plein ecran de WotLK habille a la camelot,
  carte seule. Cadre aux dimensions de UpdateMaximizedSize, pose en haut au
  centre dans l'unite de l'interface ; bordure sans portrait ; titre
  WORLD_MAP ; fil d'Ariane, filtres, etages, coordonnees, boutons rouges.
  La carte remplit le canevas par les constantes QUESTLIST / FULLMAP que
  WotLK lit pour la fleche et les reperes ; bordure, menus et liste des
  quetes du plein ecran de WotLK etouffes.
- Petite fenetre et mode agrandi partagent le meme ancrage.
- Selecteur d'etages : fond decoupe en trois (16 / 19), variante c60 ; nom
  elide ; la liste ne descend pas sous la largeur du selecteur.
- Banc d'essai : plein ecran de WotLK et ses deux vues, essais du mode
  agrandi et du selecteur.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 03:30:11 +02:00
Adrestie 879862c9c3 Carte et journal, suivi de quetes, largeur des menus contextuels
- Carte du monde (WorldMap.lua) : fenetre reduite camelot 702 x 534 posee
  sur l'ossature de WotLK, fil d'Ariane, filtres, etages, coordonnees,
  deplacable par la barre du titre.
- Journal de quetes (QuestLog.lua) : volet liste de camelot a droite de la
  carte (recherche, compteur, reperes, suivi, menus), L ouvre carte + volet ;
  page d'une quete (texte, objectifs, recompenses, Abandon / Share / Track)
  avec bouton Retour qui rend la carte d'avant.
- Suivi de quetes (ObjectiveTracker.lua) : modules camelot Quests et
  Achievements a la place des gestionnaires d'affichage de WotLK, API des
  gestionnaires conservee ; tri et filtres de WotLK dans le bouton filtre ;
  deplacable par /fui, position par defaut de camelot.
- Menus : les menus contextuels et sous-menus prennent la largeur de leur
  contenu, mesuree dans la police affichee.
- Art : feuilles questmaplogatlas, questtracker, cadres et fonds ; outils
  tranches_atlas.py ; banc d'essai etendu (WatchFrame, journal, menus).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 03:10:42 +02:00
Adrestie 95aaf33ab3 Add suggestion for max level player reputation bar
add note
2026-09-25 01:49:55 +02:00
Adrestie 51d074f268 Minimap : habillage camelot, horloge, calendrier, coordonnees et fleches du bord
- Minimap.lua : cadre c60, barre du nom de zone, suivi, courrier, zoom,
  cycle jour/nuit, calendrier (GameTimeFrame), horloge dans la barre
  (TimeManagerClockButton) et coordonnees sous la carte, releves dans
  blizzard_minimap, blizzard_timemanager et GameTime.xml de camelot.
- Les etats de bouton absents en 3.3.5 sont crees par chemin puis atlas
  (MiniMapTrackingButton n'a qu'une HighlightTexture).
- La carte garde sa taille de 3.3.5 a l'echelle 198 / 140 : le moteur pose
  les fleches du bord a un rayon fixe en unites de la carte. Leurs images
  sont reduites d'autant, en 64 x 64 avec mipmaps (tools/reduire_fleches.py).
  La fleche de groupe, sans methode, remplace le fichier d'origine dans
  patch-Z (exception accordee a la regle du prefixe).
- Constantes regroupees en tables : le Lua 5.1 du client refuse plus de
  60 upvalues par fonction.
- Banc : compilation Lua 5.1 de chaque fichier, et faux client qui ne donne
  a un bouton que les etats que son gabarit 3.3.5 declare.
- blp.encoder accepte des mipmaps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 21:20:09 +02:00
Adrestie 769c7f0f9c Reputation : le nom d un sous-en-tete s ancre sur la ligne
Il l etait sur le CHEVRON -- LEFT sur sa droite, +4 -- et le temoin a
montre le meme nom pose tantot a 57, tantot a 101 du panneau, AVEC LA
MEME ANCRE ET LA MEME CIBLE : ligne a 12, chevron a 40 de bord droit 53,
donc 57 attendu. L ecart vaut 44, soit exactement RETRAIT_ENFANT moins
RETRAIT_AUTRE.

disposer pose les ancres du nom PUIS reancre la ligne dans le meme
passage. Une region ancree sur une autre region du meme cadre ne suit
pas toujours ce deplacement ; un cadre fils, lui, suit -- les noms
ancres sur ligne.barre, un Frame, n ont jamais derive.

On enleve l intermediaire : le nom s ancre sur la ligne, a CHEVRON_X
plus la largeur du chevron plus l ecart. Meme pixel, sans relais. La
largeur ne depend pas de l etat du bouton -- plus et moins font 13 de
large, seules leurs hauteurs different, mesure sur l art.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 16:48:54 +02:00
Adrestie a5676bb6cc AMELIORATIONS : les trois points demandes plus tot y reviennent
Le trousseau a revoir, le menu deroulant ameliorable et le sac qui peut
sortir par le haut de l ecran avaient ete demandes explicitement au fil
des sessions. Le tri d hier les avait emportes dans NOTES.md avec le
reste ; ils reviennent ici, ou ils auraient toujours du etre.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 16:08:21 +02:00
Adrestie 1ed47915f0 Documentation : AMELIORATIONS ne porte que ce qui a ete demande
Le reste -- ecarts, pieges, outillage, ce que 3.3.5 ne sait pas faire --
passe dans docs/NOTES.md, ou rien n a ete demande et ou tout m est
seulement utile.

AMELIORATIONS ne garde donc que les deux points demandes : l icone de
l onglet du familier, et le volet droit du PvP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 16:06:16 +02:00
Adrestie 01456dc984 PvP : sans rang, le joueur est un civil, pas un deshonore
Le nom d un rang se lit a l indice "numero + 4". A numero = 0 cela
donnait l indice 4 -- PVP_RANK_4, "Dishonored" -- et l ecran annoncait
donc deshonore tout joueur de moins de cinquante victoires. Or les
indices 1 a 4, Pariah, Outlaw, Exiled et Dishonored, sont les rangs
NEGATIFS, ceux qu on obtient en tuant des civils.

Trois cas desormais, et non deux : un vrai rang se nomme a numero + 4,
un indice de 1 a 4 se nomme par son indice tel quel, et le reste est un
civil.

Ecart assume : "Civilian" n est pas une chaine du client. Cherchee dans
GlobalStrings -- les quarante chaines de rang vont de PVP_RANK_0 a
PVP_RANK_19 -- et dans le binaire : absente des deux. Elle est donc
ecrite en clair, et ne se traduira pas.

AMELIORATIONS gagne une section 5 : l icone qui manque a l onglet du
familier, et le volet droit du PvP, a reprendre sur
CharacterFrameSidePaneTemplate comme les autres.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 15:59:05 +02:00
Adrestie 6c50965c51 Documentation : les ecarts et les pieges de cette serie
README : les onglets lateraux ne sont plus "pas encore mis en page".
Reputation, competences, PvP, monnaies et familier ont chacun leur
section ; le sac porte son segment de monnaies suivies.

AMELIORATIONS : la jauge par quadrants et ce qu une texture qu on fait
tourner exige, le rang par les titres, les seuils recopies du serveur,
UIPanelWindows qui rend leurs ancres aux ecrans, l onglet choisi qui est
un onglet desactive, le balayage qui doit prendre les FontString, le
sous-calque absent, et les faux pris en defaut.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 13:11:16 +02:00
Adrestie 723558ade3 Bas de l'ecran : le micro-menu resiste aux vehicules
/fui micro a montre deux boutons, et eux seuls, ancres ailleurs que sur
notre bandeau : CharacterMicroButton a BOTTOMLEFT (552, 2) et
SocialsMicroButton sur le BOTTOMRIGHT de QuestLogMicroButton. C'est
exactement ce que fait VehicleMenuBar_MoveMicroButtons, appelee par
MainMenuBar_ToPlayerArt ET MainMenuBar_ToVehicleArt -- donc a chaque entree
ou sortie de vehicule. On repose apres elle, et a chaque passage general.

MainMenuBar avalait les clics a son tour : declaree enableMouse="true" et
couvrant tout le bas de l'ecran, son art remplace par le notre mais sa
souris intacte. Meme remede que pour BonusActionBarFrame.

La lecon se generalise : tout contenant du client qu'on vide garde sa
souris, et il faut la lui retirer.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 09:14:44 +02:00
Adrestie 155acf9a15 Bas de l'ecran : la barre bonus n'avale plus les clics du micro-menu
/fui micro a nomme le coupable : les dix boutons sont exactement a leur
place, un seul ancrage chacun, et GetMouseFocus rend BonusActionBarFrame.

Elle est declaree 505 x 43, strate HIGH, toplevel, avec enableMouse="true".
Effacer son art la rend invisible mais PAS inoffensive : elle reste une
dalle au-dessus du bas de l'ecran et avale les clics de tout ce qu'on y a
pose -- le bouton du personnage ne repondait plus.

C'est le meme piege que CharacterModelFrame sur les emplacements
d'equipement, et le meme remede : un cadre qui ne sert que de contenant n'a
pas a recevoir de clic. Ses douze boutons gardent le leur, etant des cadres
fils.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 09:08:00 +02:00
Adrestie 10f5fa9e02 Feuille : le rang PvP se nomme par les chaines du client
/fui pvp a tranche : UnitPVPRank rend 0 sur ce serveur et GetPVPRankInfo ne
repond rien. Le "1" du haut n'etait pas un rang mais la SAISON d'arene,
ecrite sans intitule juste au-dessus. Trois corrections.

LE DECALAGE, enfin etabli. UnitPVPRank rend un INDICE, et je n'avais aucun
usage de reference pour en deduire le numero -- WotLK ne s'en sert plus.
L'ordre des quarante chaines le tranche : PVP_RANK_1..4 sont les rangs
NEGATIFS (Pariah, Outlaw, Exiled, Dishonored), PVP_RANK_5 est Scout /
Private donc le rang 1, PVP_RANK_10 est Stone Guard / Knight donc le rang 6.
L'indice est la cle telle quelle, et le numero vaut l'indice moins quatre.
Le nom se lit donc dans ces chaines, comme GetPVPRankText le fait chez
camelot.

LA SAISON porte son intitule : ARENA, ce que le client a de plus proche
d'EXPANSION_SEASON_NAME, absent.

SANS RANG, PAS D'ANNEAU : un cercle dore vide se lit comme un defaut. Le
cadran garde sa lueur, son fond de faction et l'embleme.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 08:35:42 +02:00
Adrestie 91181e8897 Feuille : le titre du rang en haut, son numero dans l'anneau
A LA DEMANDE, et non d'apres la source : camelot ecrit les deux en haut --
PVP_RANK_NUMBER_AND_TITLE donne "Rang N : Nom" dans le CurrentRankField --
puis repete le numero dans l'anneau de recompense, par LevelLabel.

Ici le titre reste seul en haut, et le numero n'est qu'a un endroit : dans
le cercle dore.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 02:07:21 +02:00
Adrestie 0880e155a9 Feuille : l'onglet PvP, repris de camelot
PVPRankFrame.xml et pvprankframe.lua lus en entier. camelot tire tout de
C_MajorFactions -- le renom -- qui n'existe pas ici. Mais les trois
fonctions de l'epoque des rangs sont TOUJOURS dans le binaire, verifie dans
Wow.exe : UnitPVPRank, GetPVPRankInfo et GetPVPRankProgress. WotLK a
simplement cesse de s'en servir dans son FrameXML.

Heureuse coincidence : la planche c60 de camelot porte QUATORZE icones de
rang, exactement les quatorze rangs classiques. Son art est celui de
l'epoque.

Tout cet art vit sur une feuille que le listfile ne nomme pas :
ajouter_feuilles.py accepte desormais "fdid:<n>.blp => interface/...", et
retrouve ses entrees d'atlas par ce meme identifiant.

Trois ecarts assumes. La jauge circulaire n'est pas portable -- camelot la
fait avec un Cooldown dont il remplace la texture de balayage,
SetSwipeTexture, ABSENT du binaire ; l'anneau, la lueur, le fond de faction
et le badge sont poses, la progression s'ecrit en toutes lettres.
GameFontNormalMed2 n'existe pas. Le compte a rebours de saison demande un
C_SeasonInfo absent.

Le volet droit porte ce que WotLK sait vraiment donner : l'honneur.

Temoin : /fui pvp, qui dit ce que les trois fonctions rendent sur ce
serveur.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 02:04:16 +02:00
Adrestie f6f5d10903 Feuille : le balayage complet s'applique aussi a la reputation
A la demande, l'onglet valide recoit le traitement des competences : toutes
les regions ET tous les cadres fils du ReputationFrame du client sont
masques a chaque passage, sans enumeration a tenir a jour. Sa liste a
ascenseur, ses intitules de colonne et ses traits d'arborescence partent
avec.

Deux consequences : les deux traits de liste ont migre sur NOTRE panneau,
hors d'atteinte du balayage, et le balayage de construction devient inutile
-- celui de chaque passage le fait deja, des le premier.

Le cadre de detail echappe au balayage : il a change de parent et vit dans
le volet droit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:57:35 +02:00
Adrestie 52c8f71480 Feuille : tout l'ecran des competences du client se tait
Il ne s'agissait pas que de ses lignes. SkillFrame declare aussi un bouton
de tri, un "tout replier", son cadre de depliage et ses trois tuiles, deux
boutons accepter / annuler, sa liste a ascenseur, et tout un cadre de detail
-- ScrollFrame, ScrollChildFrame, StatusBar. Les enumerer serait une liste a
tenir a jour et a oublier.

On masque donc TOUT ce que ce cadre porte et qui n'est pas a nous :
GetRegions ne rend que les textures, GetChildren que les cadres fils -- il
faut les deux, et a chaque passage, SkillFrame_UpdateSkills remontrant les
siennes.

Consequence : nos deux traits de liste sont crees sur NOTRE panneau et non
sur le cadre du client, sinon le balayage les emporterait.

Le faux client ne connaissait pas les cadres fils -- il rendait GetRegions
mais pas GetChildren, et l'essai ne pouvait pas s'ecrire. Chaque cadre tient
desormais la liste des siens, que SetParent met a jour.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:54:56 +02:00
Adrestie ff72c844a5 Feuille : l'onglet des competences, repris de camelot
SkillsFrame.xml et skillsframe.lua lus en entier. Tout est commun avec la
reputation -- liste (10, -40) / (-25, 15), deux traits, retraits 0 / 2 / 46,
marges 10, ecart 3, survol a 0 / 0,10 / 0,20 -- sauf quatre choses :

  * l'en-tete fait 26 et non 28 ;
  * le nom d'une entree est a x = 2 et non 15, faute d'AccountWideIcon ;
  * la description du volet droit est a -8 sous la jauge et non -6 ;
  * LA BARRE EST BLEUE PAR SON SPRITE -- SetFillTextureByColorType(Blue)
    suivi d'UpdateBarColor(WHITE_FONT_COLOR), donc aucune teinte. Le
    remplissage bleu est cuit au masque comme le blanc.

Le texte de la barre est TOUJOURS la progression : rang / maximum, ou
rang (+bonus) / maximum avec le bonus en vert -- TryShowBarProgressText est
appele des l'initialisation. Et a l'ouverture, la premiere competence qui
n'est pas un en-tete est choisie, comme SelectFirstSkillIfNoneSelected le
veut.

Trois ecarts assumes : 3.3.5 n'a pas de sous-en-tete -- sa hierarchie n'a
qu'un niveau -- les lignes d'armes ne sont pas detaillees, faute des chaines
WEAPON_SKILL_DETAIL_*, et la description ne defile pas.

Temoin : /fui skills.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:52:48 +02:00
Adrestie bf9b3aea4a Feuille : cocher "Move to Inactive" ne deselectionne plus
Le OnClick du client appelle SetFactionInactive(GetSelectedFaction()), qui
DEPLACE la faction dans le bloc des inactives : tout se renumerote, et
l'indice retenu designait alors une autre ligne.

Le detail suit donc le NOM -- comme la marque de la liste depuis le repli --
et retrouve l'indice a chaque passage, qu'il repose au client pour que ses
trois cases agissent sur la bonne faction. Si la faction quitte la liste, le
volet garde ce qu'il montrait plutot que de se vider.

Et sans faction choisie, le volet droit est VIDE : c'est l'etat de depart.
La source de verite est notre nom retenu, pas GetSelectedFaction, que le
client peut laisser pointer n'importe ou.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:45:29 +02:00
Adrestie 63a76b63e0 Feuille : seule la case de guerre porte les epees
Les trois cases partagent le meme fond, checkbox-minimal, mais pas la meme
coche. AtWarCheckbox porte Interface/Buttons/UI-CheckBox-SwordCheck -- deux
epees croisees, en 32 posees a (3, -5) -- tandis que MakeInactiveCheckbox et
WatchFactionCheckbox prennent checkmark-minimal, centre.

Les epees avaient ete donnees aux trois.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:42:05 +02:00
Adrestie 1148378293 Feuille : la description de faction est blanche et se replie
Deux corrections d'un meme geste.

LA COULEUR. camelot declare fontName = GameFontNormal sur son
ScrollingFontTemplate, mais cet objet de police est DORE en 3.3.5 -- c'est
celui des titres. Le blanc y est GameFontHighlight, et c'est ce que montre
la reference.

LE REPLI. Un texte n'a de quoi revenir a la ligne que s'il a une BOITE.
Ancree par son seul haut et ses deux cotes, la description n'avait pas de
bas : un peu longue, elle n'avait nulle part ou aller et disparaissait. Elle
a maintenant ses quatre bords -- du bas de la jauge au haut des trois
cases -- et se replie dedans.

Le faux client retient desormais SetWordWrap et SetJustifyV, pour que le
banc puisse le verifier.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:39:34 +02:00
Adrestie 4baec59d08 Feuille : le cadre gris du volet de reputation s'en va
ReputationDetailFrame porte un fond de fenetre declare en <Backdrop> --
UI-DialogBox-Background et UI-DialogBox-Border, avec ses marges et sa taille
de tuile. Un fond de ce type ne figure PAS dans GetRegions : le balayage des
textures ne l'atteignait pas, et son cadre gris restait a l'ecran.

SetBackdrop(nil) l'enleve, comme pour les listes de menu. A verifier sur
tout cadre du client que l'on reprend : les deux facons de poser un fond
demandent deux gestes differents.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:36:09 +02:00
Adrestie 22e13463c8 Feuille : le volet droit montre le detail de la faction choisie
CharacterFrameSidePaneTemplate donne la surface -- TOPLEFT (16, -14) et
BOTTOMRIGHT (-12, 14) sur l'hote droit -- puis le titre large de 195 et
centre, le sous-titre, un UI-Character-Info-ScrollLine et la description.
ReputationDetailFrame y ajoute une StandingBar de 180 x 29 et trois cases de
26 empilees depuis le pied : la premiere a x = -4, les suivantes a (0, -2),
fond checkbox-minimal, coche UI-CheckBox-SwordCheck en 32 posee a (3, -5),
intitule large de 158 a +2, celui d'At War en rouge.

C'est le CLIENT qui remplit : ReputationFrame_Update ecrit le nom, la
description et l'etat des trois cases pour la faction que
SetSelectedFaction designe, et seulement si son cadre de detail est visible.
Cliquer une ligne le lui dit donc, puis relit ce qu'il a pose. Les trois
cases restent les siennes -- elles portent la declaration de guerre, le
rangement parmi les inactives et le suivi sur la barre du bas.

Deux ecarts assumes : GameFontNormalMed3 n'existe pas en 3.3.5, et la
description de camelot defile la ou la notre est simplement bornee.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:32:32 +02:00
Adrestie 9403d3cdc4 Feuille : la liste de reputation s'arrete au compte du client
Releve par /fui reput : le client annonce NEUF factions et repond encore a
la DIXIEME -- l'en-tete "Inactive", hors du compte. Sa propre boucle le sait
et teste factionIndex <= numFactions ; la notre lisait tant que
GetFactionInfo repondait, et posait une ligne de plus.

C'est ce qui rendait le repli incomprehensible : la liste raccourcit, mais
nous continuions a lire au-dela du compte, la ou le client rend des entrees
d'un autre bloc. Un sous-en-tete paraissait alors hors de sa categorie, et
vide.

Le faux client reproduit desormais ce piege -- il repond a l'indice qui suit
son propre compte -- sinon l'essai ne prouverait rien.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 01:22:16 +02:00
Adrestie 92fdb3976c Feuille : replier une section se comporte enfin correctement
Replier RACCOURCIT la liste, il ne masque pas : CollapseFactionHeader retire
les enfants de la numerotation du client, GetNumFactions diminue et tout ce
qui suit remonte d'un cran. C'est ainsi que 3.3.5 et camelot fonctionnent
tous les deux.

Ce qui n'allait pas venait d'ailleurs, et de deux endroits.

Le defilement etait borne APRES la pose : replier en bas de liste laissait
un passage entier pose depuis un decalage devenu trop grand -- des lignes
vides, ou les mauvaises factions, jusqu'au passage suivant. On borne
maintenant, et on repose si cela a bouge.

La selection se retenait par un INDICE, qui ne survit pas a un repli : les
factions se renumerotent et la marque changeait de ligne. Elle se retient
par le nom, seule cle stable, GetFactionInfo ne rendant pas de factionID en
3.3.5.

Le faux client se contentait d'un drapeau : il renumerote desormais comme le
vrai, et le banc verifie les deux sens ainsi que la marque apres un
aller-retour.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 00:30:35 +02:00
Adrestie 55e9e53699 Feuille : la hierarchie de l'onglet de reputation
SetElementFactory choisit selon deux drapeaux : ni en-tete ->
ReputationEntryTemplate, 30 ; en-tete et pas un enfant ->
ReputationHeaderTemplate, 28 ; en-tete ET enfant ->
ReputationSubHeaderTemplate, 22. SetElementIndentCalculator donne le
retrait : 0 pour un en-tete de premier niveau, 46 pour un enfant qui n'est
pas un en-tete, 2 pour tout le reste. SetPadding ajoute 10 de marge sur les
quatre bords et 3 entre deux lignes.

3.3.5 rend les trois drapeaux qu'il faut : isHeader en neuvieme position,
hasRep en onzieme, isChild en treizieme. Les hauteurs variant, la liste ne
se divise plus : elle s'empile jusqu'a la marge du bas.

Deux corrections venues de la meme lecture : le nom d'une entree est a 15 et
non 25 -- Initialize le decale de -10 quand l'AccountWideIcon est masquee,
ce qu'elle est toujours ici -- et un sous-en-tete ancre son nom a +4 de son
bouton, pose a x = 28, en ne montrant sa barre que s'il porte de la
reputation.

ENFIN : le client remontre ses propres lignes a chaque passage --
ReputationFrame_Update finit par factionRow:Show() sur chacune des quinze.
Les masquer a la construction ne suffisait pas, elles revenaient avec tout
leur art d'epoque. C'est pourquoi certaines reputations echappaient au
theme.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 00:27:32 +02:00
Adrestie d18e27712e Feuille : une texture cuite doit faire une puissance de deux
Le remplissage cuit sortait en 320 x 30 : en jeu, la barre devenait un bloc
uni que la teinte de la faction coloriait -- d'ou des jauges entierement
vertes. Tout l'art d'interface du client d'origine est en puissance de deux
-- verifie : 256 x 256, 256 x 64, 16 x 16 -- et il ne sait visiblement pas
echantillonner autre chose.

La cuisson sort desormais en 512 x 32, largement le double de la taille
affichee (160 x 15), et la lecture reste en 0..1. cuire_masque.py REFUSE
maintenant d'ecrire une autre taille : le defaut est muet a l'ecriture et ne
se voit qu'en jeu.

Le temoin /fui reput a servi a ecarter : fractions proportionnelles, teinte
conforme a FACTION_BAR_COLORS, en-tetes sans barre. La logique etait juste.
Le fond neuf-tranches a ete rendu hors du jeu pour l'ecarter a son tour.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 00:21:15 +02:00
Adrestie ff85b3df1b Feuille : le remplissage des jauges suit enfin le contour
camelot le decoupe par common-stat-bar-Mask, une MaskTexture ancree LEFT et
RIGHT sur la barre -- donc tendue sur toute sa largeur -- a sa hauteur
d'atlas, 29. Sans elle, le remplissage avait des bouts carres qui ne
suivaient pas le contour du fond.

tools/cuire_masque.py multiplie donc l'alpha du masque dans le sien, une
fois pour toutes. Et il le DECOUPE comme notre fond : celui de camelot
s'etire avec la barre, le notre garde ses bouts a 10 px et n'etire que le
milieu -- un masque tendu ne coinciderait plus avec lui.

Le resultat est un fichier a lui seul, calcule pour une barre de 160, qu'on
rogne a la fraction voulue comme le fait SetFillPercent.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 00:13:12 +02:00
Adrestie 0307513515 Feuille : le fond des jauges de reputation se decoupe en neuf
common-stat-bar-bg mesure 68 x 30 et la barre en fait 160 : etire, ses bouts
arrondis s'allongeaient. La mesure se prend sur l'art -- la premiere colonne
dont le profil vertical rejoint celui du milieu, c'est-a-dire ou le bord est
fini : elle tombe a 10. La hauteur ne changeant pas, seules les tranches
horizontales du milieu s'etirent.

Le remplissage, lui, reste une seule texture : c'est une jauge, que
SetFillPercent rogne a la fraction voulue, et la decouper en ferait un
cadre. La compression horizontale de sa feuille -- 240 pour une barre de
160 -- est celle de la source.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 00:09:22 +02:00
Adrestie 56eed4c390 Feuille : la plaque d'en-tete de reputation se decoupe en neuf
ReputationHeaderTemplate la pose sans ancrage, donc etiree sur toute la
ligne : a 64 x 29 pour une ligne de plus de trois cents, ses coins arrondis
s'etalaient en ellipses.

Mesure prise sur l'art -- l'alpha de la colonne de gauche -- l'arrondi court
sur une dizaine de pixels. Un coin de 12 le couvre et reste sous la moitie
de la hauteur, au-dela de quoi les tranches se chevaucheraient. La plaque
passe donc par CreateNineSlice, et le banc compte ses neuf tranches.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-22 23:32:01 +02:00
Adrestie 8224528cb3 Feuille : les lignes de reputation sont baties d'apres camelot
Trois tentatives pour reposer et rhabiller les quinze ReputationBar<i> de
3.3.5, trois echecs de la meme nature : ReputationFrame_Update ne remplit
pas, il REPOSE son art a chaque passage -- SetNormalTexture sur les boutons,
les AtWarHighlight additifs, les traits d'arborescence, la texture de la
StatusBar -- et le clic en declenche un. Chaque correction tenait jusqu'au
passage suivant.

Les lignes sont donc les NOTRES, baties d'apres les gabarits lus en entier
et remplies depuis GetFactionInfo, la seule chose que 3.3.5 apporte ici :

  en-tete 28  plaque common-button-list-collapseExpand etiree, nom en or a
              LEFT x = 10, fleche plus/moins a RIGHT (-8, -1)
  entree  30  barre 160 x 29 a RIGHT x = -3 -- fond common-stat-bar-bg,
              remplissage common-stat-bar-white haut de 15 teinte par
              FACTION_BAR_COLORS, texte centre -- et nom en blanc de x = 25,
              le bord droit de l'AccountWideIcon, au LEFT de la barre moins 10
  survol      trois tranches, cotes de 6, aux alphas de
              RefreshBackgroundHighlightOpacity : 0 / 0,10 / 0,20, et
              0,50 / 0,65 / 0,85 en guerre

A l'attitude maximale la barre est pleine et sans texte de progression,
comme InitializeBarForStandardReputation le veut ; au survol elle montre la
progression au lieu de l'attitude.

Lecon : quand un ecran du client se repose lui-meme, on ne le rhabille pas,
on le remplace.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-22 23:29:19 +02:00
Adrestie da7ac025dd Feuille : la ligne de reputation suit enfin le gabarit en entier
Trois erreurs, une seule cause : lire un bout du XML de camelot et le plaquer
sur les cadres de 3.3.5, au lieu de lire le gabarit en entier avant d'ecrire.

ReputationEntryTemplate donne tout : barre ancree RIGHT x = -3, nom en
GameFontHighlight de hauteur 15 allant de x = 25 -- le RIGHT de
l'AccountWideIcon, large de 23 et posee a LEFT x = 2 -- jusqu'au LEFT de la
barre moins 10, et intitule d'attitude centre sur la barre par un LEFT plus
un RIGHT. Tout cela est desormais pose tel quel.

Et l'art du client revient a CHAQUE mise a jour : ReputationFrame_Update
rappelle SetNormalTexture sur les boutons et remontre la texture de la
StatusBar, les deux AtWarHighlight additifs et les traits d'arborescence.
L'etouffer une fois a la construction ne suffisait pas -- l'image reprenait
sa taille declaree, 16 x 16 ancree a LEFT +3 pour une ligne de 20, et se
superposait a la notre. C'est ce qui deformait les plus et les moins et
faisait sortir les barres de leur cadre. On repasse apres lui a chaque fois.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-22 23:18:28 +02:00
Adrestie f130d6221a Feuille : le trait de liste ne couvre plus tout le volet
Le troisieme argument de SetAtlas veut dire "ne touche pas a la taille" : il
ne vaut que si on la pose soi-meme juste apres -- un SetAllPoints, un
SetWidth, un second ancrage. Pose sur une texture sans dimension ni second
point, il la laisse s'etaler sur tout son parent.

Les deux traits de liste de la reputation etaient dans ce cas : une immense
bande doree par-dessus l'ecran. La fleche plus/moins aussi, en plus discret.
Les deux reprennent leur taille d'atlas -- 384 x 8 et 13 de large -- et le
banc les verifie.

Les appels du reste de l'addon sont tous suivis d'un dimensionnement :
c'etait bien l'usage, mal repris.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-22 23:13:51 +02:00
Adrestie 46d0dcd6ae Feuille : corriger l'en-tete de reputation, mal lu
common-button-list-collapseExpand n'est PAS une fleche : c'est le fond d'une
ligne d'en-tete, une plaque arrondie de 64 x 28 que ReputationHeaderTemplate
pose sans ancrage, donc etiree sur toute la ligne. Posee a sa taille d'atlas
sur un bouton de 20, elle se repetait sur chaque ligne et recouvrait les
noms.

La vraie fleche est le StateIcon du meme gabarit, que ReputationHeaderMixin
remplit avec common-button-list-plus ou -minus, ancre RIGHT en (-8, -1) --
a droite de la ligne, et pas a gauche.

Un en-tete porte donc sa plaque, son nom a LEFT x = 10 et sa fleche, mais
aucune barre : celle-ci appartient aux entrees. GetFactionInfo rend isHeader
en neuvieme position, et c'est lui qui decide.

Lecon notee : un nom d'atlas ne dit pas ce que l'art contient. Le recadrage
d'un sprite depuis sa feuille prend dix lignes et evite cette erreur.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-22 23:09:57 +02:00