Commit Graph

10 Commits

Author SHA1 Message Date
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 51ad1970af ForeverUI : barre des totems déplaçable, empilée avec les barres du bas
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 14:05:31 +02:00
Adrestie b063c4185a ForeverUI : barres d'action 2 à 5 placées comme celles de Camelot
Bottom Left / Bottom Right côte à côte au-dessus des barres d'expérience
et de réputation (à +22 et +606 du bord gauche de la barre principale),
postures et familier remontés d'un rang quand elles s'y trouvent ;
Right / Right 2 debout contre le bord droit, RIGHT (-5, -77). Douze
boutons de 45, écart 2, dans la strate de la barre principale (le 3.3.5
les mettait en HIGH, devant fenêtres et sacs), retenues dans l'écran,
déplaçables et redimensionnables en mode d'édition ; le 3.3.5 ne les
replace plus. Rien n'est disposé en combat.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:13:05 +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 eb681aa9cd Aucun texte en dur : anglais en base, francais, langues extensibles
- socle : Textes.lua (ForeverUI.L) et ForeverUIGlueTextes.lua (G.L) ; les
  textes dans Textes_enUS / Textes_frFR (325 cles en jeu) et
  ForeverUIGlueTextes_enUS / _frFR (41 cles aux ecrans d'accueil) ; une cle
  absente prend l'anglais, une langue sans fichier lit l'anglais ; ajouter
  une langue = un fichier de plus
- les textes que le client 3.3.5 connait se lisent dans ses globales
  (GlobalStrings, GlueStrings en glue) ; les textes de secours sont retires
- tous les fichiers repris : libelles, infobulles, mode edition, messages et
  aide de /fui, erreurs internes ; .toc : Notes + Notes-frFR
- selection des personnages : race et classe traduites ramenees a leur jeton
  par les tables de langue (GetAvailableRaces / GetAvailableClasses font
  planter le client hors de la creation)
- tools/cartes_instances.py : noms des instances dans toutes les langues de
  la LibBabble-Zone de WDM (portails de la carte sur tout client)
- banc : toute cle employee existe en anglais et en francais, memes cles dans
  les deux, bascule frFR / deDE essayee ; chaines 3.3.5 ajoutees au faux client
- README : etat des sections mis a jour, langues, glue, deploiement --glue

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 03:22:30 +02:00
Adrestie 053624b061 mod-forever-ui: l'autolancement du familier reste celui du client
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>
2026-09-22 01:43:49 +02:00
Adrestie 10512fed73 mod-forever-ui: l'anneau tourne par SetTexCoord, pas par SetRotation
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>
2026-09-22 01:37:08 +02:00
Adrestie 58d6e119c5 mod-forever-ui: la barre du familier descend et se range apres les postures
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>
2026-09-22 01:27:34 +02:00
Adrestie b1553e1d4d mod-forever-ui: effacer l'art d'epoque de la barre du familier
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>
2026-09-22 01:24:22 +02:00
Adrestie 245044ec4f mod-forever-ui: la barre du familier
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>
2026-09-22 01:21:38 +02:00