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>
This commit is contained in:
@@ -780,6 +780,7 @@ local CASE_INTITULE_L = 158
|
||||
local CASE_INTITULE_X = 2
|
||||
|
||||
local ATLAS_CASE = "checkbox-minimal"
|
||||
local ATLAS_COCHE = "checkmark-minimal"
|
||||
local ATLAS_SEPARATEUR = "ui-character-info-scrollline"
|
||||
local COCHE = "Interface\\Buttons\\UI-CheckBox-SwordCheck"
|
||||
local COCHE_COTE = 32
|
||||
@@ -790,13 +791,23 @@ local detail
|
||||
-- LES TROIS CASES DU CLIENT, reposees et rhabillees. Leur logique reste la
|
||||
-- leur : ce sont elles qui declarent la guerre, rangent une faction parmi
|
||||
-- les inactives, ou la suivent sur la barre du bas.
|
||||
-- LES EPEES N'APPARTIENNENT QU'A LA GUERRE.
|
||||
--
|
||||
-- RELEVE -- camelot/ReputationFrame.xml, les trois CheckButton. Toutes ont
|
||||
-- le meme fond, checkbox-minimal, mais pas la meme coche :
|
||||
-- AtWarCheckbox Interface/Buttons/UI-CheckBox-SwordCheck, 32 x 32
|
||||
-- posee a TOPLEFT (3, -5) -- deux epees croisees
|
||||
-- MakeInactiveCheckbox checkmark-minimal
|
||||
-- WatchFactionCheckbox checkmark-minimal
|
||||
-- Les deux dernieres ont aussi checkmark-minimal-disabled quand la case est
|
||||
-- grisee ; 3.3.5 n'en grise aucune ici, on n'en a pas besoin.
|
||||
local CASES = {
|
||||
{ nom = "ReputationDetailAtWarCheckBox", rouge = true },
|
||||
{ nom = "ReputationDetailAtWarCheckBox", rouge = true, epees = true },
|
||||
{ nom = "ReputationDetailInactiveCheckBox" },
|
||||
{ nom = "ReputationDetailMainScreenCheckBox" },
|
||||
}
|
||||
|
||||
local function habillerCase(case, rouge)
|
||||
local function habillerCase(case, rouge, epees)
|
||||
if not case or case.foreverHabillee then
|
||||
return
|
||||
end
|
||||
@@ -816,13 +827,19 @@ local function habillerCase(case, rouge)
|
||||
ForeverUI.SetAtlas(fond, ATLAS_CASE)
|
||||
fond:SetPoint("CENTER", case, "CENTER", 0, 0)
|
||||
|
||||
-- LA COCHE EST UN FICHIER, pas un atlas : camelot lui donne
|
||||
-- UI-CheckBox-SwordCheck, que 3.3.5 possede deja.
|
||||
-- LA COCHE. Celle de la guerre est un FICHIER -- deux epees croisees,
|
||||
-- UI-CheckBox-SwordCheck, que 3.3.5 possede deja -- posee en 32 a
|
||||
-- (3, -5). Les deux autres sont un atlas, checkmark-minimal, centre.
|
||||
local coche = case:CreateTexture(nil, "OVERLAY")
|
||||
coche:SetTexture(COCHE)
|
||||
coche:SetWidth(COCHE_COTE)
|
||||
coche:SetHeight(COCHE_COTE)
|
||||
coche:SetPoint("TOPLEFT", case, "TOPLEFT", COCHE_X, COCHE_Y)
|
||||
if epees then
|
||||
coche:SetTexture(COCHE)
|
||||
coche:SetWidth(COCHE_COTE)
|
||||
coche:SetHeight(COCHE_COTE)
|
||||
coche:SetPoint("TOPLEFT", case, "TOPLEFT", COCHE_X, COCHE_Y)
|
||||
else
|
||||
ForeverUI.SetAtlas(coche, ATLAS_COCHE)
|
||||
coche:SetPoint("CENTER", case, "CENTER", 0, 0)
|
||||
end
|
||||
case.foreverCoche = coche
|
||||
|
||||
local intitule = _G[case:GetName() .. "Text"]
|
||||
@@ -1021,7 +1038,7 @@ local function monterDetail(hote)
|
||||
for _, decrit in ipairs(CASES) do
|
||||
local case = _G[decrit.nom]
|
||||
if case then
|
||||
habillerCase(case, decrit.rouge)
|
||||
habillerCase(case, decrit.rouge, decrit.epees)
|
||||
case:SetParent(cadre)
|
||||
case:ClearAllPoints()
|
||||
if precedente then
|
||||
|
||||
@@ -752,6 +752,7 @@ toujours le client qui tient la liste, la sélection et les infobulles.
|
||||
| **L'icône d'onglet perdait un tiers de sa surface** | `fillToInterior` est vrai pour ces onglets, et `UpdateIconInterior` en tire deux gestes : `SetTexCoord(0.03125, 0.96875, …)` et `SetSize(extent, extent)` avec `interiorExtent` valant 50 par défaut. L'onglet faisant 55 de large, l'icône en prend 50 — tout l'intérieur, moins le bord. Elle était à 32. |
|
||||
| **Le masque est cuit dans l'image** | La source découpe l'icône par `common-sidetab-mask`, une `MaskTexture` que 3.3.5 n'a pas. Ce que le client ne sait pas faire à l'écran, `tools/cuire_masque.py` le fait avant : l'alpha du masque est multiplié dans celui de l'icône. La géométrie vient de la source, pas d'une estimation — onglet 55 × 55, masque 55 × 60 ancré au centre, icône 50 × 50 en (−3, 0) rognée à 0,03125 — et hors du masque le wrap `CLAMPTOBLACKADDITIVE` donne zéro. Deux dossiers : `icons/` garde l'export brut, qui est la provenance et l'entrée de la cuisson ; `TabIcons/` porte les versions cuites, et c'est celles-là qu'on affiche. Relancer l'outil refait les secondes à partir des premières, sans wow.export. |
|
||||
| **L'onglet de réputation, repris de camelot** | `ReputationFrame.xml` donne la liste — `TOPLEFT (10, −40)` et `BOTTOMRIGHT (−25, 15)` sur le volet gauche, deux traits `UI-Character-Info-ScrollLine-Long` centrés sur son haut et son bas — et les gabarits : entrée de 30, barre de 160 × 29 héritée de `ColoredProgressBarTemplate`, fond `common-stat-bar-bg`, remplissage `common-stat-bar-white` **teinté** et haut de 15. 3.3.5 a les mêmes pièces sous d'autres noms : quinze `ReputationBar<i>` ancrées une fois dans le XML, que `ReputationFrame_Update` ne fait que remplir — on peut donc les reposer une fois pour toutes, et se greffer après lui pour teindre. |
|
||||
| **Les épées n'appartiennent qu'à la guerre** | Les trois cases partagent le même fond, `checkbox-minimal`, mais pas la même coche : `AtWarCheckbox` porte `Interface/Buttons/UI-CheckBox-SwordCheck` — deux épées croisées, en 32 posées à `(3, −5)` — tandis que `MakeInactiveCheckbox` et `WatchFactionCheckbox` prennent `checkmark-minimal`, centré. Les épées avaient été données aux trois. |
|
||||
| **Un texte ne revient à la ligne que s'il a une boîte** | La description n'avait que son bord haut et ses deux côtés : sans bas, une description un peu longue n'avait nulle part où aller et disparaissait entièrement. Elle a maintenant ses quatre bords — du bas de la jauge au haut des trois cases — et se replie dedans. |
|
||||
| **`GameFontNormal` est doré, pas blanc** | camelot déclare `fontName = GameFontNormal` sur son `ScrollingFontTemplate`, mais en 3.3.5 cet objet de police est celui des **titres**, en or. Le blanc y est `GameFontHighlight`, et c'est ce que montre la référence. |
|
||||
| **Un `<Backdrop>` n'est pas une région** | `ReputationDetailFrame` porte un fond de fenêtre déclaré en `<Backdrop>` — `UI-DialogBox-Background` et `UI-DialogBox-Border`, avec ses marges et sa taille de tuile. Il ne figure pas dans `GetRegions` : le balayage des textures ne l'atteignait pas et son cadre gris restait à l'écran. `SetBackdrop(nil)` l'enlève, comme pour les listes de menu. **À vérifier sur tout cadre du client que l'on reprend** : les deux façons de poser un fond demandent deux gestes différents. |
|
||||
|
||||
@@ -2827,6 +2827,17 @@ def main():
|
||||
assert cases[1].points[1][5] == -2, "BOTTOMLEFT (0, -2)"
|
||||
assert all(c.shown for c in cases), "les trois paraissent pour une faction"
|
||||
|
||||
# LES EPEES N APPARTIENNENT QU A LA GUERRE : les deux autres cases
|
||||
# portent checkmark-minimal, comme la source le declare.
|
||||
print(" coches : guerre=%s | inactive=%s | barre=%s" % (
|
||||
cases[0].foreverCoche.texture, cases[1].foreverCoche.texture,
|
||||
cases[2].foreverCoche.texture))
|
||||
assert "SwordCheck" in (cases[0].foreverCoche.texture or ""), "At War garde ses deux epees"
|
||||
for c in (cases[1], cases[2]):
|
||||
assert "SwordCheck" not in (c.foreverCoche.texture or ""), "Move to Inactive et Show as Experience Bar prennent une coche"
|
||||
assert c.foreverCoche.points[1][1] == "CENTER", "checkmark-minimal se centre sur la case"
|
||||
assert cases[0].foreverCoche.width == 32, "la coche de guerre fait 32, posee a (3, -5)"
|
||||
|
||||
# UN EN-TETE N A PAS DE DETAIL.
|
||||
lua.execute("SetSelectedFaction(1)")
|
||||
g.ForeverUI.ReputationDetail()
|
||||
|
||||
Reference in New Issue
Block a user