Un objet de police porte la SIENNE. GameFontNormalLeft est a gauche ;
GameFontHighlight, NumberFontNormal et NumberFontNormalSmallGray n ont
aucun justifyH -- donc CENTRE, releve dans le FontStyles.xml du client.
Un SetJustifyH pose a la creation, ou avant SetFontObject, ne survit
donc pas.
Dans la reputation, le nom se retrouvait centre dans une boite dont la
largeur change d un gabarit a l autre : il se deplacait horizontalement
au fil du defilement, selon le role que la ligne reprenait. Meme faute
dans les competences et les monnaies, ou le compte d une monnaie a zero
passait de RIGHT a CENTER avec GameFontDisable.
Et sur les boutons d action, ou le raccourci et la quantite sont cales
a droite dans le code mais etaient centres a l ecran. C est du code
VALIDE : le geste ne change pas l intention, il la retablit.
camelot le fait exactement ainsi, et c est ce qui le trahit :
<FontString inherits="GameFontHighlight" justifyH="LEFT">
Le faux du harnais ne touchait pas a justify : il est desormais fidele,
et c est lui qui a trouve la faute des boutons d action.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ScrollBar.lua refait MinimalScrollBar -- 3.3.5 n a ni ce gabarit ni le
ScrollBox qui le pilote. La barre ne connait pas la liste : on lui donne
combien de lignes existent, combien tiennent et ou l on en est, et elle
rend le nouveau decalage. Elle s efface quand tout tient.
Ancrages de camelot : TOPLEFT sur le TOPRIGHT du ScrollBox (5, -2),
BOTTOMLEFT sur son BOTTOMRIGHT (5, 4).
LES TRANCHES SONT MESUREES, PAS DEDUITES DE LEUR NOM. Celle que la
source appelle thumb-bottom fait 8 x 36 et n est PAS un embout : son
alpha monte de 1 a 255, donc son haut est transparent, et posee au bas
du curseur elle le faisait fondre dans le noir de la glissiere. Les deux
bouts du curseur sont donc le MEME morceau, thumb-top, le second
retourne : le curseur est plein jusqu a ses extremites.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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>
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>