Quantcast
WoWInterface - View Single Post - eCastingBar
Thread: eCastingBar
View Single Post
05-21-18, 03:02 AM   #7
Voxxel
A Chromatic Dragonspawn
Join Date: Mar 2009
Posts: 180
I tried to modify the lua both ways, but it doesn't work either way, I think something is still missing. With the "new best option" the cast bar lit up just for a single second then suddenly vanish when I cast something, the "new second option" doesn't show anything at all.

The spellName and spellRank variables are in other parts of the lua too, not only in UNIT_SPELLCAST_* events. Maybe these should be changed too? I also have no idea if the UnitCastingInfo(*) and unitChannelInfo(*) parameters could cause any problem as you left them untouched in the examples.

Here's the modified lua. (spellName and spellRank variables can only be found up to ~ line 400). Would you please take a look what's missing?

Lua Code:
  1. -- Global constants
  2. CASTING_BAR_MAJOR_VERSION = "4";
  3. CASTING_BAR_MINOR_VERSION = "0";
  4. CASTING_BAR_REVISION = "1";
  5. CASTING_BAR_ALPHA_STEP = 0.05;
  6. CASTING_BAR_FLASH_STEP = 0.2;
  7. CASTING_BAR_HOLD_TIME = 1;
  8. CASTING_BAR_WIDTH = 264;
  9. CASTING_BAR_HEIGHT = 30;
  10. CASTING_BAR_LEFT = (GetScreenWidth()-CASTING_BAR_WIDTH)/2
  11. CASTING_BAR_SLIDER_WIDTH_MIN = 100;
  12. CASTING_BAR_SLIDER_WIDTH_MAX = 2000;
  13. CASTING_BAR_SLIDER_HEIGHT_MIN = 20;
  14. CASTING_BAR_SLIDER_HEIGHT_MAX = 60;
  15. CASTING_BAR_SPELL_JUSTIFY = "Center";
  16. CASTINGBAR_ICON_POSITION = {
  17.     { text = CASTINGBAR_LEFT_TEXT, value = "LEFT"},
  18.     { text = CASTINGBAR_RIGHT_TEXT, value = "RIGHT"},
  19.     { text = CASTINGBAR_HIDDEN_TEXT, value = "HIDDEN"}
  20. };
  21. CASTINGBAR_HEADER = strWhite.."eCastingBar v"..strGreen..CASTING_BAR_MAJOR_VERSION..strWhite.."."..strGreen..CASTING_BAR_MINOR_VERSION.."."..strGreen..CASTING_BAR_REVISION..strWhite;
  22. CASTINGBAR_HELP = {
  23.     strLine1 = strYellow.."--- "..CASTINGBAR_HEADER..strYellow.." --- ",
  24.     strLine2 = strWhite..strTab..CASTINGBAR_CHAT_C1..strYellow..CASTINGBAR_HELP_STRING..strWhite
  25. };
  26.  
  27. -- Global variables
  28. eCastingBar_Saved = {};
  29. eCastingBar_Resolution = nil;
  30. eCastingBar_ResolutionWidth = 0;
  31. eCastingBar_ResolutionHeight = 0;
  32. eCastingBar_MENU_SAVEDSETTINGS = nil;
  33. eCastingBar_SETTINGS_INDEX = "";
  34.  
  35. -- Local Constants
  36. local CASTING_BAR_COLOR_TEXTURE = "Interface\\AddOns\\eCastingBar\\Textures\\RoundedLightSample.tga";
  37. local CASTING_BAR_BACKGROUND_FILE = "Interface\\Tooltips\\UI-Tooltip-Background";
  38. local CASTING_BAR_EDGE_FILE = "Interface\\Tooltips\\UI-Tooltip-Border";
  39. local CASTING_BAR_EDGE_FILE_UNINT = "Interface\\DialogFrame\\UI-DialogBox-Border";
  40. -- Casting Bar Frame Suffixes
  41. local frameSuffixes = { "", "TargetBar", "FocusBar" }
  42.  
  43. local CASTING_BAR_DEFAULTS = {
  44.   ["Locked"] = 0,
  45.   ["Enabled"] = 1,
  46.   ["Texture"] = "Perl",
  47.   ["ShowTime"] = 1,
  48.   ["HideBorder"] = 0,
  49.   ["ShowDelay"] = 1,
  50.   ["Width"] = CASTING_BAR_WIDTH,
  51.   ["Height"] = CASTING_BAR_HEIGHT,
  52.   ["Left"] = CASTING_BAR_LEFT,
  53.   ["Bottom"] = 180,
  54.   ["ShowSpellName"] = 1,
  55.   ["ShowSpellRank"] = 1,
  56.   ["FontSize"] = 12,
  57.   ["Alpha"] = 100,
  58.   ["IconPosition"] = "HIDDEN",
  59.   ["MirrorLocked"] = 0,
  60.   ["MirrorEnabled"] = 1,
  61.   ["MirrorTexture"] = "Perl",
  62.   ["MirrorShowTime"] = 1,
  63.   ["MirrorHideBorder"] = 0,
  64.   ["MirrorUseFlightTimer"] = 1,
  65.   ["MirrorWidth"] = CASTING_BAR_WIDTH,
  66.   ["MirrorHeight"] = CASTING_BAR_HEIGHT,
  67.   ["MirrorLeft"] = CASTING_BAR_LEFT,
  68.   ["MirrorBottom"] = 600,
  69.   ["MirrorShowTimerLabel"] = 1,
  70.   ["MirrorFontSize"] = 12,
  71.   ["MirrorAlpha"] = 100,
  72.   ["TargetBarLocked"] = 0,
  73.   ["TargetBarEnabled"] = 1,
  74.   ["TargetBarTexture"] = "Perl",
  75.   ["TargetBarShowTime"] = 1,
  76.   ["TargetBarHideBorder"] = 0,
  77.   ["TargetBarShowDelay"] = 1,
  78.   ["TargetBarWidth"] = CASTING_BAR_WIDTH,
  79.   ["TargetBarHeight"] = CASTING_BAR_HEIGHT,
  80.   ["TargetBarLeft"] = CASTING_BAR_LEFT,
  81.   ["TargetBarBottom"] = 640,
  82.   ["TargetBarShowSpellName"] = 1,
  83.   ["TargetBarShowSpellRank"] = 1,
  84.   ["TargetBarFontSize"] = 12,
  85.     ["TargetBarAlpha"] = 100,
  86.   ["TargetBarIconPosition"] = "HIDDEN",
  87.   ["FocusBarLocked"] = 0,
  88.   ["FocusBarEnabled"] = 1,
  89.   ["FocusBarTexture"] = "Perl",
  90.   ["FocusBarShowTime"] = 1,
  91.   ["FocusBarHideBorder"] = 0,
  92.   ["FocusBarShowDelay"] = 1,
  93.   ["FocusBarWidth"] = CASTING_BAR_WIDTH,
  94.   ["FocusBarHeight"] = CASTING_BAR_HEIGHT,
  95.   ["FocusBarLeft"] = CASTING_BAR_LEFT,
  96.   ["FocusBarBottom"] = 560,
  97.   ["FocusBarShowSpellName"] = 1,
  98.   ["FocusBarShowSpellRank"] = 1,
  99.   ["FocusBarFontSize"] = 12,
  100.     ["FocusBarAlpha"] = 100,
  101.   ["FocusBarIconPosition"] = "HIDDEN"
  102. }
  103.  
  104. local CASTING_BAR_DEFAULT_COLORS = {
  105.   ["SpellColor"] = {1.0, 0.7, 0.0, 1.0},
  106.   ["ChannelColor"] = {0.3, 0.3, 1.0, 1},
  107.   ["SuccessColor"] = {0.0, 1.0, 0.0, 1},
  108.   ["FailedColor"] = {1.0, 0.0, 0.0, 1},
  109.   ["FlashBorderColor"] = {1.0, 0.88, 0.25, 1},
  110.   ["FeignDeathColor"] = {1.0, 0.7, 0.0, 1},
  111.   ["ExhaustionColor"] = {1.0, 0.9, 0.0, 1},
  112.   ["BreathColor"] = {0.0, 0.5, 1.0, 1},
  113.   ["FlightColor"] = {.26, 0.93, 1.0, 1.0},
  114.   ["TimeColor"] = {1.0, 1.0, 1.0, 1},
  115.   ["DelayColor"] = {1.0, 0.0, 0.0, 1},
  116.   ["MirrorTimeColor"] = {1.0, 1.0, 1.0, 1},
  117.   ["MirrorFlashBorderColor"] = {1.0, 0.88, 0.25, 1},
  118.   ["TargetBarSpellColor"] = {1.0, 0.7, 0.0, 1.0},
  119.   ["TargetBarChannelColor"] = {0.3, 0.3, 1.0, 1},
  120.   ["TargetBarSuccessColor"] = {0.0, 1.0, 0.0, 1},
  121.   ["TargetBarFailedColor"] = {1.0, 0.0, 0.0, 1},
  122.   ["TargetBarFlashBorderColor"] = {1.0, 0.88, 0.25, 1},
  123.   ["TargetBarTimeColor"] = {1.0, 1.0, 1.0, 1},
  124.   ["TargetBarDelayColor"] = {1.0, 0.0, 0.0, 1},
  125.   ["FocusBarSpellColor"] = {1.0, 0.7, 0.0, 1.0},
  126.   ["FocusBarChannelColor"] = {0.3, 0.3, 1.0, 1},
  127.   ["FocusBarSuccessColor"] = {0.0, 1.0, 0.0, 1},
  128.   ["FocusBarFailedColor"] = {1.0, 0.0, 0.0, 1},
  129.   ["FocusBarFlashBorderColor"] = {1.0, 0.88, 0.25, 1},
  130.   ["FocusBarTimeColor"] = {1.0, 1.0, 1.0, 1},
  131.   ["FocusBarDelayColor"] = {1.0, 0.0, 0.0, 1}
  132. }
  133.  
  134. -- Local variables
  135.  
  136. local eCastingBar__FlashBorders = {
  137.     "TOPLEFT",
  138.     "TOP",
  139.     "TOPRIGHT",
  140.     "LEFT",
  141.     "RIGHT",
  142.     "BOTTOMLEFT",
  143.     "BOTTOM",
  144.     "BOTTOMRIGHT"  
  145. }
  146.  
  147.  
  148. function ECB_addChat(msg)
  149.     DEFAULT_CHAT_FRAME:AddMessage(CASTINGBAR_HEADER.." "..msg)
  150. end
  151.  
  152. function eCastingBar_Toggle()
  153.     if eCB_OptionFrame:IsVisible() then
  154.         HideUIPanel(eCB_OptionFrame);
  155.     else
  156.         ShowUIPanel(eCB_OptionFrame);
  157.     end
  158. end
  159.  
  160. function eCastingBar_OnLoad(self, unit, frame)
  161.     self:RegisterEvent("UNIT_SPELLCAST_START");
  162.     self:RegisterEvent("UNIT_SPELLCAST_STOP");
  163.     self:RegisterEvent("UNIT_SPELLCAST_FAILED");
  164.     self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED");
  165.     self:RegisterEvent("UNIT_SPELLCAST_DELAYED");
  166.     self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START");
  167.     self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE");
  168.     self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP");
  169.     self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTIBLE");
  170.     self:RegisterEvent("UNIT_SPELLCAST_NOT_INTERRUPTIBLE");
  171.     self:RegisterEvent("PLAYER_ENTERING_WORLD");
  172.  
  173.     self.unit = unit;
  174.     self.frame = frame;
  175.     self.casting = nil;
  176.     self.channeling = nil;
  177.     self.holdTime = 0;
  178. end
  179.  
  180.  
  181.  
  182. --[[ Handles all the mods' events. ]]--
  183.  
  184. function eCastingBar_OnEvent(self, newevent, ...)
  185.     local newarg1 = ...;
  186.  
  187.     local unit = self.unit;
  188.     if newevent == "PLAYER_ENTERING_WORLD" then
  189.         self:Hide();
  190.         local nameChannel  = UnitChannelInfo(unit);
  191.         local nameSpell  = UnitCastingInfo(unit);
  192.         if ( nameChannel ) then
  193.             newevent = "UNIT_SPELLCAST_CHANNEL_START";
  194.             newarg1 = unit;
  195.         elseif ( nameSpell ) then
  196.             newevent = "UNIT_SPELLCAST_START";
  197.             newarg1 = unit;
  198.         end
  199.     end
  200.     if ( newarg1 ~= unit ) then
  201.         return;
  202.     end
  203.     local name = self:GetName();
  204.     local barIcon = _G[name.."StatusBarIcon"];
  205.     local barFlash = _G[name.."Flash"]
  206.     local barStatusBar = _G[name.."StatusBar"];
  207.     local barSpark = _G[name.."StatusBarSpark"];
  208.     local barText = _G[name.."StatusBarText"]
  209.     local frame = self.frame
  210.     if( newevent == "UNIT_SPELLCAST_START" ) then
  211.         local displayName, texture, startTime, endTime, isTradeSkill, castID, notInterruptible = UnitCastingInfo(unit)
  212.         local spellName, spellRank = displayName, ""
  213.         if ( not spellName) then
  214.             self:Hide();
  215.             return;
  216.         end
  217.         local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[frame.."SpellColor"])
  218.         barStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  219.         if ( barSpark ) then
  220.             barSpark:Show();
  221.         end
  222.         self.startTime = (startTime/1000)
  223.         self.maxValue = (endTime/1000)
  224.         barStatusBar:SetMinMaxValues( self.startTime, self.maxValue )
  225.         barStatusBar:SetValue( self.startTime )
  226.       -- set the text to the spell name
  227.       if ( eCastingBar_Saved[frame.."ShowSpellName"] == 1 and string.len(spellRank) > 0 and eCastingBar_Saved[frame.."ShowSpellRank"] == 1) then
  228.           barText:SetText( spellName.." ("..spellRank..")" )
  229.         elseif ( eCastingBar_Saved[frame.."ShowSpellName"] == 1 and ( string.len(spellRank) == 0 or eCastingBar_Saved[frame.."ShowSpellRank"] == 0 ) ) then
  230.           barText:SetText( spellName )
  231.         elseif ( eCastingBar_Saved[frame.."ShowSpellName"] == 0 and eCastingBar_Saved[frame.."ShowSpellRank"] == 1) then
  232.           barText:SetText( spellRank )
  233.       else
  234.         barText:SetText( "" )
  235.       end
  236.         if ( barIcon and eCastingBar_Saved[frame.."IconPosition"] ~= "HIDDEN") then
  237.             barIcon:SetTexture(texture);
  238.             barIcon:Show();
  239.         end
  240.         self:SetAlpha( 1.0 )
  241.         self.holdTime = 0
  242.         self.casting = 1
  243.         self.castID = castID;
  244.         self.channeling = nil
  245.         self.fadeOut = nil
  246.         self.delay = 0
  247.         if eCastingBar_Saved[frame.."HideBorder"] == 0 then
  248.             if (notInterruptible) then
  249.                         self:SetBackdrop({bgFile = CASTING_BAR_BACKGROUND_FILE, edgeFile = CASTING_BAR_EDGE_FILE_UNINT, tile = true, tileSize = 16, edgeSize = 16, insets = { left = 2, right = 2, top = 2, bottom = 2 }})
  250.                         self:SetBackdropColor(0,0,0,0.5)
  251.             else
  252.                 self:SetBackdrop({bgFile = CASTING_BAR_BACKGROUND_FILE, edgeFile = CASTING_BAR_EDGE_FILE, tile = true, tileSize = 16, edgeSize = 16, insets = { left = 2, right = 2, top = 2, bottom = 2 }})
  253.                         self:SetBackdropColor(0,0,0,0.5)
  254.             end
  255.         end
  256.         if (eCastingBar_Saved[frame.."Enabled"] == 1) then
  257.             self:Show()
  258.         end
  259.  
  260.     elseif( newevent == "UNIT_SPELLCAST_STOP" ) or ( newevent == "UNIT_SPELLCAST_CHANNEL_STOP" ) then
  261.         if ( not self:IsVisible() ) then
  262.             self:Hide()
  263.         end
  264.         if ( (self.casting and newevent == "UNIT_SPELLCAST_STOP" and select(4, ...) == self.castID) or
  265.              (self.channeling and newevent == "UNIT_SPELLCAST_CHANNEL_STOP") ) then
  266.             barSpark:Hide();
  267.             barFlash:SetAlpha(0.0);
  268.             barFlash:Show();
  269.             barStatusBar:SetValue(self.maxValue);
  270.             if ( newevent == "UNIT_SPELLCAST_STOP" ) then
  271.                 local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[frame.."SuccessColor"])
  272.                 barStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  273.                 self.casting = nil;
  274.             else
  275.                 self.channeling = nil;
  276.             end
  277.             self.delay = 0
  278.             self.flash = 1;
  279.             self.fadeOut = 1;
  280.             self.holdTime = 0
  281.         end
  282.  
  283.     elseif( newevent == "UNIT_SPELLCAST_FAILED" or newevent == "UNIT_SPELLCAST_INTERRUPTED" ) then
  284.         if ( self:IsShown() and
  285.              (self.casting and select(4, ...) == self.castID) and not self.fadeOut ) then
  286.             barStatusBar:SetValue( self.maxValue )
  287.         local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[frame.."FailedColor"])
  288.         barStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  289.             barSpark:Hide()
  290.             if ( newevent == "UNIT_SPELLCAST_FAILED" ) then
  291.                 barText:SetText( FAILED )
  292.             else
  293.                 barText:SetText( INTERRUPTED )
  294.             end
  295.             self.casting = nil
  296.             self.channeling = nil
  297.             self.delay = 0
  298.             self.fadeOut = 1
  299.             self.holdTime = GetTime() + CASTING_BAR_HOLD_TIME
  300.         end
  301.    
  302.     elseif( newevent == "UNIT_SPELLCAST_DELAYED" ) then
  303.         if( self:IsShown() ) then
  304.             local displayName, texture, startTime, endTime, isTradeSkill = UnitCastingInfo(unit)
  305.             local spellName, spellRank = displayName, ""
  306.             if (not endTime) then return; end;
  307.             local delayTime = (endTime - (self.maxValue * 1000))
  308.             if ( not spellName) then
  309.                 self:Hide();
  310.                 return;
  311.             end
  312.             self.startTime = (startTime/1000)
  313.             self.maxValue = (endTime/1000)
  314.             barStatusBar:SetMinMaxValues( self.startTime, self.maxValue )
  315.         if self.delay == nil then
  316.         self.delay = 0
  317.         end
  318.             self.delay = self.delay + (delayTime / 1000)
  319.             if ( not self.casting ) then
  320.                 local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[frame.."SpellColor"])
  321.                 barStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  322.                 barSpark:Show();
  323.                 barFlash:SetAlpha(0.0);
  324.                 barFlash:Hide();
  325.                 self.casting = 1;
  326.                 self.channeling = nil;
  327.                 self.flash = 0;
  328.                 self.fadeOut = 0;
  329.             end
  330.         end
  331.        
  332.     elseif( newevent == "UNIT_SPELLCAST_CHANNEL_START" ) then
  333.         local displayName, texture, startTime, endTime, isTradeSkill, notInterruptible = UnitChannelInfo(newarg1)
  334.         local spellName, spellRank = displayName, ""
  335.         if ( not spellName) then
  336.             self:Hide();
  337.             return;
  338.         end
  339.     local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[frame.."ChannelColor"])
  340.     barStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  341.         self.startTime = (startTime/1000)
  342.         self.endTime = (endTime/1000)
  343.         self.maxValue = self.startTime
  344.         barStatusBar:SetMinMaxValues( self.startTime, self.endTime )
  345.         barStatusBar:SetValue( endTime - ( GetTime() - (startTime/1000) ) )
  346.         barSpark:Show()
  347.         if ( barIcon and eCastingBar_Saved[frame.."IconPosition"] ~= "HIDDEN") then
  348.             barIcon:SetTexture(texture);
  349.             barIcon:Show();
  350.         end
  351.       if ( eCastingBar_Saved[frame.."ShowSpellName"] == 1 and string.len(spellRank) > 0 and eCastingBar_Saved[frame.."ShowSpellRank"] == 1) then
  352.           barText:SetText( spellName.." ("..spellRank..")" )
  353.       elseif ( eCastingBar_Saved[frame.."ShowSpellName"] == 1 and ( string.len(spellRank) == 0 or eCastingBar_Saved[frame.."ShowSpellRank"] == 0 ) ) then
  354.           barText:SetText( spellName )
  355.         elseif ( eCastingBar_Saved[frame.."ShowSpellName"] == 0 and eCastingBar_Saved[frame.."ShowSpellRank"] == 1) then
  356.           barText:SetText( spellRank )
  357.         else
  358.             barText:SetText( "" )
  359.         end
  360.         self:SetAlpha( 1.0 )
  361.     self.delay = 0
  362.         self.holdTime = 0
  363.         self.casting = nil
  364.         self.channeling = 1
  365.         self.fadeOut = nil
  366.         if (notInterruptible) then
  367.                     self:SetBackdrop({bgFile = CASTING_BAR_BACKGROUND_FILE, edgeFile = CASTING_BAR_EDGE_FILE_UNINT, tile = true, tileSize = 16, edgeSize = 16, insets = { left = 2, right = 2, top = 2, bottom = 2 }})
  368.                     self:SetBackdropColor(0,0,0,0.5)
  369.         else
  370.             self:SetBackdrop({bgFile = CASTING_BAR_BACKGROUND_FILE, edgeFile = CASTING_BAR_EDGE_FILE, tile = true, tileSize = 16, edgeSize = 16, insets = { left = 2, right = 2, top = 2, bottom = 2 }})
  371.                     self:SetBackdropColor(0,0,0,0.5)
  372.         end
  373.         if (  eCastingBar_Saved[frame.."Enabled"] == 1) then
  374.             self:Show()
  375.         end
  376.  
  377.     elseif( newevent == "UNIT_SPELLCAST_CHANNEL_UPDATE" ) then
  378.         if( self:IsShown() ) then
  379.             local displayName, texture, startTime, endTime = UnitChannelInfo(newarg1)
  380.             local spellName, spellRank = displayName, ""
  381.             if ( not spellName) then
  382.                 self:Hide();
  383.                 return;
  384.             end
  385.             self.startTime = startTime / 1000;
  386.             self.endTime = endTime / 1000;
  387.             self.maxValue = self.startTime;
  388.             barStatusBar:SetMinMaxValues(self.startTime, self.endTime);        
  389.         end
  390.     elseif ( newevent == "UNIT_SPELLCAST_INTERRUPTIBLE" ) then
  391.         if eCastingBar_Saved[frame.."HideBorder"] == 0 then
  392.             self:SetBackdrop({bgFile = CASTING_BAR_BACKGROUND_FILE, edgeFile = CASTING_BAR_EDGE_FILE_UNINT, tile = true, tileSize = 16, edgeSize = 16, insets = { left = 2, right = 2, top = 2, bottom = 2 }})
  393.             self:SetBackdropColor(0,0,0,0.5)
  394.         end
  395.     elseif ( newevent == "UNIT_SPELLCAST_NOT_INTERRUPTIBLE" ) then
  396.         if eCastingBar_Saved[frame.."HideBorder"] == 0 then
  397.             self:SetBackdrop({bgFile = CASTING_BAR_BACKGROUND_FILE, edgeFile = CASTING_BAR_EDGE_FILE_UNINT, tile = true, tileSize = 16, edgeSize = 16, insets = { left = 2, right = 2, top = 2, bottom = 2 }})
  398.             self:SetBackdropColor(0,0,0,0.5)
  399.         end
  400.     end
  401. end
  402.  
  403. function eCastingBar_OnUpdate(self, elapsed)
  404.     local frame = self.frame
  405.     local bar = _G["eCastingBar"..frame]
  406.     local barFlash = _G["eCastingBar"..frame.."Flash"]
  407.     local barStatusBar = _G["eCastingBar"..frame.."StatusBar"];
  408.     local barSpark = _G["eCastingBar"..frame.."StatusBarSpark"];
  409.     local barTime = _G["eCastingBar"..frame.."StatusBar_Time"];
  410.     local barDelay = _G["eCastingBar"..frame.."StatusBar_Delay"];
  411.     local barTexture = _G["eCastingBar"..frame.."StatusBarTexture"];
  412.   if( self.casting ) then    
  413.     local intCurrentTime = GetTime()
  414.     if (intCurrentTime > self.maxValue) then
  415.         intCurrentTime = self.maxValue
  416.     end
  417.         if ( intCurrentTime == self.maxValue ) then
  418.             barStatusBar:SetValue(self.maxValue);
  419.             barTexture:SetTexCoord(0,1,0,1);
  420.           local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[frame.."SuccessColor"])
  421.             barStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  422.             self.flash = 1;
  423.             self.delay = 0;
  424.             self.fadeOut = 1;
  425.             self.casting = nil;
  426.             self.channeling = nil;
  427.             return;
  428.         end
  429.     barTexture:SetTexCoord(0,( intCurrentTime - self.startTime ) / ( self.maxValue - self.startTime ), 0, 1)
  430.     barStatusBar:SetValue( intCurrentTime )
  431.     barFlash:Hide()
  432.     local sparkPosition = ( ( intCurrentTime - self.startTime ) / ( self.maxValue - self.startTime ) ) * barStatusBar:GetWidth()
  433.     if( sparkPosition < 0 ) then
  434.        
  435.       sparkPosition = 0
  436.     end
  437.     barSpark:SetPoint( "CENTER", "eCastingBar"..frame.."StatusBar", "LEFT", sparkPosition, 0 )
  438.     if ( eCastingBar_Saved[frame.."ShowTime"] == 1) then
  439.       barTime:SetText( string.format( "%.1f", math.max( self.maxValue - intCurrentTime, 0.0 ) ) )
  440.     else
  441.       barTime:SetText("")
  442.     end
  443.     if (( eCastingBar_Saved[frame.."ShowDelay"] == 1 ) and ( self.delay ~= 0)) then  
  444.         barDelay:SetText("+"..string.format( "%.1f", self.delay ) )
  445.     else
  446.       barDelay:SetText("")
  447.     end
  448.   -- no, we channeling?
  449.   elseif ( self.channeling ) then
  450.     -- yes
  451.     local intTimeLeft = GetTime()
  452.         if ( intTimeLeft > self.endTime ) then
  453.             intTimeLeft = self.endTime;
  454.         end
  455.         if ( intTimeLeft == self.endTime ) then
  456.           local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[frame.."SuccessColor"])
  457.             barStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  458.             self.flash = 1;
  459.             self.delay = 0;
  460.             self.fadeOut = 1;
  461.             self.casting = nil;
  462.             self.channeling = nil;
  463.             return;
  464.         end
  465.     local intBarValue = self.startTime + ( self.endTime - intTimeLeft )
  466.     barTexture:SetTexCoord(0,( intBarValue - self.startTime ) / ( self.endTime - self.startTime ), 0, 1)
  467.     barStatusBar:SetValue( intBarValue )
  468.     barFlash:Hide()
  469.     local sparkPosition = ( ( intBarValue - self.startTime ) / ( self.endTime - self.startTime ) ) * _G["eCastingBar"..frame.."Background"]:GetWidth()
  470.     barSpark:SetPoint( "CENTER", "eCastingBar"..frame.."StatusBar", "LEFT", sparkPosition, 0 )
  471.     if (eCastingBar_Saved[frame.."ShowTime"] == 1) then    
  472.       local timeLeft = math.max( _G["eCastingBar"..frame].endTime - intTimeLeft, 0.0 )
  473.       local timeMsg = nil
  474.       local minutes = 0
  475.       local seconds = 0
  476.      
  477.       if (timeLeft > 60) then
  478.         minutes = math.floor( ( timeLeft / 60 ))
  479.         local seconds = math.ceil( timeLeft - ( 60 * minutes ))
  480.         if (seconds == 60) then
  481.           minutes = minutes + 1
  482.           seconds = 0
  483.         end
  484.         timeMsg = format("%s:%s", minutes, getFormattedNumber(seconds))
  485.       else
  486.         timeMsg = string.format( "%.1f", timeLeft )
  487.       end
  488.       barTime:SetText( timeMsg )
  489.     else
  490.       barTime:SetText("")
  491.     end
  492.     if ((eCastingBar_Saved[frame.."ShowDelay"] == 1) and (self.delay ~= 0)) then
  493.       barDelay:SetText("+"..string.format( "%.1f", self.delay ) )
  494.     else
  495.       barDelay:SetText("")
  496.     end
  497.   elseif( GetTime() < self.holdTime ) then
  498.     return
  499.   elseif( self.flash ) then
  500.     local intAlpha = barFlash:GetAlpha() + CASTING_BAR_FLASH_STEP
  501.     barTime:SetText( "" )
  502.     if( intAlpha < 1 ) then
  503.       barFlash:SetAlpha( intAlpha )
  504.     else
  505.             barFlash:SetAlpha(1.0);
  506.       self.flash = nil
  507.     end
  508.   elseif ( self.fadeOut ) then
  509.     local intAlpha = self:GetAlpha() - CASTING_BAR_ALPHA_STEP
  510.     if( intAlpha > 0 ) then
  511.       self:SetAlpha( intAlpha )
  512.     else
  513.       self.fadeOut = nil
  514.       self:Hide()
  515.     end
  516.   end
  517. end
  518.  
  519. function eCastingBarTarget_OnEvent(self, event, ...)
  520.     local newevent = event;
  521.     local newarg1 = ...;
  522.     if( newevent == "PLAYER_TARGET_CHANGED") then
  523.         local nameChannel  = UnitChannelInfo(self.unit);
  524.         local nameSpell  = UnitCastingInfo(self.unit);
  525.         if ( nameChannel ) then
  526.             newevent = "UNIT_SPELLCAST_CHANNEL_START";
  527.             newarg1 = "target";
  528.         elseif ( nameSpell ) then
  529.             newevent = "UNIT_SPELLCAST_START";
  530.             newarg1 = "target";
  531.         else
  532.             self.casting = nil;
  533.             self.channeling = nil;
  534.             self:Hide();
  535.             return;
  536.         end
  537.     end
  538.     if UnitIsUnit("player", "target") then
  539.         return;
  540.     end
  541.     eCastingBar_OnEvent(self, newevent, newarg1, select(2, ...));
  542.  
  543. end
  544.  
  545. function eCastingBarFocus_OnEvent(self, event, ...)
  546.     local newevent = event;
  547.     local newarg1 = ...;
  548.     if( event == "PLAYER_FOCUS_CHANGED") then
  549.         local nameChannel  = UnitChannelInfo(self.unit);
  550.         local nameSpell  = UnitCastingInfo(self.unit);
  551.         if ( nameChannel ) then
  552.             newevent = "UNIT_SPELLCAST_CHANNEL_START";
  553.             newarg1 = "focus";
  554.         elseif ( nameSpell ) then
  555.             newevent = "UNIT_SPELLCAST_START";
  556.             newarg1 = "focus";
  557.         else
  558.             self.casting = nil;
  559.             self.channeling = nil;
  560.             self:Hide();
  561.             return;
  562.         end
  563.     end
  564.     if ( UnitIsUnit("player", "focus") ) then
  565.         return;
  566.     end
  567.     eCastingBar_OnEvent(self, newevent, newarg1,  select(2, ...));
  568.  
  569. end
  570.  
  571.  
  572. function eCastingBar_ResetSettings()
  573.     ECB_addChat(CASTINGBAR_RESET)
  574.     eCastingBar_Saved = {}
  575.   -- reset General Options
  576.     for option in pairs(CASTING_BAR_DEFAULTS) do
  577.         eCastingBar_Saved[option] = CASTING_BAR_DEFAULTS[option]
  578.     end
  579.   -- reset Colors
  580.     for color in pairs(CASTING_BAR_DEFAULT_COLORS) do
  581.         eCastingBar_Saved[color] = CASTING_BAR_DEFAULT_COLORS[color]
  582.     end
  583.     setup()
  584. end
  585.  
  586. function eCastingBar_CheckSettings()
  587.   -- reset General Options
  588.     for option in pairs(CASTING_BAR_DEFAULTS) do
  589.         if (eCastingBar_Saved[option] == nil) then
  590.             eCastingBar_Saved[option] = CASTING_BAR_DEFAULTS[option]
  591.         end
  592.     end
  593.   -- check for nil colors
  594.     for color in pairs(CASTING_BAR_DEFAULT_COLORS) do
  595.         if (eCastingBar_Saved[color] == nil) then
  596.             eCastingBar_Saved[color] = CASTING_BAR_DEFAULT_COLORS[color]
  597.         end
  598.     end
  599. end
  600.  
  601. function setup()
  602.     eCastingBar_checkEnabled()
  603.     eCastingBar_checkLocked()
  604.     eCastingBar_checkBorders()
  605.     eCastingBar_checkTimeColors()
  606.     eCastingBar_setDelayColor()
  607.     eCastingBar_SetSize()
  608.     eCastingBar_checkFlashBorderColors()
  609.     eCastingBar_checkTextures()
  610.     eCastingBar_setIcons()
  611. end
  612.  
  613. --[[ Iniitialization ]]--
  614.  
  615. function eCastingBar_LoadVariables()   
  616.     setup()
  617.     eCastingBar_SetSavedSettingsMenu()
  618.    
  619.     -- make the casting bar link to the movable button
  620.         eCastingBar:SetPoint("TOPLEFT", "eCastingBar_Outline", "TOPLEFT", 0, 0 )
  621.         eCastingBarTargetBar:SetPoint("TOPLEFT", "eCastingBarTargetBar_Outline", "TOPLEFT", 0, 0 )
  622.         eCastingBarFocusBar:SetPoint("TOPLEFT", "eCastingBarFocusBar_Outline", "TOPLEFT", 0, 0 )
  623.    
  624.     -- make the mirror casting bar link to the movable button
  625.         eCastingBarMirror1:SetPoint("TOPLEFT", "eCastingBarMirror_Outline", "TOPLEFT", 0, 0 )
  626.        
  627.     -- reset variables
  628.     for index, option in pairs(frameSuffixes) do
  629.       _G["eCastingBar"..option].casting = nil
  630.       _G["eCastingBar"..option].holdTime = 0
  631.     end
  632.    
  633.         SlashCmdList["ECASTINGBAR"] = eCastingBar_SlashHandler
  634.         SLASH_ECASTINGBAR1 = "/eCastingBar"
  635.         SLASH_ECASTINGBAR2 = "/eCB"
  636.         SLASH_ECASTINGBAR3 = "/???"    
  637.     -- resolution
  638.     SetResolution(GetScreenResolutions())
  639.     --[[
  640.     local i,j = string.find(eCastingBar_Resolution, "x")
  641.     eCastingBar_ResolutionWidth = tonumber(string.sub(eCastingBar_Resolution, 0, i - 1))
  642.     eCastingBar_ResolutionHeight = tonumber(string.sub(eCastingBar_Resolution, i + 1, string.len(eCastingBar_Resolution)))
  643.     ]]
  644.     -- override these for now until I can figure out why blizzard is jacked up
  645.     eCastingBar_ResolutionWidth = 2000
  646.     eCastingBar_ResolutionHeight = 2000
  647.    
  648.     setupConfigFrame()
  649.     setupDefaultConfigFrame()
  650.     setupColorsConfigFrame()
  651. end
  652.  
  653. function setupConfigFrame()
  654.   -- set all text values
  655.   eCB_Option_DefaultsButton:SetText(CASTINGBAR_DEFAULTS_BUTTON)
  656.   eCB_Option_CloseButton:SetText(CASTINGBAR_CLOSE_BUTTON)
  657.   eCastingBarSaveSettingsButton:SetText(CASTINGBAR_SAVE_BUTTON)
  658.   eCastingBarLoadSettingsButton:SetText(CASTINGBAR_LOAD_BUTTON)
  659.   eCastingBarDeleteSettingsButton:SetText(CASTINGBAR_DELETE_BUTTON)
  660. end
  661.  
  662. function setupDefaultConfigFrame()
  663.   -- set all text values
  664.   for option in pairs(CASTING_BAR_BUTTONS) do
  665.     local btnText = _G["eCastingBar"..option.."Text"]
  666.     btnText:SetText(CASTING_BAR_BUTTONS[option])
  667.   end
  668.  
  669.   eCastingBarStatusBarText:SetJustifyH(CASTING_BAR_SPELL_JUSTIFY)
  670.   eCastingBarSelectTexture_Label:SetText(CASTINGBAR_CASTINGBAR_TEXTURE_TEXT)
  671.   eCastingBarSelectTexture_Setting:SetText(eCastingBar_Saved.Texture)
  672.  
  673.   eCastingBarIconPosition_Label:SetText(CASTINGBAR_ICON_POSITION_TEXT)
  674.   eCastingBarIconPosition_Setting:SetText(_G["CASTINGBAR_"..eCastingBar_Saved.IconPosition.."_TEXT"])
  675.  
  676.     for index, option in pairs(frameSuffixes) do
  677.         local   Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[option.."SpellColor"])
  678.         _G["eCastingBar"..option.."ExampleStatusBar"]:SetStatusBarColor( Red, Green, Blue, Alpha )
  679.     end
  680.   local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved.BreathColor)
  681.   eCastingBarMirrorExampleStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  682.  
  683.  
  684.   eCastingBarTargetBarStatusBarText:SetJustifyH(CASTING_BAR_SPELL_JUSTIFY)
  685.   eCastingBarTargetBarSelectTexture_Label:SetText(CASTINGBAR_TARGETBAR_TEXTURE_TEXT)
  686.   eCastingBarTargetBarSelectTexture_Setting:SetText(eCastingBar_Saved.TargetBarTexture)
  687.  
  688.   eCastingBarFocusBarStatusBarText:SetJustifyH(CASTING_BAR_SPELL_JUSTIFY)
  689.   eCastingBarFocusBarSelectTexture_Label:SetText(CASTINGBAR_FOCUSBAR_TEXTURE_TEXT)
  690.   eCastingBarFocusBarSelectTexture_Setting:SetText(eCastingBar_Saved.FocusBarTexture)
  691.  
  692.   eCastingBarTargetBarIconPosition_Label:SetText(CASTINGBAR_ICON_POSITION_TEXT)
  693.   eCastingBarTargetBarIconPosition_Setting:SetText(_G["CASTINGBAR_"..eCastingBar_Saved.TargetBarIconPosition.."_TEXT"])
  694.  
  695.   eCastingBarFocusBarIconPosition_Label:SetText(CASTINGBAR_ICON_POSITION_TEXT)
  696.   eCastingBarFocusBarIconPosition_Setting:SetText(_G["CASTINGBAR_"..eCastingBar_Saved.FocusBarIconPosition.."_TEXT"])
  697.  
  698.   eCastingBarMirrorSelectTexture_Label:SetText(CASTINGBAR_MIRRORBAR_TEXTURE_TEXT)
  699.   eCastingBarMirrorSelectTexture_Setting:SetText(eCastingBar_Saved.MirrorTexture)
  700.  
  701.   for index = 1, MIRRORTIMER_NUMTIMERS, 1 do
  702.     _G["eCastingBarMirror"..index.."StatusBarText"]:SetJustifyH(CASTING_BAR_SPELL_JUSTIFY)
  703.   end
  704.  
  705.     -- Disable the Load and Delete Buttons on Startup
  706.     eCastingBarLoadSettingsButton:Disable();
  707.     eCastingBarDeleteSettingsButton:Disable();
  708.  
  709.   -- set all checks
  710.   for option in pairs(CASTING_BAR_BUTTONS) do
  711.     local btn = _G["eCastingBar"..option]
  712.     btn:SetChecked(eCastingBar_Saved[option])
  713.   end
  714.  
  715.   local slider, sliderText, low, high, width, height
  716.   local optionTabs = { "", "Mirror", "TargetBar", "FocusBar" }
  717.  
  718.   for index, option in pairs(optionTabs) do
  719.     local slidervalue
  720.     -- setup the width slider
  721.     slider = _G["eCastingBar"..option.."WidthSlider"]
  722.     sliderText = _G["eCastingBar"..option.."WidthSliderText"]
  723.     low = _G["eCastingBar"..option.."WidthSliderLow"]
  724.     high = _G["eCastingBar"..option.."WidthSliderHigh"]
  725.     slidervalue = eCastingBar_Saved[option.."Width"]
  726.     slider:SetMinMaxValues(CASTING_BAR_SLIDER_WIDTH_MIN, eCastingBar_ResolutionWidth)
  727.     slider:SetValueStep(1)
  728.     slider:SetValue(slidervalue)
  729.     sliderText:SetText(CASTINGBAR_SLIDER_WIDTH_TEXT)
  730.     low:SetText(CASTING_BAR_SLIDER_WIDTH_MIN)
  731.     high:SetText(eCastingBar_ResolutionWidth)
  732.    
  733.     -- setup the height slider
  734.     slidervalue = eCastingBar_Saved[option.."Height"]
  735.     slider = _G["eCastingBar"..option.."HeightSlider"]
  736.     sliderText = _G["eCastingBar"..option.."HeightSliderText"]
  737.     low = _G["eCastingBar"..option.."HeightSliderLow"]
  738.     high = _G["eCastingBar"..option.."HeightSliderHigh"]
  739.    
  740.     slider:SetMinMaxValues(CASTING_BAR_SLIDER_HEIGHT_MIN, CASTING_BAR_SLIDER_HEIGHT_MAX)
  741.     slider:SetValueStep(1)
  742.     slider:SetValue(slidervalue)
  743.     sliderText:SetText(CASTINGBAR_SLIDER_HEIGHT_TEXT)
  744.     low:SetText(CASTING_BAR_SLIDER_HEIGHT_MIN)
  745.     high:SetText(CASTING_BAR_SLIDER_HEIGHT_MAX)
  746.    
  747.     -- setup the x slider
  748.     slider = _G["eCastingBar"..option.."LeftSlider"]
  749.     sliderText = _G["eCastingBar"..option.."LeftSliderText"]
  750.     low = _G["eCastingBar"..option.."LeftSliderLow"]
  751.     high = _G["eCastingBar"..option.."LeftSliderHigh"]
  752.    
  753.     if (option == "Mirror") then
  754.       width = tonumber(string.format("%.0f", _G["eCastingBarMirror1"]:GetWidth()))
  755.       height = tonumber(string.format("%.0f", _G["eCastingBarMirror1"]:GetHeight()))
  756.     else
  757.       width = tonumber(string.format("%.0f", _G["eCastingBar"..option]:GetWidth()))
  758.       height = tonumber(string.format("%.0f", _G["eCastingBar"..option]:GetHeight()))
  759.     end
  760.     slidervalue = eCastingBar_Saved[option.."Left"]
  761.     slider:SetMinMaxValues(-1000, eCastingBar_ResolutionWidth)
  762.     slider:SetValueStep(1)
  763.     slider:SetValue(slidervalue)
  764.     sliderText:SetText(CASTINGBAR_SLIDER_LEFT_TEXT)
  765.     low:SetText(-1000)
  766.     high:SetText(eCastingBar_ResolutionWidth)
  767.    
  768.     -- setup the y slider
  769.     slider = _G["eCastingBar"..option.."BottomSlider"]
  770.     sliderText = _G["eCastingBar"..option.."BottomSliderText"]
  771.     low = _G["eCastingBar"..option.."BottomSliderLow"]
  772.     high = _G["eCastingBar"..option.."BottomSliderHigh"]
  773.    
  774.     slidervalue = eCastingBar_Saved[option.."Bottom"]
  775.     slider:SetMinMaxValues(-1000, eCastingBar_ResolutionHeight)
  776.     slider:SetValueStep(1)
  777.     slider:SetValue(slidervalue)
  778.     sliderText:SetText(CASTINGBAR_SLIDER_BOTTOM_TEXT)
  779.     low:SetText(-1000)
  780.     high:SetText(eCastingBar_ResolutionHeight)
  781.    
  782.     -- setup the font slider
  783.     slider = _G["eCastingBar"..option.."FontSlider"]
  784.     sliderText = _G["eCastingBar"..option.."FontSliderText"]
  785.     low = _G["eCastingBar"..option.."FontSliderLow"]
  786.     high = _G["eCastingBar"..option.."FontSliderHigh"]
  787.    
  788.     slidervalue = eCastingBar_Saved[option.."FontSize"]
  789.     slider:SetMinMaxValues(6, 40)
  790.     slider:SetValueStep(1)
  791.     slider:SetValue(slidervalue)
  792.     sliderText:SetText(CASTINGBAR_SLIDER_FONT_TEXT)
  793.     low:SetText(6)
  794.     high:SetText(40)
  795.    
  796.     -- setup the alpha slider
  797.     slider = _G["eCastingBar"..option.."AlphaSlider"]
  798.     sliderText = _G["eCastingBar"..option.."AlphaSliderText"]
  799.  
  800.     low = _G["eCastingBar"..option.."AlphaSliderLow"]
  801.     high = _G["eCastingBar"..option.."AlphaSliderHigh"]
  802.     slidervalue = eCastingBar_Saved[option.."Alpha"]
  803.     slider:SetMinMaxValues(0, 100)
  804.     slider:SetValueStep(1)
  805.     slider:SetValue(slidervalue)
  806.     sliderText:SetText(CASTINGBAR_SLIDER_ALPHA_TEXT)
  807.     low:SetText("0%")
  808.     high:SetText("100%")
  809.   end
  810. end
  811.  
  812. function setupColorsConfigFrame()
  813.   -- set the textures
  814.   for color in pairs(CASTINGBAR_COLOR_LABEL) do
  815.     local btnColor = _G["btn"..color.."Texture"]
  816.    
  817.     -- set the texture
  818.     btnColor:SetTexture(CASTING_BAR_COLOR_TEXTURE)
  819.    
  820.     -- set the vertex color
  821.     btnColor:SetVertexColor(unpack(eCastingBar_Saved[color]))
  822.    
  823.     -- set the label
  824.     _G["lbl"..color.."Text"]:SetText(CASTINGBAR_COLOR_LABEL[color])
  825.   end
  826. end
  827.  
  828. function SetResolution(...)
  829.   local iRes = GetCurrentResolution()
  830.   for i=1, select("#",...), 1 do
  831.     if (iRes == i) then
  832.         eCastingBar_Resolution = select(i,...)
  833.     end
  834.   end
  835. end
  836.  
  837. --[[ Handles all the slash commands if cosmos isn't present. ]]--
  838.  
  839. function eCastingBar_SlashHandler( strMessage )
  840.   local command, param
  841.   -- make it it all lower case to be sure
  842.     strMessage = string.lower( strMessage )
  843.  
  844.   if(index) then
  845.         command = string.sub(strMessage, 1, (index - 1))
  846.         param = string.sub(strMessage, (index + 1)  )
  847.     else
  848.         command = strMessage
  849.     end
  850.  
  851.     if( command == CASTINGBAR_CHAT_C1 ) then
  852.     ShowUIPanel(eCB_OptionFrame);
  853.   elseif ( command == CASTINGBAR_CHAT_C2) then
  854.     eCastingBar_ChatHelp()
  855.     else
  856.     ShowUIPanel(eCB_OptionFrame);
  857.     end
  858.    
  859.   setupDefaultConfigFrame()
  860.   setupColorsConfigFrame()
  861. end
  862.  
  863. --[[ Handles chat help messages. ]]--
  864.  
  865. function eCastingBar_ChatHelp()
  866.     local intIndex = 0
  867.     local strMessage = ""
  868.    
  869.   -- prints each line in CASTINGBAR_HELP = { }
  870.     for intIndex, strMessage in pairs(CASTINGBAR_HELP) do
  871.         ECB_addChat( strMessage )
  872.     end
  873. end
  874.  
  875. function getFormattedNumber(number)
  876.     if (strlen(number) < 2 ) then
  877.         return "0"..number
  878.     else
  879.         return number
  880.     end
  881. end
  882.  
  883. --[[ Starts moving the frame. ]]--
  884.  
  885. function eCastingBar_MouseUp( strButton, frmFrame, frameType )
  886.     if( eCastingBar_Saved[frameType.."Locked"] == 0 ) then
  887.         _G[ frmFrame ]:StopMovingOrSizing()
  888.     eCastingBar_Saved[frameType.."Left"] = _G[frmFrame]:GetLeft()
  889.     eCastingBar_Saved[frameType.."Bottom"] = _G[frmFrame]:GetBottom()
  890.    
  891.     _G["eCastingBar"..frameType.."LeftSlider"]:SetValue(eCastingBar_Saved[frameType.."Left"])
  892.     _G["eCastingBar"..frameType.."BottomSlider"]:SetValue(eCastingBar_Saved[frameType.."Bottom"])
  893.     end
  894. end
  895.  
  896. --[[ Stops moving the frame. ]]--
  897.  
  898. function eCastingBar_MouseDown( strButton, frmFrame, frameType )
  899.  
  900.     if( strButton == "LeftButton" and (eCastingBar_Saved[frameType.."Locked"] == 0 ) ) then
  901.         _G[ frmFrame ]:StartMoving()
  902.     end
  903. end
  904.  
  905. function eCastingBarGeneral_MouseUp( strButton, frmFrame )
  906.         _G[ frmFrame ]:StopMovingOrSizing()
  907. end
  908.  
  909. --[[ Stops moving the frame. ]]--
  910.  
  911. function eCastingBarGeneral_MouseDown( strButton, frmFrame, frameType )
  912.     if( strButton == "LeftButton") then
  913.         _G[ frmFrame ]:StartMoving()
  914.     end
  915. end
  916.  
  917. function eCastingBar_getShowDelay()
  918.     return eCastingBar_Saved.ShowDelay
  919. end
  920.  
  921. function eCastingBar_setShowDelay( intShowDelay )
  922.     eCastingBar_Saved.ShowDelay = intShowDelay
  923. end
  924.  
  925. function eCastingBar_checkBorders()
  926.   for index, option in pairs(frameSuffixes) do
  927.     local bar = _G["eCastingBar"..option]
  928.     if (eCastingBar_Saved[option.."HideBorder"] == 1) then
  929.       bar:SetBackdrop(nil)
  930.     else
  931.       bar:SetBackdrop({bgFile = CASTING_BAR_BACKGROUND_FILE, edgeFile = CASTING_BAR_EDGE_FILE, tile = true, tileSize = 16, edgeSize = 16, insets = { left = 2, right = 2, top = 2, bottom = 2 }})
  932.       bar:SetBackdropColor(0,0,0,0.5)
  933.     end
  934.   end
  935.   for index = 1, MIRRORTIMER_NUMTIMERS, 1 do
  936.     local bar = _G["eCastingBarMirror"..index]
  937.     if (eCastingBar_Saved.MirrorHideBorder == 1) then
  938.       bar:SetBackdrop(nil)
  939.     else
  940.       bar:SetBackdrop({bgFile = CASTING_BAR_BACKGROUND_FILE, edgeFile = CASTING_BAR_EDGE_FILE, tile = true, tileSize = 16, edgeSize = 16, insets = { left = 2, right = 2, top = 2, bottom = 2 }})
  941.       bar:SetBackdropColor(0,0,0,0.5)
  942.     end
  943.   end
  944. end
  945.  
  946. --[[-------------------------------------------
  947.     Functions for Locked State
  948. -------------------------------------------]]--
  949.  
  950. function eCastingBar_checkLocked()
  951.   for index, option in pairs(frameSuffixes) do
  952.     local barOutline = _G["eCastingBar"..option.."_Outline"]
  953.     -- only show the outline if we are enabled
  954.     if (eCastingBar_Saved[option.."Enabled"] == 1 and
  955.           eCastingBar_Saved[option.."Locked"] == 0) then
  956.       barOutline:Show()
  957.     else
  958.       barOutline:Hide()
  959.     end
  960.   end
  961.  
  962.  
  963.   -- only show the outline if we are enabled
  964.   if (eCastingBar_Saved.MirrorEnabled == 1 and eCastingBar_Saved.MirrorLocked == 0) then
  965.     eCastingBarMirror_Outline:Show()
  966.   else
  967.     eCastingBarMirror_Outline:Hide()
  968.   end
  969. end
  970.  
  971. --[[-------------------------------------------
  972.     Functions for Enabled State
  973. -------------------------------------------]]--
  974.  
  975. --[[ Disables the frame. ]]--
  976.  
  977. function eCastingBar_Disable( frame )
  978.   eCastingBar_Saved[frame.."Enabled"] = 0
  979.   local bar = _G["eCastingBar"..frame]
  980.   if (frame == "") then
  981.         local oldbar = CastingBarFrame
  982.         if (BCastBarCastBar) then
  983.             oldbar = BCastBarCastBar
  984.         end
  985.     oldbar.showCastbar = true
  986.         if UnitCastingInfo(oldbar.unit) or UnitChannelInfo(oldbar.unit) then
  987.         oldbar:Show()
  988.     end
  989.  
  990.   end
  991.     if bar.casting then
  992.         bar:Hide()
  993.     end
  994.   -- the frame unlocked?
  995.     if( eCastingBar_Saved[frame.."Locked"] == 0 ) then
  996.     -- yes, lets hide the outline
  997.         _G["eCastingBar"..frame.."_Outline"]:Hide()
  998.     end
  999. end
  1000.  
  1001.  
  1002. --[[ Enables the frame. ]]--
  1003.  
  1004. function eCastingBar_Enable( frame )
  1005.   eCastingBar_Saved[frame.."Enabled"] = 1  
  1006.   local bar = _G["eCastingBar"..frame]
  1007.   if (frame == "") then
  1008.         local oldbar = CastingBarFrame
  1009.         if (BCastBarCastBar) then
  1010.             oldbar = BCastBarCastBar
  1011.         end
  1012.     oldbar.showCastbar = nil;
  1013.     oldbar:Hide();
  1014.     end
  1015.     if UnitCastingInfo(bar.unit) or UnitChannelInfo(bar.unit) then
  1016.         bar:Show()
  1017.     end
  1018.   -- the frame unlocked?
  1019.     if( eCastingBar_Saved[frame.."Locked"] == 0 ) then
  1020.     -- yes, lets show the outline
  1021.         _G["eCastingBar"..frame.."_Outline"]:Show()
  1022.     end
  1023. end
  1024.  
  1025. --[[ Toggle enabled state. ]]--
  1026.  
  1027. function eCastingBar_checkEnabled()
  1028.   for index, option in pairs(frameSuffixes) do
  1029.     if (eCastingBar_Saved[option.."Enabled"] == 1) then
  1030.         eCastingBar_Enable(option)
  1031.     else
  1032.       eCastingBar_Disable(option)
  1033.     end
  1034.   end
  1035.  
  1036.   for index = 1, MIRRORTIMER_NUMTIMERS, 1 do
  1037.     if (eCastingBar_Saved.MirrorEnabled == 1) then
  1038.         if( eCastingBar_Saved.MirrorLocked == 0 ) then 
  1039.         -- yes, lets show the outline
  1040.         _G["eCastingBarMirror_Outline"]:Show()        
  1041.       end      
  1042.     else
  1043.       if( eCastingBar_Saved.MirrorLocked == 0 ) then
  1044.         -- yes, lets hide the outline
  1045.         _G["eCastingBarMirror_Outline"]:Hide()
  1046.       end
  1047.     end
  1048.   end
  1049. end
  1050.  
  1051. --[[-------------------------------------------
  1052.     Functions for using the Texture
  1053. -------------------------------------------]]--
  1054.  
  1055. --[[ Toggle enabled state. ]]--
  1056.  
  1057. function eCastingBar_checkTextures()
  1058.   for index, option in pairs(frameSuffixes) do
  1059.     if eCastingBar_Saved[option.."Texture"] == nil then
  1060.         eCastingBar_Saved[option.."Texture"] = "Perl"
  1061.     end
  1062.     if eCastingBar_Saved[option.."Texture"] == "Halycon" then
  1063.         eCastingBar_Saved[option.."Texture"] = "Halcyon"
  1064.     end
  1065.     _G["eCastingBar"..option.."StatusBarTexture"]:SetTexture( CASTING_BAR_TEXTURES[eCastingBar_Saved[option.."Texture"]] )
  1066.     _G["eCastingBar"..option.."StatusBarTexture"]:SetWidth(20)
  1067.     _G["eCastingBar"..option.."StatusBarTexture"]:SetHeight(10)
  1068.     _G["eCastingBar"..option.."StatusBarTexture"]:SetHorizTile(True)
  1069.     _G["eCastingBar"..option.."StatusBarTexture"]:SetVertTile(True)
  1070.     _G["eCastingBar"..option.."ExampleStatusBarTexture"]:SetTexture( CASTING_BAR_TEXTURES[eCastingBar_Saved[option.."Texture"]] )
  1071.     _G["eCastingBar"..option.."ExampleStatusBarText"]:SetText( eCastingBar_Saved[option.."Texture"] )
  1072.     _G["eCastingBar"..option.."ExampleStatusBarTexture"]:SetHorizTile(True)
  1073.     _G["eCastingBar"..option.."ExampleStatusBarTexture"]:SetVertTile(True)
  1074.  
  1075.   end
  1076.  
  1077.   for index = 1, MIRRORTIMER_NUMTIMERS, 1 do
  1078.     if eCastingBar_Saved.MirrorTexture == nil then
  1079.         eCastingBar_Saved.MirrorTexture = "Perl"
  1080.     end
  1081.     if eCastingBar_Saved.MirrorTexture == "Halycon" then
  1082.         eCastingBar_Saved.MirrorTexture = "Halcyon"
  1083.     end
  1084.     _G["eCastingBarMirror"..index.."StatusBarTexture"]:SetTexture( CASTING_BAR_TEXTURES[eCastingBar_Saved.MirrorTexture] )
  1085.     _G["eCastingBarMirror"..index.."StatusBarTexture"]:SetWidth(20)
  1086.     _G["eCastingBarMirror"..index.."StatusBarTexture"]:SetHeight(10)
  1087.     _G["eCastingBarMirror"..index.."StatusBarTexture"]:SetHorizTile(True)
  1088.     _G["eCastingBarMirror"..index.."StatusBarTexture"]:SetVertTile(True)
  1089.  
  1090.   end
  1091.   eCastingBarMirrorExampleStatusBarTexture:SetTexture( CASTING_BAR_TEXTURES[eCastingBar_Saved.MirrorTexture] )
  1092.   eCastingBarMirrorExampleStatusBarText:SetText(eCastingBar_Saved.MirrorTexture)
  1093.   eCastingBarMirrorExampleStatusBarTexture:SetHorizTile(True)
  1094.   eCastingBarMirrorExampleStatusBarTexture:SetVertTile(True)
  1095.  
  1096. end
  1097.  
  1098. function eCastingBar_setColor(colorFrame)
  1099.     if colorFrame == "SpellColor" or colorFrame == "ChannelColor" then
  1100.         local   Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[colorFrame])
  1101.     eCastingBarExampleStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  1102.     if (eCastingBar.casting) then
  1103.       local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved.SpellColor)
  1104.           eCastingBarStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  1105.         elseif (eCastingBar.channeling) then
  1106.             local   Red, Green, Blue, Alpha = unpack(eCastingBar_Saved.ChannelColor)
  1107.         eCastingBarStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  1108.     end
  1109.     elseif colorFrame == "TargetBarSpellColor" or colorFrame == "TargetBarChannelColor" then
  1110.         local   Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[colorFrame])
  1111.     eCastingBarTargetBarExampleStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  1112.     elseif colorFrame == "FocusBarSpellColor" or colorFrame == "FocusBarChannelColor" then
  1113.         local   Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[colorFrame])
  1114.     eCastingBarFocusBarExampleStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  1115.     else
  1116.         local   Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[colorFrame])
  1117.     eCastingBarMirrorExampleStatusBar:SetStatusBarColor( Red, Green, Blue, Alpha )
  1118.         local timer = strupper(gsub(colorFrame, "Color", ""))
  1119.       for index = 1, MIRRORTIMER_NUMTIMERS, 1 do
  1120.             local frame = _G["eCastingBarMirror"..index];
  1121.             if ( frame:IsVisible() and (frame.timer == timer) ) then
  1122.                 local   Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[colorFrame])
  1123.             _G["eCastingBarMirror"..index.."StatusBar"]:SetStatusBarColor( Red, Green, Blue, Alpha )
  1124.         end
  1125.     end
  1126.   end
  1127. end
  1128.  
  1129. function eCastingBar_setIcons()
  1130.   for index, option in pairs(frameSuffixes) do
  1131.     if (eCastingBar_Saved[option.."IconPosition"] == nil) then
  1132.         eCastingBar_Saved[option.."IconPosition"] = "HIDDEN"
  1133.     end
  1134.     if (eCastingBar_Saved[option.."IconPosition"] == "LEFT") then
  1135.         _G["eCastingBar"..option.."StatusBarIcon"]:ClearAllPoints()
  1136.             _G["eCastingBar"..option.."StatusBarIcon"]:SetPoint("RIGHT", _G["eCastingBar"..option], "LEFT", -5)
  1137.             if _G["eCastingBar"..option].casting or _G["eCastingBar"..option].channeling then
  1138.                 _G["eCastingBar"..option.."StatusBarIcon"]:Show()
  1139.             end
  1140.         elseif (eCastingBar_Saved[option.."IconPosition"] == "RIGHT") then
  1141.         _G["eCastingBar"..option.."StatusBarIcon"]:ClearAllPoints()
  1142.             _G["eCastingBar"..option.."StatusBarIcon"]:SetPoint("LEFT", _G["eCastingBar"..option], "RIGHT", 5)
  1143.             if _G["eCastingBar"..option].casting or _G["eCastingBar"..option].channeling then
  1144.                 _G["eCastingBar"..option.."StatusBarIcon"]:Show()
  1145.             end
  1146.         else
  1147.             _G["eCastingBar"..option.."StatusBarIcon"]:Hide()
  1148.         end
  1149.   end
  1150. end
  1151.  
  1152. function eCastingBar_checkTimeColors()
  1153.   for index, option in pairs(frameSuffixes) do
  1154.     local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[option.."TimeColor"])
  1155.     _G["eCastingBar"..option.."StatusBar_Time"]:SetTextColor(Red,Green,Blue, Alpha )
  1156.   end
  1157.   local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved.MirrorTimeColor)
  1158.   for index = 1, MIRRORTIMER_NUMTIMERS, 1 do
  1159.     _G["eCastingBarMirror"..index.."StatusBar_Time"]:SetTextColor(Red,Green,Blue, Alpha )
  1160.   end
  1161. end
  1162.  
  1163. function eCastingBar_setDelayColor()
  1164.   for index, option in pairs(frameSuffixes) do
  1165.     local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[option.."DelayColor"])
  1166.     _G["eCastingBar"..option.."StatusBar_Delay"]:SetTextColor(Red,Green,Blue, Alpha )
  1167.   end
  1168. end
  1169.  
  1170. --[[ sets up the flash to look cool ]]--
  1171.  
  1172. --(thanks goes to kaitlin for the code used while resting).
  1173.  
  1174. function eCastingBar_checkFlashBorderColors()
  1175.     local frmFrame = "eCastingBarFlash"
  1176.     local intIndex = 0
  1177.     local strBorder = ""
  1178.  
  1179.   for index, option in pairs(frameSuffixes) do
  1180.     local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved[option.."FlashBorderColor"])
  1181.    
  1182.     -- for each border in eCastingBar__FlashBorders set the color to gold.
  1183.     for intIndex, strBorder in pairs(eCastingBar__FlashBorders) do
  1184.       _G[ "eCastingBar"..option.."Flash_"..strBorder ]:SetVertexColor( Red, Green, Blue, Alpha )   
  1185.     end
  1186.   end
  1187.    
  1188.   for index = 1, MIRRORTIMER_NUMTIMERS, 1 do
  1189.     local Red, Green, Blue, Alpha = unpack(eCastingBar_Saved.MirrorFlashBorderColor)
  1190.     for intIndex, strBorder in pairs(eCastingBar__FlashBorders) do
  1191.       _G[ "eCastingBarMirror"..index.."Flash_"..strBorder ]:SetVertexColor( Red, Green, Blue, Alpha )  
  1192.     end
  1193.   end
  1194. end
  1195.  
  1196.  
  1197. -- Sets the width and height of the casting bar
  1198.  
  1199. function eCastingBar_SetSize()
  1200.   local width, height, bottom, left, bar
  1201.   for index, option in pairs(frameSuffixes) do
  1202.     -- check boundaries
  1203.     if (eCastingBar_Saved[option.."Width"] < CASTING_BAR_SLIDER_WIDTH_MIN) then
  1204.       width = CASTING_BAR_SLIDER_WIDTH_MIN
  1205.     elseif (eCastingBar_Saved[option.."Width"] > CASTING_BAR_SLIDER_WIDTH_MAX ) then
  1206.       width = CASTING_BAR_SLIDER_WIDTH_MAX
  1207.     else
  1208.       width = eCastingBar_Saved[option.."Width"]
  1209.     end
  1210.    
  1211.     if (eCastingBar_Saved[option.."Height"] > CASTING_BAR_SLIDER_HEIGHT_MAX) then
  1212.       height = CASTING_BAR_SLIDER_HEIGHT_MAX
  1213.     elseif (eCastingBar_Saved[option.."Height"] < CASTING_BAR_SLIDER_HEIGHT_MIN ) then
  1214.       height = CASTING_BAR_SLIDER_HEIGHT_MIN
  1215.     else
  1216.       height = eCastingBar_Saved[option.."Height"]
  1217.     end
  1218.    
  1219.     left = eCastingBar_Saved[option.."Left"]
  1220.     bottom = eCastingBar_Saved[option.."Bottom"]
  1221.    
  1222.     --[[
  1223.     if (eCastingBar_Saved[option.."Left"] < 0) then
  1224.       left = 0;
  1225.     else
  1226.       left = eCastingBar_Saved[option.."Left"];
  1227.     end
  1228.    
  1229.     if (eCastingBar_Saved[option.."Bottom"] < 0 ) then
  1230.       bottom = 0;;
  1231.     else
  1232.       bottom = eCastingBar_Saved[option.."Bottom"];
  1233.     end
  1234.     ]]--
  1235.    
  1236.     _G["eCastingBar"..option]:SetWidth(width)
  1237.     _G["eCastingBar"..option]:SetHeight(height)
  1238.    
  1239.     _G["eCastingBar"..option.."Background"]:SetWidth(width - 9)
  1240.     _G["eCastingBar"..option.."Background"]:SetHeight(height - 10)
  1241.    
  1242.     _G["eCastingBar"..option.."Flash"]:SetWidth(width)
  1243.     _G["eCastingBar"..option.."Flash"]:SetHeight(height)
  1244.    
  1245.     _G["eCastingBar"..option.."StatusBar"]:SetWidth(width - 9)
  1246.     _G["eCastingBar"..option.."StatusBar"]:SetHeight(height - 10)
  1247.  
  1248.     _G["eCastingBar"..option.."StatusBarIcon"]:SetWidth(height - 6)
  1249.     _G["eCastingBar"..option.."StatusBarIcon"]:SetHeight(height - 6)
  1250.    
  1251.     _G["eCastingBar"..option.."_Outline"]:SetWidth(width)
  1252.     _G["eCastingBar"..option.."_Outline"]:SetHeight(height)
  1253.     _G["eCastingBar"..option.."_Outline"]:ClearAllPoints()
  1254.     _G["eCastingBar"..option.."_Outline"]:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", left, bottom )
  1255.    
  1256.     _G["eCastingBar"..option.."Flash_TOP"]:SetWidth(width - 24)
  1257.     _G["eCastingBar"..option.."Flash_BOTTOM"]:SetWidth(width - 24)
  1258.     _G["eCastingBar"..option.."Flash_LEFT"]:SetHeight(height - 24)
  1259.     _G["eCastingBar"..option.."Flash_RIGHT"]:SetHeight(height - 24)
  1260.    
  1261.     _G["eCastingBar"..option.."StatusBarSpark"]:SetHeight(height + 13)
  1262.    
  1263.     _G["eCastingBar"..option.."StatusBarText"]:SetWidth(width - 49)
  1264.     _G["eCastingBar"..option.."StatusBarText"]:SetHeight(height + 13)
  1265.    
  1266.     -- set the font size
  1267.     local fontName, _, fontFlags = _G["eCastingBar"..option.."StatusBarText"]:GetFont()
  1268.         _G["eCastingBar"..option.."StatusBarText"]:SetFont(fontName, eCastingBar_Saved[option.."FontSize"], fontFlags)
  1269.         _G["eCastingBar"..option.."StatusBar_Time"]:SetFont(fontName, eCastingBar_Saved[option.."FontSize"], fontFlags)
  1270.  
  1271.         -- set the Alpha
  1272.         local newAlpha = (eCastingBar_Saved[option.."Alpha"]/100)
  1273.         local Red, Green, Blue, Alpha = _G["eCastingBar"..option]:GetBackdropColor()
  1274.         _G["eCastingBar"..option]:SetBackdropColor(Red, Green, Blue, newAlpha)
  1275.         _G["eCastingBar"..option.."Background"]:SetAlpha(newAlpha)
  1276.         Red, Green, Blue, Alpha = _G["eCastingBar"..option.."_Outline"]:GetBackdropColor()
  1277.         _G["eCastingBar"..option.."_Outline"]:SetBackdropColor(Red, Green, Blue, newAlpha)
  1278.   end
  1279.  
  1280.   for index = 1, MIRRORTIMER_NUMTIMERS, 1 do
  1281.    
  1282.     -- check boundaries
  1283.     if (eCastingBar_Saved.MirrorWidth < CASTING_BAR_SLIDER_WIDTH_MIN) then
  1284.       width = CASTING_BAR_SLIDER_WIDTH_MIN
  1285.     elseif (eCastingBar_Saved.MirrorWidth > CASTING_BAR_SLIDER_WIDTH_MAX ) then
  1286.       width = CASTING_BAR_SLIDER_WIDTH_MAX
  1287.     else
  1288.       width = eCastingBar_Saved.MirrorWidth
  1289.     end
  1290.    
  1291.     if (eCastingBar_Saved.MirrorHeight > CASTING_BAR_SLIDER_HEIGHT_MAX) then
  1292.       height = CASTING_BAR_SLIDER_HEIGHT_MAX
  1293.     elseif (eCastingBar_Saved.MirrorHeight < CASTING_BAR_SLIDER_HEIGHT_MIN ) then
  1294.       height = CASTING_BAR_SLIDER_HEIGHT_MIN
  1295.     else
  1296.       height = eCastingBar_Saved.MirrorHeight
  1297.     end
  1298.    
  1299.     left = eCastingBar_Saved.MirrorLeft
  1300.     bottom = eCastingBar_Saved.MirrorBottom
  1301.    
  1302.     --[[
  1303.     if (eCastingBar_Saved.MirrorLeft < 0) then
  1304.       left = 0
  1305.     else
  1306.       left = eCastingBar_Saved.MirrorLeft
  1307.     end
  1308.    
  1309.     if (eCastingBar_Saved.MirrorBottom < 0 ) then
  1310.       bottom = 0
  1311.     else
  1312.       bottom = eCastingBar_Saved.MirrorBottom
  1313.     end
  1314.     ]]--
  1315.    
  1316.     _G["eCastingBarMirror"..index]:SetWidth(width)
  1317.     _G["eCastingBarMirror"..index]:SetHeight(height)
  1318.    
  1319.     _G["eCastingBarMirror"..index.."Background"]:SetWidth(width - 9)
  1320.     _G["eCastingBarMirror"..index.."Background"]:SetHeight(height - 10)
  1321.    
  1322.     _G["eCastingBarMirror"..index.."Flash"]:SetWidth(width)
  1323.     _G["eCastingBarMirror"..index.."Flash"]:SetHeight(height)
  1324.    
  1325.     _G["eCastingBarMirror"..index.."StatusBar"]:SetWidth(width - 9)
  1326.     _G["eCastingBarMirror"..index.."StatusBar"]:SetHeight(height - 10)
  1327.    
  1328.     _G["eCastingBarMirror_Outline"]:SetWidth(width)
  1329.     _G["eCastingBarMirror_Outline"]:SetHeight(height)
  1330.     _G["eCastingBarMirror_Outline"]:ClearAllPoints()
  1331.     _G["eCastingBarMirror_Outline"]:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", left, bottom )
  1332.    
  1333.     _G["eCastingBarMirror"..index.."Flash_TOP"]:SetWidth(width - 24)
  1334.     _G["eCastingBarMirror"..index.."Flash_BOTTOM"]:SetWidth(width - 24)
  1335.     _G["eCastingBarMirror"..index.."Flash_LEFT"]:SetHeight(height - 24)
  1336.     _G["eCastingBarMirror"..index.."Flash_RIGHT"]:SetHeight(height - 24)
  1337.    
  1338.     _G["eCastingBarMirror"..index.."StatusBarSpark"]:SetHeight(height + 13)
  1339.    
  1340.     _G["eCastingBarMirror"..index.."StatusBarText"]:SetWidth(width - 49)
  1341.     _G["eCastingBarMirror"..index.."StatusBarText"]:SetHeight(height + 13)
  1342.    
  1343.     -- set the font size
  1344.     local fontName, _, fontFlags = _G["eCastingBarMirror"..index.."StatusBarText"]:GetFont()
  1345.         _G["eCastingBarMirror"..index.."StatusBarText"]:SetFont(fontName, eCastingBar_Saved.MirrorFontSize, fontFlags)
  1346.         _G["eCastingBarMirror"..index.."StatusBar_Time"]:SetFont(fontName, eCastingBar_Saved.MirrorFontSize, fontFlags)
  1347.         -- set the Alpha
  1348.         local newAlpha = (eCastingBar_Saved.MirrorAlpha/100)
  1349.         local Red, Green, Blue, Alpha = _G["eCastingBarMirror"..index]:GetBackdropColor()
  1350.         _G["eCastingBarMirror"..index]:SetBackdropColor(Red, Green, Blue, newAlpha)
  1351.         _G["eCastingBarMirror"..index.."Background"]:SetAlpha(newAlpha)
  1352.         Red, Green, Blue, Alpha = eCastingBarMirror_Outline:GetBackdropColor()
  1353.         eCastingBarMirror_Outline:SetBackdropColor(Red, Green, Blue, newAlpha)
  1354.   end
  1355. end
  1356.  
  1357. function eCastingBar_Copy_Table(src, dest)
  1358.     for index, value in pairs(src) do
  1359.         if (type(value) == "table") then
  1360.             dest[index] = {};
  1361.             eCastingBar_Copy_Table(value, dest[index]);
  1362.         else
  1363.             dest[index] = value;
  1364.         end
  1365.     end
  1366. end
  Reply With Quote