Files
moon-well-ui/data/addon/ForeverUI/GameMenu.lua
T
Adrestie e6f4b0c704 Infobulles, menu Echap et reglages a la DA de camelot
- infobulles (Tooltips.lua) : decoupe en neuf TooltipDefaultLayout a la
  place du Backdrop de 3.3.5, couleurs du client suivies, infobulles des
  addons reprises, bandeau de comparaison (tooltip-compare-label), croix
  rouge d'ItemRefTooltip
- gabarits communs (Gabarits.lua) : portage en jeu des gabarits valides de
  l'accueil -- cadre de dialogue, en-tete, fenetre translucide, encart,
  croix, boutons rouge / de panneau / argente, barre MinimalScrollBar
  posee sur celle du client, cadre interieur, recopie de texte
- menu Echap (GameMenu.lua) : DialogBorder, en-tete, boutons rouges en
  colonne (ecarts de 20)
- Video, Son et voix, Interface (Settings.lua) : fenetre de camelot, croix
  = HideUIPanel, listes de categories, cases, curseurs, cadres de groupe,
  menus deroulants style 2 (DropDown.lua), onglets MinimalTab ; cadre
  interieur Options_InnerFrame pour les trois fenetres ; Interface a la
  disposition de camelot (listes a -76, fenetre +36)
- raccourcis (Bindings.lua) : fenetre calee sur l'art visible de 3.3.5,
  boutons argentes et lisere du choisi, textes recopies au-dessus
- macros (Macros.lua) : disposition de camelot (338 x 424, portrait,
  onglets du haut, grille 6 x), choix d'icone 525 x 495 en rangees de dix
- configuration du chat (ChatConfig.lua) : DialogBorder, boites en
  decoupe d'infobulle aux couleurs du client, lignes creees ensuite
  reprises, liste des filtres sans lisere
- selecteur de couleur (ColorPicker.lua) : 388 / 331 x 210, places de
  camelot, curseur d'opacite du client en colonne alpha (damier, degrade,
  fleches) ; OpacityFrame en DialogBorder
- art : tooltiplabel, commonbuttonsdropdown, ui-silver-button-select,
  colorpicker (6 entrees d'atlas ajoutees, aucune modifiee)
- banc : vrais types de cadre, OnEnable / OnDisable, OnValueChanged,
  couleurs de Backdrop, degrades ; faux et essais des fenetres reprises

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

138 lines
4.7 KiB
Lua

-- ForeverUI : le menu Echap (GameMenuFrame), a la DA de camelot (demande de
-- l'utilisateur, 2026-09-28 : « fait le menu et reglages », etape 1).
--
-- RELEVE -- CE QUE LE CLIENT CHARGE (GameMenuFrame.xml de 3.3.5) : 195 x 240
-- au CENTRE, strate DIALOG ; <Backdrop> UI-DialogBox, en-tete
-- UI-DialogBox-Header et un texte SANS NOM (GameFontNormal, MAIN_MENU) ;
-- boutons GameMenuButtonTemplate a 1 l'un sous l'autre : Video, Sound &
-- Voice, Interface, (Mac, cache hors Mac), Key Bindings, Macros, (Ratings,
-- cache), Logout, Exit Game, puis Return to Game a 16. Logout et Exit Game se
-- grisent a leur OnShow quand une deconnexion est en cours.
-- Deja ajoutes au menu : l'AddOns d'ACP (patch-5.mpq) sous Macros, qui a
-- son OnShow repose Log Out sous lui et grandit le menu de 25 ; la demande
-- d'aide de ForeverUI (BottomBar.lua, 26/09), entre deux espaces.
--
-- RELEVE -- CAMELOT : blizzard_gamemenu/shared/gamemenuframe.xml / .lua et
-- blizzard_sharedxml/mainline/frame/mainmenuframetemplates.xml / shared/
-- frame/mainmenuframetemplates.lua -- MainMenuFrameTemplate :
-- colonne verticale : marges 48 (haut), 34 (bas), 28 (gauche et droite),
-- ecart 0 ; une section ajoute 20 au-dessus du bouton qui la commence ;
-- Close (Return to Game) precede d'une section ;
-- DialogBorderTemplate ; en-tete DialogHeaderTemplate a TOP (0, 11), texte
-- MAINMENU_BUTTON, police GameFontNormalMed1 (dialogHeaderFont du
-- GameMenuFrame) ;
-- boutons MainMenuFrameButtonTemplate : BigRedThreeSliceButtonTemplate
-- (128-RedButton) 200 x 36, GameFontHighlightLarge / DisableLarge.
--
-- CE QUI DIFFERE, ET POURQUOI. « 3.3.5 rhabillee » : les boutons restent
-- ceux du client, dans son ordre -- leur clic est securise (Logout, Quit),
-- un bouton a nous ne le serait pas. Les sections sont celles du menu
-- valide le 26/09 (reglages, Macros et AddOns | aide | Log Out et Exit Game |
-- Return to Game), avec l'ecart de camelot : 20 (il etait de 16, celui que
-- le client laissait avant Return to Game).
local ForeverUI = ForeverUI or {}
_G.ForeverUI = ForeverUI
local Gb = ForeverUI.Gabarits
local M = {}
ForeverUI.GameMenu = M
local N = {
haut = 48, bas = 34, cote = 28,
bouton = { 200, 36 },
section = 20,
}
-- GameFontNormalMed1 de camelot : SystemFont_Med2 (FRIZQT 13), ombre (1, -1),
-- jaune
local function policeEnTete()
local f = CreateFont("ForeverUIGameMenuHeaderFont")
f:SetFontObject(SystemFont_Med2 or GameFontNormal)
f:SetShadowOffset(1, -1)
f:SetShadowColor(0, 0, 0)
f:SetTextColor(1, 0.82, 0)
return f
end
-- les boutons, de haut en bas ; section : un ecart au-dessus
local function entrees()
return {
{ GameMenuButtonOptions },
{ GameMenuButtonSoundOptions },
{ GameMenuButtonMacOptions },
{ GameMenuButtonUIOptions },
{ GameMenuButtonKeybindings },
{ GameMenuButtonMacros },
{ GameMenuButtonRatings },
{ _G["GameMenuButtonAddOns"] },
{ _G["ForeverUIGameMenuButtonHelp"], section = true },
{ GameMenuButtonLogout, section = true },
{ GameMenuButtonQuit },
{ GameMenuButtonContinue, section = true },
}
end
local POLICES = { GameFontHighlightLarge, GameFontHighlightLarge, GameFontDisableLarge }
local function habillerBouton(b)
if b.foreverTrois then return end
b:SetWidth(N.bouton[1])
b:SetHeight(N.bouton[2])
Gb.BoutonTroisTranches(b, "128-redbutton", POLICES)
b:HookScript("OnShow", M.Disposer)
end
-- la colonne : chaque bouton montre a sa place, puis la taille du menu.
-- Rejouee a chaque OnShow d'un bouton : l'AddOns d'ACP et Log Out (quand
-- Ratings est montre) reposent Log Out au leur, apres le menu.
function M.Disposer()
local f = GameMenuFrame
local y = N.haut
local enAttente = false
for _, e in ipairs(entrees()) do
local b = e[1]
if e.section then
enAttente = true
end
if b and b:IsShown() then
habillerBouton(b)
if enAttente then
y = y + N.section
enAttente = false
end
b:ClearAllPoints()
b:SetPoint("TOPLEFT", f, "TOPLEFT", N.cote, -y)
y = y + N.bouton[2]
end
end
f:SetWidth(N.cote + N.bouton[1] + N.cote)
f:SetHeight(y + N.bas)
end
if GameMenuFrame then
local f = GameMenuFrame
f:SetBackdrop(nil)
if GameMenuFrameHeader then
GameMenuFrameHeader:SetAlpha(0)
end
-- le titre du client n'a pas de nom : c'est le texte MAIN_MENU du cadre
for _, r in ipairs({ f:GetRegions() }) do
if r:GetObjectType() == "FontString" and r:GetText() == MAIN_MENU then
r:SetAlpha(0)
end
end
Gb.CadreDialogue(f)
M.entete = Gb.EnTete(f, MAINMENU_BUTTON, policeEnTete())
for _, e in ipairs(entrees()) do
if e[1] then
habillerBouton(e[1])
end
end
-- un bouton arrive apres nous (l'AddOns d'ACP) est habille par la
-- colonne, a la premiere ouverture
f:HookScript("OnShow", M.Disposer)
M.Disposer()
end