contrebasse@0: --[[ TODO : contrebasse@0: - Changer la couleur pour toutes les fenêtres de quête (possible ?) contrebasse@0: - Chercher le texte pour les couleurs à partir de la somme des longueurs de texte précédents (incrémental), compliqué ! contrebasse@0: - Modifier les variables statiques directement dans la fonction Paragraphes() (Bof...) contrebasse@0: - Traduction contrebasse@0: - Clic droit pour phrase perso contrebasse@0: - Shif clic droit pour emote contrebasse@0: - griser le choix des couleurs si pas de coloration contrebasse@0: - reset des options (virer les couleurs foireuses...) contrebasse@0: --]] contrebasse@0: contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Déclarations de variables contrebasse@0: -- contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Variables statiques contrebasse@0: -- contrebasse@0: local target_name = "" -- "" vide ou nom du npc contrebasse@0: local text_table = {} -- table du texte à dire contrebasse@0: local text_full = '' contrebasse@0: local i_phrase = 1 -- indice de la prochaine phrase à dire contrebasse@0: --local char_dits = 0 -- nombre de caractères prononcés, pour améliorer la recherche lors de la coloration contrebasse@0: local max_phrase = 0 -- indice du nombre de phrases à dire contrebasse@0: local gossip_button, quest_button, current_button contrebasse@0: local TextFrame contrebasse@0: contrebasse@0: -- contrebasse@0: -- Fonctions locales pour accélérer l'exécution contrebasse@0: -- contrebasse@0: local _G = _G contrebasse@0: local GetUnitName = GetUnitName contrebasse@0: local GetQuestText = GetQuestText contrebasse@0: local GetProgressText = GetProgressText contrebasse@0: local GetGossipText = GetGossipText contrebasse@0: local GetRewardText = GetRewardText contrebasse@0: local DEFAULT_CHAT_FRAME = DEFAULT_CHAT_FRAME contrebasse@0: local UIErrorsFrame,UIErrorsFrame_OnEvent = UIErrorsFrame,UIErrorsFrame_OnEvent contrebasse@0: local SendChatMessage = SendChatMessage contrebasse@0: local GameTooltip = GameTooltip contrebasse@0: local CreateFrame = CreateFrame contrebasse@0: local IsShiftKeyDown,IsControlKeyDown = IsShiftKeyDown,IsControlKeyDown contrebasse@0: local GossipFrame,QuestFrame = GossipFrame,QuestFrame contrebasse@0: local GossipGreetingText = GossipGreetingText contrebasse@0: local QuestProgressText = QuestProgressText contrebasse@0: local GameTooltip_SetDefaultAnchor = GameTooltip_SetDefaultAnchor; contrebasse@0: contrebasse@0: local tonumber = tonumber; contrebasse@0: local string = string; contrebasse@0: local string_format = string.format; contrebasse@0: contrebasse@0: local LibStub = LibStub; contrebasse@0: contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Fonctions de debug et warning contrebasse@0: -- contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- fonction qui affiche des messages de debug contrebasse@0: -- contrebasse@0: local function DEBUG(msg) contrebasse@0: --if true then return end contrebasse@0: if not msg then msg="nil" end contrebasse@0: DEFAULT_CHAT_FRAME:AddMessage("(DEBUG) " .. msg); contrebasse@0: end contrebasse@0: contrebasse@0: local function Warn(msg) contrebasse@0: if not msg then return end contrebasse@0: --DEFAULT_CHAT_FRAME:AddMessage("(SayIt) "..msg); contrebasse@0: local event = "UI_INFO_MESSAGE" contrebasse@0: UIErrorsFrame_OnEvent(UIErrorsFrame, event, msg) contrebasse@0: end contrebasse@0: contrebasse@0: contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Analyse de texte contrebasse@0: -- contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Function qui sépare les paragraphes/phrases d'un texte en éléments de tableau contrebasse@0: -- contrebasse@0: local function Paragraphes(txt) contrebasse@0: -- Si pas de texte, pas la peine de continuer contrebasse@0: if not txt or txt=="" then contrebasse@0: return {}, 0 contrebasse@0: end contrebasse@0: contrebasse@0: local text = {} contrebasse@0: local p = 1 contrebasse@0: for paragraph in txt:gmatch("[^\r\n]+") do contrebasse@0: -- On enlève au texte le double '|', le nom du Npc le " dit : " et un caractère en plus (fin de string ?) contrebasse@0: contrebasse@0: -- Est-ce une émote ? contrebasse@0: local e = (paragraph:sub(1,1)=="<" and paragraph:sub(-1)==">") contrebasse@0: local t,Nchar_supp contrebasse@0: if e then contrebasse@0: Nchar_supp = 2 contrebasse@0: t = paragraph:sub(2,-2) -- on vire les < > contrebasse@0: else contrebasse@0: Nchar_supp = 9+target_name:len() contrebasse@0: t = paragraph contrebasse@0: end contrebasse@0: contrebasse@0: -- Coupe par phrase contrebasse@0: -- [.!?]+ : au moins un signe de ponctuation, permet de gérer ... !? ?! par exemple contrebasse@0: -- [^%s][^%s]%s* : le dernier mot de la phrase dois avoir au moins 2 caractères, pour éviter de couper "M. Dupont" (pas parfait mais mieux que rien) contrebasse@0: -- on transforme chaque phrase en paragraphe, et on repasse le test précédent contrebasse@0: for tt in t:gsub('([^%s][^%s]%s*[%.%!%?]+)(%s+)(%u)','%1\n%3'):gmatch('[^\r\n]+') do --for tt in t:gmatch('(.-[.!?]+)%s*') do contrebasse@0: text[p] = { -- Le texte est coupé au cas où... contrebasse@0: ["texte"] = tt:sub(1,254-Nchar_supp), -- ça devrait être 255, mais ça ne passe pas... contrebasse@0: ["emote"] = e } contrebasse@0: p = p+1 contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: return text, p-1 contrebasse@0: end contrebasse@0: contrebasse@0: -- contrebasse@0: -- Coloration du texte de la fenêtre contrebasse@0: -- contrebasse@0: local cDit = "|cff".."606060" -- gris clair contrebasse@0: local cJusteDit = "|cff".."7f0000" -- gris foncé contrebasse@0: local cADire = "|cff".."00007f" -- jaunasse contrebasse@0: local cNonDit = "|cff".."202020" -- noir contrebasse@0: contrebasse@0: local function SpecialChar(txt) contrebasse@0: return txt and txt:gsub('([%(%)%.%+%-%*%?%[%^%$%]])','%%%1') or '' contrebasse@0: end contrebasse@0: local function ColorieTexte(txt) contrebasse@0: --print('______') contrebasse@0: local tJusteDit,tADire contrebasse@0: if i_phrase > 1 then contrebasse@0: tJusteDit = text_table[i_phrase-1].texte contrebasse@0: end contrebasse@0: if i_phrase <= max_phrase then contrebasse@0: tADire = text_table[i_phrase].texte contrebasse@0: end contrebasse@0: contrebasse@0: --print(txt) contrebasse@0: --print('^(.*)('..SpecialChar(tJusteDit)..')(.-)('..SpecialChar(tADire)..')(.*)$') contrebasse@0: local _,_,tDit,tJusteDit2,space,tADire2,tNonDit = txt:find('^(.-)('..SpecialChar(tJusteDit)..')(.-)('..SpecialChar(tADire)..')(.*)$') --,char_dits) contrebasse@0: contrebasse@0: --print('tDit:'..(tDit or '')) contrebasse@0: --print('tJusteDit2:'..(tJusteDit2 or '')) contrebasse@0: --print('tADire2:'..(tADire2 or '')) contrebasse@0: --print('tNonDit:'..(tNonDit or '')) contrebasse@0: contrebasse@0: return (tDit and SayItOptions.cDit..tDit..'|r' or '' ).. contrebasse@0: (tJusteDit and SayItOptions.cJusteDit..tJusteDit..'|r' or '' ).. contrebasse@0: (space or '')..(tADire and SayItOptions.cADire..tADire..'|r' or '' ).. contrebasse@0: (tNonDit and SayItOptions.cNonDit..tNonDit..'|r' or '' ) contrebasse@0: end contrebasse@0: contrebasse@0: -- contrebasse@0: -- Faire parler un Npc contrebasse@0: -- contrebasse@0: local function NpcDit(txt) contrebasse@0: if not txt then return end contrebasse@0: if not txt.emote then contrebasse@0: SendChatMessage("\124\124 "..GetUnitName("Npc").." dit : ".. contrebasse@0: txt.texte,"EMOTE") contrebasse@0: else contrebasse@0: SendChatMessage("\124\124 "..txt.texte,"EMOTE") contrebasse@0: return contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Boutons et tooltips contrebasse@0: -- contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Remplissage du tooltip contrebasse@0: -- contrebasse@0: local function TooltipUpdate(b) contrebasse@0: if max_phrase>0 then contrebasse@0: -- Coloration du texte dans la fenêtre contrebasse@0: if TextFrame and SayItOptions.colorisation == 2 then contrebasse@0: TextFrame:SetText(ColorieTexte(text_full)) contrebasse@0: end contrebasse@0: contrebasse@0: -- tooltip contrebasse@0: if not SayItOptions.tooltip then return end contrebasse@0: contrebasse@0: if SayItOptions.ancre_tooltip then contrebasse@0: GameTooltip:SetOwner(b,"ANCHOR_BOTTOMRIGHT")-- Position du tooltip contrebasse@0: else contrebasse@0: GameTooltip_SetDefaultAnchor(GameTooltip, b) contrebasse@0: end contrebasse@0: contrebasse@0: -- texte du tolltip contrebasse@0: GameTooltip:SetText(target_name,1,1,1) -- Nom du Pnj contrebasse@0: if SayItOptions.texte_tooltip then contrebasse@0: local txt = "" contrebasse@0: if i_phrase <= max_phrase then contrebasse@0: if not text_table[i_phrase].emote then contrebasse@0: GameTooltip:AppendText(" va dire :") contrebasse@0: else contrebasse@0: GameTooltip:AppendText(" :") contrebasse@0: end contrebasse@0: txt = text_table[i_phrase].texte contrebasse@0: GameTooltip:AddLine('"'..txt..'"',1,0.82,0,true) contrebasse@0: else contrebasse@0: GameTooltip:AppendText(" a terminé.") contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: -- Raccourcis contrebasse@0: if SayItOptions.raccourcis_tooltip then contrebasse@0: GameTooltip:AddLine(" ") contrebasse@0: if i_phrase <= max_phrase then contrebasse@0: GameTooltip:AddDoubleLine("Dire la phrase","Clic gauche",1,1,1,1,1,1) contrebasse@0: end contrebasse@0: if i_phrase>1 then contrebasse@0: GameTooltip:AddDoubleLine("Phrase précédente","Ctrl+Clic/Roulette haut",1,1,1,1,1,1) contrebasse@0: end contrebasse@0: if i_phrase <= max_phrase then contrebasse@0: GameTooltip:AddDoubleLine("Sauter la phrase","Shift+Clic/Roulette bas",1,1,1,1,1,1) contrebasse@0: end contrebasse@0: end contrebasse@0: GameTooltip:Show() contrebasse@0: else contrebasse@0: GameTooltip:SetText("") contrebasse@0: GameTooltip:Hide() contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: -- contrebasse@0: -- Créations des boutons, avec les fonctions des clics/mouseover contrebasse@0: -- contrebasse@0: local function CreerBouton(parent) contrebasse@0: local button = CreateFrame("Button", parent:GetName().."SayButton", parent, "UIPanelButtonTemplate") contrebasse@0: button:SetText("Dire") contrebasse@0: button:SetHeight(22) contrebasse@0: button:SetWidth(button:GetTextWidth() + 40) contrebasse@0: button:SetPoint("BOTTOM",parent,"BOTTOM",-9,72) contrebasse@0: contrebasse@0: -- Set the frame level of the gossip_button to be 1 deeper than its parent contrebasse@0: local buttonparent = button:GetParent() contrebasse@0: local framelevel = buttonparent:GetFrameLevel() contrebasse@0: local framestrata = buttonparent:GetFrameStrata() contrebasse@0: button:SetFrameLevel(framelevel + 1) contrebasse@0: button:SetFrameStrata(framestrata) contrebasse@0: button:Enable() contrebasse@0: contrebasse@0: -- Action du bouton contrebasse@0: button:RegisterForClicks("LeftButtonUp") contrebasse@0: button:EnableMouseWheel(true) contrebasse@0: button:SetScript("OnClick",function(self, button, down) contrebasse@0: -- état des modificateurs contrebasse@0: local shiftDown = IsShiftKeyDown(); contrebasse@0: local ctrlDown = IsControlKeyDown(); contrebasse@0: contrebasse@0: -- On évite le cas foireux contrebasse@0: if shiftDown and ctrlDown then return end contrebasse@0: contrebasse@0: -- lecture phrase actuelle contrebasse@0: if not shiftDown and not ctrlDown and i_phrase<=max_phrase then contrebasse@0: NpcDit(text_table[i_phrase]) contrebasse@0: end contrebasse@0: contrebasse@0: -- Passage phrase suivante contrebasse@0: if ctrlDown then contrebasse@0: if i_phrase==1 then contrebasse@0: Warn("Le début du texte est atteint.") contrebasse@0: else contrebasse@0: i_phrase = i_phrase-1 contrebasse@0: --char_dits = char_dits - text_table[i_phrase].texte:len() contrebasse@0: if TextFrame and SayItOptions.colorisation == 3 then contrebasse@0: TextFrame:SetText(ColorieTexte(text_full)) contrebasse@0: end contrebasse@0: end contrebasse@0: else contrebasse@0: if i_phrase>max_phrase then contrebasse@0: Warn("La fin du texte est atteinte.") contrebasse@0: else contrebasse@0: --char_dits = char_dits + text_table[i_phrase].texte:len() contrebasse@0: i_phrase = i_phrase+1 contrebasse@0: if TextFrame and SayItOptions.colorisation == 3 then contrebasse@0: TextFrame:SetText(ColorieTexte(text_full)) contrebasse@0: end contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: -- Mise à jour du texte du tooltip contrebasse@0: TooltipUpdate(self) contrebasse@0: end) contrebasse@0: button:SetScript("OnMouseWheel", function(self, delta) contrebasse@0: -- Passage phrase suivante contrebasse@0: if delta==1 then contrebasse@0: if i_phrase==1 then contrebasse@0: Warn("Le début du texte est atteint.") contrebasse@0: else contrebasse@0: i_phrase = i_phrase-1 contrebasse@0: --char_dits = char_dits - text_table[i_phrase].texte:len() contrebasse@0: if TextFrame and SayItOptions.colorisation == 3 then contrebasse@0: TextFrame:SetText(ColorieTexte(text_full)) contrebasse@0: end contrebasse@0: end contrebasse@0: else contrebasse@0: if i_phrase>max_phrase then contrebasse@0: Warn("La fin du texte est atteinte.") contrebasse@0: else contrebasse@0: --char_dits = char_dits + text_table[i_phrase].texte:len() contrebasse@0: i_phrase = i_phrase+1 contrebasse@0: if TextFrame and SayItOptions.colorisation == 3 then contrebasse@0: TextFrame:SetText(ColorieTexte(text_full)) contrebasse@0: end contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: -- Mise à jour du texte du tooltip contrebasse@0: TooltipUpdate(self) contrebasse@0: end) contrebasse@0: contrebasse@0: contrebasse@0: -- Tooltip contrebasse@0: button:SetScript("OnEnter", TooltipUpdate) contrebasse@0: button:SetScript("OnLeave", function() contrebasse@0: GameTooltip:Hide() contrebasse@0: if TextFrame and SayItOptions.colorisation == 2 then contrebasse@0: TextFrame:SetText(text_full) contrebasse@0: end contrebasse@0: end) contrebasse@0: contrebasse@0: return button contrebasse@0: end contrebasse@0: contrebasse@0: contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Gestion des events contrebasse@0: -- contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- fonction lancée au chargement de l'add-on contrebasse@0: -- contrebasse@0: function _G.SayIt_OnLoad(self,...) contrebasse@0: -- Création des deux boutons contrebasse@0: gossip_button = CreerBouton(GossipFrame) contrebasse@0: quest_button = CreerBouton(QuestFrame) contrebasse@0: contrebasse@0: -- Pour ne pas avoir de warning avec findglobals contrebasse@0: -- GLOBALS: this contrebasse@0: -- Events à suivre contrebasse@0: SayItFrame:RegisterEvent("GOSSIP_SHOW"); -- Affiche fenêtre Gossip contrebasse@0: SayItFrame:RegisterEvent("GOSSIP_CLOSED"); -- Ferme fenêtre gossip (peut-être appelé juste avant l'ouverture d'une quête) contrebasse@0: SayItFrame:RegisterEvent("QUEST_DETAIL"); -- Nouvelle quête contrebasse@0: SayItFrame:RegisterEvent("QUEST_PROGRESS"); -- Quête en cours, non terminée contrebasse@0: SayItFrame:RegisterEvent("QUEST_COMPLETE"); -- Quête en cours et terminée contrebasse@0: SayItFrame:RegisterEvent("QUEST_FINISHED"); -- Fermeture fenêtre quête contrebasse@0: --"QUEST_GREETING" ? contrebasse@0: end contrebasse@0: contrebasse@0: -- contrebasse@0: -- fonction appelée quand il y a un event contrebasse@0: -- contrebasse@0: function _G.SayIt_OnEvent(self, event, ...) contrebasse@0: --DEBUG("Event:"..event) contrebasse@0: --Warn(event) contrebasse@0: contrebasse@0: if ( event=="GOSSIP_CLOSED" or event=="QUEST_FINISHED") then contrebasse@0: -- Reset contrebasse@0: target_name = "" contrebasse@0: text_full = nil contrebasse@0: current_button = nil contrebasse@0: TextFrame = nil contrebasse@0: contrebasse@0: elseif event=="GOSSIP_SHOW" then contrebasse@0: target_name = GetUnitName("Npc") contrebasse@0: text_full = GetGossipText() contrebasse@0: current_button = gossip_button contrebasse@0: TextFrame = GossipGreetingText contrebasse@0: contrebasse@0: elseif event=="QUEST_DETAIL" then contrebasse@0: target_name = GetUnitName("Npc") contrebasse@0: text_full = GetQuestText(); contrebasse@0: current_button = quest_button contrebasse@0: TextFrame = nil contrebasse@0: contrebasse@0: elseif event=="QUEST_PROGRESS" then contrebasse@0: target_name = GetUnitName("Npc") contrebasse@0: text_full = GetProgressText(); contrebasse@0: current_button = quest_button contrebasse@0: TextFrame = QuestProgressText contrebasse@0: contrebasse@0: elseif event=="QUEST_COMPLETE" then contrebasse@0: target_name = GetUnitName("Npc") contrebasse@0: text_full = GetRewardText(); contrebasse@0: current_button = quest_button contrebasse@0: TextFrame = nil contrebasse@0: contrebasse@0: --elseif event=="QUEST_GREETING" then contrebasse@0: -- GetGreetingText() contrebasse@0: --GreetingText contrebasse@0: else return contrebasse@0: end contrebasse@0: contrebasse@0: -- On ne sait jamais (ça arrive quand la fenêtre ne s'ouvre pas parce que celle des options est ouverte, par exemple) contrebasse@0: if not target_name or not text_full or not current_button then contrebasse@0: return contrebasse@0: end contrebasse@0: contrebasse@0: -- Reset de l'indice contrebasse@0: i_phrase = 1 contrebasse@0: --char_dits = 0 contrebasse@0: contrebasse@0: -- Découpage du texte en paragraphes/phrase contrebasse@0: text_table, max_phrase = Paragraphes(text_full) contrebasse@0: contrebasse@0: -- Affichage en couleur contrebasse@0: if TextFrame and SayItOptions.colorisation == 3 then contrebasse@0: TextFrame:SetText(ColorieTexte(text_full)) contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: contrebasse@0: --******************************************************** contrebasse@0: -- contrebasse@0: -- Ace 3.0 contrebasse@0: -- contrebasse@0: --******************************************************** contrebasse@0: -- http://www.wowace.com/addons/ace3/pages/getting-started/ contrebasse@0: contrebasse@0: -- Enregistrement comme add-on contrebasse@0: local SayIt = LibStub("AceAddon-3.0"):NewAddon("SayIt") contrebasse@0: -- contrebasse@0: -- Ace Config contrebasse@0: -- contrebasse@0: local function Hex2Val(h) contrebasse@0: if not h then return 0,0,0 end contrebasse@0: return tonumber(h:sub(5,6),16)/255, tonumber(h:sub(7,8),16)/255, tonumber(h:sub(9,10),16)/255 contrebasse@0: end contrebasse@0: local function Val2Hex(r,g,b) contrebasse@0: return string_format("|cff%02x%02x%02x",(r or 0)*255,(g or 0)*255,(b or 0)*255) contrebasse@0: end contrebasse@0: local options = { contrebasse@0: type = "group", contrebasse@0: args = { contrebasse@0: tooltip_header = { contrebasse@0: name = "Tooltip", contrebasse@0: type = "header", contrebasse@0: order = 80 contrebasse@0: }, contrebasse@0: activer_tooltip = { contrebasse@0: name = "Afficher le tooltip", contrebasse@0: desc = "Affiche un tooltip pour le bouton \"Dire\"", contrebasse@0: type = "toggle", contrebasse@0: get = function() return SayItOptions.tooltip end, contrebasse@0: set = function(info,state) SayItOptions.tooltip = state end, contrebasse@0: width = "full", contrebasse@0: order = 81 contrebasse@0: }, contrebasse@0: montrer_texte = { contrebasse@0: name = "Afficher le texte dans le tooltip", contrebasse@0: desc = "Affiche le texte qui va être dit pas le pnj dans le tooltip du bouton \"Dire\"", contrebasse@0: type = "toggle", contrebasse@0: get = function() return SayItOptions.texte_tooltip end, contrebasse@0: set = function(info,state) SayItOptions.texte_tooltip = state end, contrebasse@0: width = "full", contrebasse@0: order = 82 contrebasse@0: }, contrebasse@0: montrer_raccourcis = { contrebasse@0: name = "Afficher les raccourcis dans le tooltip", contrebasse@0: desc = "Affiche les raccourcis dans le tooltip du bouton \"Dire\"", contrebasse@0: type = "toggle", contrebasse@0: get = function() return SayItOptions.raccourcis_tooltip end, contrebasse@0: set = function(info,state) SayItOptions.raccourcis_tooltip = state end, contrebasse@0: width = "full", contrebasse@0: order = 83 contrebasse@0: }, contrebasse@0: ancre_tooltip = { contrebasse@0: name = "Ancrer le tooltip au bouton", contrebasse@0: desc = "Ancre le tooltip au bouton \"Dire\". Sinon, il sera dans sa position par défaut.", contrebasse@0: type = "toggle", contrebasse@0: get = function() return SayItOptions.ancre_tooltip end, contrebasse@0: set = function(info,state) SayItOptions.ancre_tooltip = state end, contrebasse@0: width = "full", contrebasse@0: order = 84 contrebasse@0: }, contrebasse@0: couleur_header = { contrebasse@0: name = "Couleurs des textes", contrebasse@0: type = "header", contrebasse@0: order = 99 contrebasse@0: }, contrebasse@0: o100 = { contrebasse@0: name = "|cffffd100Remarque :|r La colorisation ne marche pas pour les fenêtres d'acceptation et de rendu de quête.\n", contrebasse@0: type = "description", contrebasse@0: order = 100 contrebasse@0: }, contrebasse@0: colorier = { contrebasse@0: name = "Colorisation", contrebasse@0: desc = "Colore le texte dans la fenêtre du pnj.", contrebasse@0: --descStyle = 'inline', contrebasse@0: type = "select", contrebasse@0: values = { contrebasse@0: "Aucune", contrebasse@0: "Sous la souris", contrebasse@0: "Toujours" contrebasse@0: }, contrebasse@0: style = 'radio', contrebasse@0: get = function() return SayItOptions.colorisation end, contrebasse@0: set = function(info,val) SayItOptions.colorisation = val end, contrebasse@0: order = 101 contrebasse@0: }, contrebasse@0: o102 = { contrebasse@0: name = "\n|cffffd100Couleurs utilisées lors de la colorisation des textes|r", contrebasse@0: type = "description", contrebasse@0: order = 102 contrebasse@0: }, contrebasse@0: couleur_cDit = { contrebasse@0: name = "Texte déjà dit", contrebasse@0: desc = "Couleur dans laquelle apparaitra le texte que le pnj a déjà dit.", contrebasse@0: type = "color", contrebasse@0: get = function() return Hex2Val(SayItOptions.cDit) end, contrebasse@0: set = function(info,r,g,b) SayItOptions.cDit = Val2Hex(r,g,b) end, contrebasse@0: width = "full", contrebasse@0: order = 103 contrebasse@0: }, contrebasse@0: couleur_cJusteDit = { contrebasse@0: name = "Texte tout juste dit", contrebasse@0: desc = "Couleur dans laquelle apparaitra le texte que le pnj vient de dire.", contrebasse@0: type = "color", contrebasse@0: get = function() return Hex2Val(SayItOptions.cJusteDit) end, contrebasse@0: set = function(info,r,g,b) SayItOptions.cJusteDit = Val2Hex(r,g,b) end, contrebasse@0: width = "full", contrebasse@0: order = 104 contrebasse@0: }, contrebasse@0: couleur_cADire = { contrebasse@0: name = "Texte qui va être dit", contrebasse@0: desc = "Couleur dans laquelle apparaitra le texte que le pnj dira la prochaine fois.", contrebasse@0: type = "color", contrebasse@0: get = function() return Hex2Val(SayItOptions.cADire) end, contrebasse@0: set = function(info,r,g,b) SayItOptions.cADire = Val2Hex(r,g,b) end, contrebasse@0: width = "full", contrebasse@0: order = 105 contrebasse@0: }, contrebasse@0: couleur_cNonDit = { contrebasse@0: name = "Texte pas encore dit", contrebasse@0: desc = "Couleur dans laquelle apparaitra le texte que le pnj n'a pas encore dit.", contrebasse@0: type = "color", contrebasse@0: get = function() return Hex2Val(SayItOptions.cNonDit) end, contrebasse@0: set = function(info,r,g,b) SayItOptions.cNonDit = Val2Hex(r,g,b) end, contrebasse@0: width = "full", contrebasse@0: order = 106 contrebasse@0: } contrebasse@0: } contrebasse@0: } contrebasse@0: contrebasse@0: function SayIt:OnInitialize() contrebasse@0: -- Code that you want to run when the addon is first loaded goes here. contrebasse@0: contrebasse@0: -- Application de la config par Ace contrebasse@0: LibStub("AceConfig-3.0"):RegisterOptionsTable("SayIt".."BlizzOptions", options, {"sayit"}) contrebasse@0: LibStub("AceConfigDialog-3.0"):AddToBlizOptions("SayIt".."BlizzOptions","Say It") contrebasse@0: LibStub("AceConfig-3.0"):RegisterOptionsTable("SayIt", function() return self:GetOptions() end) -- tiré de adibags contrebasse@0: contrebasse@0: -- Récupération de la config... contrebasse@0: if not SayItOptions then contrebasse@0: SayItOptions = {} contrebasse@0: end contrebasse@0: if SayItOptions.tooltip==nil then contrebasse@0: SayItOptions.tooltip = true contrebasse@0: end contrebasse@0: if SayItOptions.texte_tooltip==nil then contrebasse@0: SayItOptions.texte_tooltip = true contrebasse@0: end contrebasse@0: if SayItOptions.raccourcis_tooltip==nil then contrebasse@0: SayItOptions.raccourcis_tooltip = true contrebasse@0: end contrebasse@0: if SayItOptions.ancre_tooltip==nil then contrebasse@0: SayItOptions.ancre_tooltip = true contrebasse@0: end contrebasse@0: if not SayItOptions.colorisation then contrebasse@0: SayItOptions.colorisation = 2 contrebasse@0: end contrebasse@0: if not SayItOptions.cDit then contrebasse@0: SayItOptions.cDit = "|cff".."606060" contrebasse@0: end contrebasse@0: if not SayItOptions.cJusteDit then contrebasse@0: SayItOptions.cJusteDit = "|cff".."7f0000" contrebasse@0: end contrebasse@0: if not SayItOptions.cADire then contrebasse@0: SayItOptions.cADire = "|cff".."00007f" contrebasse@0: end contrebasse@0: if not SayItOptions.cNonDit then contrebasse@0: SayItOptions.cNonDit = "|cff".."202020" contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: --function SayIt:OnEnable() contrebasse@0: -- Called when the addon is enabled contrebasse@0: --end contrebasse@0: contrebasse@0: --function SayIt:OnDisable() contrebasse@0: -- Called when the addon is disabled contrebasse@0: --end contrebasse@0: