diff --git a/data/addon/ForeverUI/AtlasUtil.lua b/data/addon/ForeverUI/AtlasUtil.lua index 788d063..6cac0c0 100644 --- a/data/addon/ForeverUI/AtlasUtil.lua +++ b/data/addon/ForeverUI/AtlasUtil.lua @@ -225,13 +225,22 @@ end -- camelot/NineSliceLayoutOverrides.lua (coin haut droit x -2, coins bas -- y = -8). -- --- PANEL_BACKGROUND_COLOR est une couleur du client, absente du code extrait : --- elle est MESUREE dans l'art, au point ou le fond deborde sous le coin de --- metal (0, 0, 0, 168/255). +-- PANEL_BACKGROUND_COLOR est une couleur du client, absente du code extrait. +-- Elle est MESUREE sur la capture du vrai client (docs/reference) : le fond +-- d'un panneau y vaut (16, 14, 12) et il est OPAQUE -- le decor ne passe pas +-- au travers. Un fond translucide fait virer au bleu les ecarts entre les +-- cases d'un sac, ce qui a ete le premier ecart visible. -- -- Les bords sont ETIRES et non paves : une texture d'atlas en pavage etale la -- feuille entiere. -local PANNEAU_FOND = { 0, 0, 0, 168 / 255 } +local PANNEAU_FOND = { 16 / 255, 14 / 255, 12 / 255, 1 } + +-- L'art de metal se pose en BORDER et non en OVERLAY comme chez le client +-- moderne : celui-ci range son portrait et son titre dans des cadres fils a +-- niveau eleve, alors que 3.3.5 en fait de simples regions du cadre +-- (portrait en BACKGROUND, titre en ARTWORK). En OVERLAY, le metal les +-- recouvrait tous les deux. +local PANNEAU_COUCHE = "BORDER" local PANNEAU_COINS = { { cle = "coinHautGauche", nom = "ui-frame-portraitmetal-cornertopleftsmall", @@ -278,7 +287,7 @@ function ForeverUI.SetPanelArt(frame) -- 2. l'encadrement de metal for _, coin in ipairs(PANNEAU_COINS) do - local texture = frame:CreateTexture(nil, "OVERLAY") + local texture = frame:CreateTexture(nil, PANNEAU_COUCHE) if ForeverUI.SetAtlas(texture, coin.nom) then texture:SetPoint(coin.point, frame, coin.point, coin.x, coin.y) p[coin.cle] = texture @@ -288,7 +297,7 @@ function ForeverUI.SetPanelArt(frame) end local function bord(nom, point1, cible1, relatif1, point2, cible2, relatif2) - local texture = frame:CreateTexture(nil, "OVERLAY") + local texture = frame:CreateTexture(nil, PANNEAU_COUCHE) if not ForeverUI.SetAtlas(texture, nom) then texture:Hide() return nil diff --git a/data/addon/ForeverUI/Bags.lua b/data/addon/ForeverUI/Bags.lua index 3fb2250..2301023 100644 --- a/data/addon/ForeverUI/Bags.lua +++ b/data/addon/ForeverUI/Bags.lua @@ -110,6 +110,14 @@ local AIR_GRILLE_BOURSE = 1 local CADRE_QUALITE = "Interface" .. SEP .. "ForeverUI" .. SEP .. "common" .. SEP .. "whiteiconframe" +-- MESURE SUR LA CAPTURE. camelot pose un cadre sur CHAQUE case, pleine ou +-- vide : gris sombre, bords entre 25 et 49, coins vers 100. L'image porte ces +-- memes valeurs a 255 et 140 : la teinte vaut donc 0,39. La couleur de +-- qualite ne prend le relais qu'a partir de peu commun -- les objets communs +-- de la capture gardent le cadre gris. +local CADRE_GRIS = 0.39 +local QUALITE_TEINTEE = 2 + local RANGER = BAG_CLEANUP_BAGS or "Ranger les sacs" local RANGER_AIDE = BAG_CLEANUP_BAGS_DESCRIPTION or "Reunit les piles et remet les objets en ordre." @@ -156,7 +164,7 @@ local function habillerBouton(bouton) local contour = bouton:CreateTexture(nil, "OVERLAY") contour:SetTexture(CADRE_QUALITE) contour:SetAllPoints(bouton) - contour:Hide() + contour:SetVertexColor(CADRE_GRIS, CADRE_GRIS, CADRE_GRIS) bouton.foreverContour = contour -- Le voile de recherche : la source le declare sur le bouton d'objet @@ -296,16 +304,19 @@ function Recherche.Appliquer(cadre) bouton.foreverVoile:Hide() end + -- Le cadre est toujours la ; seule sa teinte change, et seulement + -- a partir de peu commun. local contour = bouton.foreverContour if contour then local qualite = select(4, GetContainerItemInfo(sac, emplacement)) - local couleur = qualite and ITEM_QUALITY_COLORS and ITEM_QUALITY_COLORS[qualite] - if lien and couleur then + local couleur = lien and qualite and qualite >= QUALITE_TEINTEE + and ITEM_QUALITY_COLORS and ITEM_QUALITY_COLORS[qualite] + if couleur then contour:SetVertexColor(couleur.r, couleur.g, couleur.b) - contour:Show() else - contour:Hide() + contour:SetVertexColor(CADRE_GRIS, CADRE_GRIS, CADRE_GRIS) end + contour:Show() end end end diff --git a/docs/reference/rendu_papota_sac_20260921.png b/docs/reference/rendu_papota_sac_20260921.png new file mode 100644 index 0000000..155de52 Binary files /dev/null and b/docs/reference/rendu_papota_sac_20260921.png differ diff --git a/tools/test_addon.py b/tools/test_addon.py index e55669c..56de143 100644 --- a/tools/test_addon.py +++ b/tools/test_addon.py @@ -1193,11 +1193,13 @@ def main(): contour = g.ContainerFrame1Item4.foreverContour vide = g.ContainerFrame1Item3.foreverContour - print(" contour : case pleine visible=%s teinte=%s | case vide visible=%s" % ( - contour.shown, [round(v, 2) for v in contour.vertex.values()] if contour.vertex else None, - vide.shown)) - assert contour.shown, "un objet n'a pas de contour" - assert not vide.shown, "une case vide a un contour" + gris = [round(v, 2) for v in vide.vertex.values()] if vide.vertex else None + teinte = [round(v, 2) for v in contour.vertex.values()] if contour.vertex else None + print(" contour : case pleine %s | case vide %s (les deux visibles : %s et %s)" % ( + teinte, gris, contour.shown, vide.shown)) + assert contour.shown and vide.shown, "camelot pose un cadre sur chaque case" + assert gris and abs(gris[0] - 0.39) < 0.01, "la case vide n'a pas le gris de la capture" + assert teinte and teinte != gris, "la qualite ne teinte pas le cadre" # le champ et le bouton de tri ne se montrent que sur le sac principal g.ForeverUI.BagsLayout()