vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[
        Last Modified
                12/26/2004      Initial version
                08/12/2005  FB_DebugFlag, FBGroupMoveOffset, FBButtonTextSave           - Sherkhan
--]]

local value
--------------------------------------------------------------------------------------------------
        local util = Utility_Class:New()
-- Config variables - Saved
        FBSavedProfile = {}
        FBToggles = {}
        FBScripts = {};
        FBTextChunks = {};
        FBFirstUse = 0;
        FBBuffs = {}
                FBBuffs["buffs"] = {}
                FBBuffs["debuffs"] = {}
                FBBuffs["itembuffs"] = {}
                FBBuffs["auras"] = {}
                FBBuffs["debufftypes"] = {}
        FBCombatTypes = {}
        FBPetTypes = {}
-------------------------------------------------------------------------------------------------
-- Local variables
        FB_DebugFlag = 0; -- Added to support being able to turn on/off some debugging messages
        
-- This is the last known cursor location (so we can see if it entered/left a group bounding box
        FBCursorLoc = {};
        FBCursorLoc.x=0;
        FBCursorLoc.y=0;
-- id - Button map - must be global to be accessed in XML file
--      FBIDToButton = {}
-- Group data - global.  Used to speed up bounds checking
        FBGroupData = {}
-- Constant for number of buttons - must be global
        FBNumButtons = 120;
-- Current button state, move storage, and text field save
        FBState = {}
        FBGroupMoveOffset = {}
        FBButtonTextSave = {}
        local tempindex
        for tempindex = 1,FBNumButtons do
                FBState[tempindex] = {}
                FBGroupMoveOffset[tempindex] = {}
                FBButtonTextSave[tempindex] = {}
        end
-- Command object and /command setup - must be global
        FBcmd = Command_Class:New("FlexBar", "/flexbar")
        FBCastcmd = Command_Class:New("FBCast", "/fbcast")
        FBDoIncmd = Command_Class:New("FBDoIn", "/fbdoin")
        FBUsecmd = Command_Class:New("FBUse", "/fbuse")
        FBEchocmd = Command_Class:New("FBEcho", "/echo")
        FBPrintcmd = Command_Class:New("FBPrint", "/print")
-- Timers
        FBTimers = {}
-- Getting the mouse button pressed in OnClick is flaky - store the last mousebutton down here
        FBLastButtonDown = "";
-- Last hp percents for various units
        FBLastHealth = {}
        FBLastMana = {}
        FBLastRage = {}
        FBLastEnergy = {}
        FBLastBuffs = {}
                FBLastBuffs["buffs"] = {}
                FBLastBuffs["debuffs"] = {}
                FBLastBuffs["itembuffs"] = {}
                FBLastBuffs["debufftypes"] = {}
-- Current events list copied from FBSavedProfile
        FBEvents = {}
        FBEvents.n = 0
-- Current Profile Name and character name
        FBProfileName = ""
        FBCharName = ""
-- State for conditionals
        FBConditionalState = {}
-- Saved Profile for restore
        FBProfileBackup = nil
-- Temporary Config file for scripts editor
        FBTestConfig = nil
--------------------------------------------------------------------------------------------------
-- Var to hold last targettarget and last target target name
        FBLastTargetTarget = nil
        FBLastTargetTargetName = nil
-- var to hold last form for shape/stance/aura/stealth etc changes
        FBLastform = "none"
-- var to hold last pet name for pet existence check.
        FBPetname = nil
-- var to hold group member existence info for  existence check
        FBGroupmates = {}
-- var to hold last key state
        FBKeyStates = {}
-- Hold unit status (dead/alive)
        FBUnitStatus = {}
-- Unit combat status using UnitAffectingCombat()
        FBUnitCombat = {}
-- Var to hold last combo points value
        FBLastComboPts = 0
-- Table for quick event dispatch
        FBEventQuickDispatch = {}
-- Table to hold args for quick event dispatch
        FBEventArgs = nil
-- Current top of scripts in menu
        FBScriptCount = 1
-- Table to hold custom conditions from scripts
        FBCustom = {}
-- Callbacks for Events
        FBEventHandlers = {}
-- Callbacks for extended events
        FBExtHandlers = {}
-- Global conditional functions
-- made global so that users can extend it by runscript on='ProfileLoaded'
        FBConditions = {}
-- Table to hold delayed macro
        FBMacroWait = {}
-- Macro variables callbacks
        FBMacroVariables = {}
-- Last event and source
        FBLastEvent = ""
        FBLastSource = ""
-- Spell Info for FBCastByName
        FBPlayerSpells = {}
        FBPetSPells = {}
        FBPlayerMaxRank = {}
        FBPetMaxRank = {}
-- Slot for picked up texture
        FBPickUpTexture = nil
-- ID to ButtonNum map
        FBIDtoButtonNum = {}
-- Tables to store ready list of inventory
        FBBagContents = {}
        FBInvContents = {}
-- Table of buttons with pet actions on them
        FBPetActions = {}
-- Toggles for event groups
        FBCompleteButtonList = {}
        FBCompleteBindingList = {}
        FBCompleteScaleList = {}
        FBCompleteAlphaList = {}
        FBCompleteIDList = {}
        local index
        for index = 1,FBNumButtons do
                FBCompleteButtonList[index] = index
                if index <= 30 then
                        FBCompleteBindingList[index] = index
                end
                if index >4 and index<51 then
                        table.insert(FBCompleteScaleList, index)
                end
                if index < 11 then
                        table.insert(FBCompleteAlphaList, index)
                end
        end
        for index = 1,120 do
                FBCompleteIDList[index] = index
        end
        FBCompleteTextureList = {"'%backpack'","'%macro##'","'%button##'"}
        FBCompleteTextVarList = {"'%d'","'%b'","'%c'"}
        FBNoTargetsList = {"No Target Needed"}
        FBNoValuesList = {"No Values Available"}        
        FBCompleteReactionList = {"'hostile'","'neutral'","'friendly'"}
        FBCompletePageList = {1,2,3,4,5,6}
        FBComboPointsList = {0,1,2,3,4,5}
        FBCompleteMissList = {"'dodge'","'miss'","'parry'"}
        FBIfOpsList = {"and","or","not","(",")"}
        FBTrueList = {"'true'"}
        FBColorList = { "[10 10 10] - Clear",
                                        "[5 5 5]    - Dim",
                                        "[10 1 1]   - Dark Red",
                                        "[1 10 1]   - Dark Green",
                                        "[1 1 10]   - Dark Blue",
                                        "[10 10 1]  - Dark Yellow",
                                        "[10 1 10]  - Dark Magenta",
                                        "[1 10 10]  - Dark Cyan",
                                        "[10 5 5]   - Light Red",
                                        "[5 10 5]   - Light Green",
                                        "[5 5 10]   - Light Blue",
                                        "[10 10 5]  - Light Yellow",
                                        "[10 5 10]  - Light Magenta",
                                        "[5 10 10]  - Light Cyan"
                                }

-- List of units to check events for
        FBGUIUnitList = { "'player'","'pet'","'target'" }
        for index = 1,4 do
                table.insert(FBGUIUnitList,"'party"..index .. "'")
                table.insert(FBGUIUnitList,"'partypet"..index .. "'")
        end
        
        FBGUIUnitBuffList = { "'pet'","'target'" }
        for index = 1,4 do
                table.insert(FBGUIUnitBuffList,"'party"..index .. "'")
                table.insert(FBGUIUnitBuffList,"'partypet"..index .. "'")
        end
        FBGUIUnitCombatList = { "'playercombat'","'targetcombat'" }
        FBUnitList = {  "player","party1","party2","party3","party4","pet","target",
                                        "partypet1","partypet2","partypet3","partypet4"}
        FBUnitCombatList = { "playercombat","targetcombat" }
        FBCompletePartyList = { "'party1'", "'party2'", "'party3'", "'party4'",
                                                        "'partypet1'", "'partypet2'", "'partypet3'", "'partypet4'"}
        FBCompleteTargetTargetList = {"'player'","'pet'" }
        FBCompletePetList = { "'pet'" }
        FBCompletePCList = {"'player'"}
        for index = 1,4 do
                table.insert(FBCompleteTargetTargetList,"'party"..index .. "'")
                table.insert(FBCompleteTargetTargetList,"'partypet"..index .. "'")
                table.insert(FBCompletePCList,"'party"..index.."'")
                table.insert(FBCompletePetList,"'partypet"..index.."'")
        end
        for index, value in ipairs(FBCompleteReactionList) do
                table.insert(FBCompleteTargetTargetList,string.sub(value,1,-2) .. "pc'")
                table.insert(FBCompleteTargetTargetList,string.sub(value,1,-2) .. "npc'")
        end
        for index = 1,40 do
                table.insert(FBCompleteTargetTargetList,"'raid"..index .. "'")
                table.insert(FBCompleteTargetTargetList,"'raidpet"..index .. "'")
                table.insert(FBCompletePCList,"'raid"..index.."'")
                table.insert(FBCompletePetList,"'raidpet"..index.."'")
        end
-- list of all GUI Panels
        FBGUIPanelsList= {"Script Editor","Event Editor","Global Options","Auto Items","Performance Options"}
-- Item enchantments
        FBItemEnchants = {}
-- Anchor positions
        FBAnchors = {   ["TOPLEFT"] = true,["TOPRIGHT"] = true, ["TOP"] = true,
                                        ["BOTTOMLEFT"] = true, ["BOTTOMRIGHT"] = true, ["BOTTOM"] = true,
                                        ["CENTER"] = true, ["LEFT"] = true, ["RIGHT"] = true }
-- List of event toggles in a more accessible form
        FBEventToggles = {}
-- table of functions for text sub
        FBTextSubstitutions = {}
-- Shirtan doing tracking events.
        FBLastTracking = "none"
        FBTrackingList = {      
        ["herbs"] = "Interface\\Icons\\INV_Misc_Flower_02",
        ["minerals"] = "Interface\\Icons\\Spell_Nature_Earthquake",
        ["treasure"] = "Interface\\Icons\\Racial_Dwarf_FindTreasure",
        ["beasts"] = "Interface\\Icons\\Ability_Tracking",
        ["humanoids"] = "Interface\\Icons\\Spell_Holy_PrayerOfHealing",
        ["hidden"] = "Interface\\Icons\\Ability_Stealth",
        ["elementals"] = "Interface\\Icons\\Spell_Frost_SummonWaterElemental",
        ["undead"] = "Interface\\Icons\\Spell_Shadow_DarkSummoning",
        ["demons"] = "Interface\\Icons\\Spell_Shadow_SummonFelHunter",
        ["giants"] = "Interface\\Icons\\Ability_Racial_Avatar",
        ["dragonkin"] = "Interface\\Icons\\INV_Misc_Head_Dragon_01",
        ["senseundead"] = "Interface\\Icons\\Spell_Holy_SenseUndead",
        ["sensedemons"] = "Interface\\Icons\\Spell_Shadow_Metamorphosis"
        }
        FBCompleteTrackingList = {"'herbs'", "'minerals'", "'treasure'", "'beasts'", "'humanoids'", "'hidden'", 
                                                                                                                "'elementals'", "'undead'", "'demons'", "'giants'", "'dragonkin'", "'senseundead'", 
                                                                                                                "'sensedemons'", "'none'"}
-- /Tracking events.            
        FBButtonInfoShown = false
        FBButtonInfoTooltipShown = false