J'ai enfreint la regle de lecture des sources : AutoCastTemplates n'existe
que dans mainline/, et seuls camelot/ et shared/ font foi. L'anneau que
j'en avais tire -- coins fixes et fourmis tournantes -- est retire, avec
ses deux petites feuilles, sa table d'atlas et l'outil qui les produisait.
camelot garde ici le comportement de 3.3.5 : sa bordure scintillante et ses
quatre etincelles.
La regle est desormais ecrite en tete d'AMELIORATIONS : un fichier qui
n'existe que dans mainline/ n'est pas une source, c'est un point a trancher.
L'echelle, pas la taille : redimensionner le cadre des etincelles ne suffit
pas, le client les pose a une taille fixe et AutoCastShine_OnUpdate les
deplace sans les retailler -- d'ou des etincelles trop grosses sur un cercle
trop petit. SetScale(30/36) sur le cadre fait suivre tailles et orbite. La
bordure, elle, passe de 58 a 48,3.
Le piege de SetRotation reste note : il efface le rectangle d'atlas. Plus
aucun element ne tourne aujourd'hui, mais la note servira.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Ma premiere explication etait fausse : ce n'etaient pas les 2048 px de la
feuille. SetRotation existe bien dans ce client, mais il RECALCULE les
coordonnees de texture sur l'image entiere et efface le rectangle d'atlas :
la texture se met a montrer toute la feuille, d'ou les deux sprites l'un a
cote de l'autre.
La rotation passe donc par la forme a HUIT arguments de SetTexCoord, que le
client annonce lui-meme dans son message d'usage : "SetTexCoord(ULx, ULy,
LLx, LLy, URx, URy, LRx, LRy)". Elle nomme les quatre coins et reste dans le
rectangle de l'element.
Ses coins balaient le carre CIRCONSCRIT, 1,41 fois le cote : un element
tournant doit etre seul et centre dans sa feuille, avec de la marge, sinon
la rotation va chercher les pixels du voisin. petite_feuille.py sait
desormais poser un element au milieu avec sa marge, et refuse une feuille
trop petite pour le carre circonscrit. Les fourmis ont leur feuille de 128
(marge de 25), les coins la leur en 64.
Le harnais garde les huit coordonnees et verifie qu'elles sont employees,
qu'aucune ne sort de la feuille, et que SetRotation n'est pas appele.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Elle etait a 120, trop haut. Elle se pose maintenant a 84, juste au-dessus
de la barre de reputation, sur le meme bord gauche que la barre d'action.
Quand la barre des postures est affichee, la barre du familier passe a sa
droite, separee d'elle par la largeur de deux de ses icones. La place se
recalcule a chaque mise a jour, puisque les formes vont et viennent et que
la largeur des postures avec elles ; le veilleur ecoute donc aussi
UPDATE_SHAPESHIFT_FORMS, et StanceBar etant charge avant, sa largeur est
deja a jour quand on la lit.
Layout.SetDefaults ne repose le cadre que si l'utilisateur ne l'a pas
deplace lui-meme : une position retenue par /fui reste la sienne.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
3.3.5 encadre sa barre de deux morceaux glissants,
SlidingActionBarTexture0 et 1. Plutot que de se fier a leurs noms, toutes
les regions du cadre lui-meme passent a alpha 0 : les boutons sont des
cadres fils et non des regions, ils ne sont pas touches. Le balayage est
rejoue a chaque habillage, donc une texture ajoutee ensuite par le client
disparait aussi.
Trois manques du faux client corriges pour pouvoir le verifier : il ne
savait pas enumerer les regions d'un cadre (GetRegions, GetNumRegions),
n'avait pas GetObjectType -- si bien qu'un balayage qui ne balayait rien
passait pour bon -- et appelait unpack, absent en Lua 5.5 alors que le jeu
tourne en 5.1.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Meme petit bouton que les postures -- 30 x 30, ecart 2, cadre 35 centre,
etats a 31,6 x 30,9 -- plus ce qui lui est propre :
anneau d'autolancement de 31 x 31 centre a (0,5 ; -0,5)
coins UI-HUD-ActionBar-PetAutoCast-Corners des que l'autolancement est
POSSIBLE
fourmis UI-HUD-ActionBar-PetAutoCast-Ants, debordant de 5 px, tournant de
-360 degres en 4 s, visibles seulement quand il est ACTIF
action active cochee ; l'attaque clignote et son coche tombe a 0,5 --
"a pleine alpha on croirait une capacite de plus selectionnee"
action inutilisable grisee a 0,4 ; sans texture, icone masquee
barre visible si PetHasActionBar() et UnitIsVisible("pet")
LE PIEGE DES SIGNATURES, DEUXIEME FOIS. GetPetActionInfo rend (nom, texture,
isToken, ...) chez le moderne et (nom, SOUS-TEXTE, texture, isToken, ...) en
3.3.5 : un champ de plus au deuxieme rang. Recopier la source au mot pres
prendrait "Rang 5" pour la texture. Le harnais le verifie sur une action qui
a un sous-texte, et sur un isToken dont la cle globale doit etre resolue.
La rotation des fourmis est rendue sans groupe d'animation : Texture
SetRotation existe dans ce client, l'angle se deroule dans un OnUpdate a la
meme vitesse. Le masque de l'anneau, lui, n'est pas reproductible.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>