Files
moon-well-ui/data/addon/ForeverUI/Achievements.lua
T
Adrestie b53f36a794 Fenetres secondaires, inspection, JcJ servi par le serveur, Deshonore
- hauts faits (Achievements.lua) : camelot n'en a pas, la fenetre du
  client se deplace par son en-tete, place gardee et reposee apres
  UpdateUIPanelPositions
- tutoriel (Tutorial.lua) : fenetre, bouton d'alerte et compteur masques
- horloge (TimeManager.lua) : ButtonFrameTemplate 220 x 240, globe en
  portrait, encart, menus d'alarme en style 1 (Gb.MenuStyle1), case
  d'alarme
- carte de zone (ZoneMap.lua) : cadre battlefieldminimap-border, croix
  rouge, alpha suivant l'opacite (image retiree : le client la repose)
- cabine d'essayage (DressUp.lua) : ButtonFrameTemplate 450 x 545, fond de
  race, fleches et rotation a la souris
- inspection (Inspect.lua) : 338 x 424, deplacable, portrait 48, onglets
  lateraux, page du personnage a la camelot (cadre Char-Paperdoll), page
  JcJ en cartes avec en tete le nom du rang et l'embleme de la faction
  sous son insigne, Civilian sans rang ni donnees ; bouton Talents
- talents de l'inspecte (Talents.lua) : notre fenetre en lecture seule,
  compacte (colonnes de 260, sans portes ni bande du bas), sans recherche
  ni points ; elle ne suit pas l'inspection
- JcJ (PvPTab.lua) : seuils de rang lus du serveur (canal d'addon
  PVPTITLES de mod-pvp-titles-ext : RANKS, REQ), sans serveur les seules
  victoires ; etat Deshonore (DISHONOR) : rang et temps restant, blason
  brise de la faction a la place de l'embleme
- debuff Deshonore dessine par ForeverUI en tete des affaiblissements
  (Buffs.lua), aucun sort ni DBC requis
- art : blasons brises honor-dishonored-alliance / -horde (cuits par
  tools/cuire_deshonneur.py), battlefieldminimap, char-paperdoll-*
- /fui croix : temoin de la croix de la feuille de personnage
- banc : inspection, talents compacts, tete JcJ, canal du serveur, blason
  brise, debuff dessine, temoin de la croix
- README : lignes JcJ, fenetres secondaires, ameliorations et affaiblissements

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:33:28 +02:00

87 lines
2.9 KiB
Lua

-- ForeverUI : la fenetre des hauts faits, deplacable (demande de
-- l'utilisateur, 2026-09-28 : « Hauts faits : ils n'existent pas dans
-- Camelot, rend juste la fenetre deplacable »).
--
-- RELEVE -- CE QUE LE CLIENT CHARGE (Blizzard_AchievementUI.xml / .lua de
-- 3.3.5, charge a la demande) :
-- AchievementFrame 768 x 500, non deplacable ; AchievementFrameHeader
-- 726 x 106 (souris active), pose au-dessus de la fenetre ;
-- Blizzard_AchievementUI.lua, ligne 1 : UIPanelWindows["AchievementFrame"]
-- = { area = "doublewide", pushable = 0, width = 840, xoffset = 80,
-- whileDead = 1 } -- le systeme de panneaux la repose a gauche
-- (FramePositionDelegate:UpdateUIPanelPositions, UIParent.lua) a chaque
-- ouverture ou fermeture d'un panneau.
--
-- RELEVE -- CAMELOT : blizzard_achievementui.toc ne charge ses fichiers que
-- pour mainline, tbc, wrath, cata et mists -- pas camelot.
--
-- CE QUI EST FAIT. La fenetre garde l'allure de 3.3.5 et reste un panneau
-- (Echap la ferme, elle pousse les autres comme avant). Son en-tete sert de
-- poignee ; la place est retenue dans ForeverUIDB.positions (cle
-- « hautsfaits », haut-centre de la fenetre, comme Superposition.lua) et
-- reposee apres le systeme de panneaux (UpdateUIPanelPositions) et a
-- l'ouverture. Rien n'y est securise : le deplacement marche aussi en
-- combat.
local ForeverUI = ForeverUI or {}
_G.ForeverUI = ForeverUI
local A = {}
ForeverUI.HautsFaits = A
local CLE = "hautsfaits"
local function positions()
ForeverUIDB = ForeverUIDB or {}
ForeverUIDB.positions = ForeverUIDB.positions or {}
return ForeverUIDB.positions
end
function A.Reposer()
local f = AchievementFrame
local p = positions()[CLE]
if not f or not p then return end
f:ClearAllPoints()
f:SetPoint("TOP", UIParent, "TOP", p.x, p.y)
end
function A.Habiller()
local f = AchievementFrame
local poignee = AchievementFrameHeader
if not f or not poignee or f.foreverDeplacable then return end
f.foreverDeplacable = true
f:SetMovable(true)
f:SetClampedToScreen(true)
poignee:EnableMouse(true)
poignee:RegisterForDrag("LeftButton")
poignee:SetScript("OnDragStart", function()
f:StartMoving()
end)
poignee:SetScript("OnDragStop", function()
f:StopMovingOrSizing()
local cx = f:GetCenter()
local ux = UIParent:GetCenter()
local x, y = cx - ux, f:GetTop() - UIParent:GetTop()
f:ClearAllPoints()
f:SetPoint("TOP", UIParent, "TOP", x, y)
-- la place est a nous : le client ne la retient pas en plus
if f.SetUserPlaced then f:SetUserPlaced(false) end
positions()[CLE] = { x = x, y = y }
end)
f:HookScript("OnShow", A.Reposer)
hooksecurefunc("UpdateUIPanelPositions", function()
if f:IsShown() then A.Reposer() end
end)
A.Reposer()
end
A.Habiller()
local veille = CreateFrame("Frame")
veille:RegisterEvent("ADDON_LOADED")
veille:SetScript("OnEvent", function(_, _, nom)
if nom == "Blizzard_AchievementUI" then
A.Habiller()
end
end)