vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
local L = AceLibrary("AceLocale-2.0"):new("FruityLoots")
FruityLoots = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceDB-2.0", "AceConsole-2.0")

        function FruityLoots:OnInitialize()
                self:RegisterDB("FruityLootsDB")
                self:RegisterChatCommand({ "/floots", "/fruityloots" }, {
                        desc = self.notes,
                        type = "group",
                        args = {                
                                mode = {
                                        name = L"Once", 
                                        desc = L"Once",
                                        type = "toggle",
                                        get = function() return self.db.profile.Once end,
                                        set = function(v)
                                                self.db.profile.Once = v
                                        end,
                                }
                        }
                })
        end

        function FruityLoots:OnEnable()
                UIPanelWindows["LootFrame"] = nil
                LootFrame:SetMovable(1)
                LootFrame:SetFrameStrata("DIALOG")
                LootFrame:SetScript("OnMouseUp", function () this:StopMovingOrSizing() end)
                LootFrame:SetScript("OnMouseDown", function () this:StartMoving() end)
                self:RegisterEvent("LOOT_OPENED", "ItemUnderCursor")
                self:RegisterEvent("LOOT_SLOT_CLEARED", "ItemUnderCursor")
                self:RegisterEvent("LOOT_CLOSED")
        end

        function FruityLoots:OnDisable()
                self:UnregisterAllEvents()
        end


--[[------------------------------------------------------
        Main Function taken and improved from Telo's QuickLoot
----------------------------------------------------------]]

        function FruityLoots:ItemUnderCursor()
                self:AutoClose()
                if self.called then return end
                self.called = nil
                local x, y = GetCursorPosition()
                local s = LootFrame:GetEffectiveScale()
                x = x / s
                y = y / s
                for i = 1, LOOTFRAME_NUMBUTTONS, 1 do
                        local button = getglobal("LootButton"..i)
                        if button:IsVisible() then
                                x = x - 29
                                y = y + 66 + (40 * i)
                                self:LootFrame_SetPoint(x,y)
                                if self.db.profile.Once then self.called = true return end
                                        return
                        end 
                end
                if LootFrameDownButton:IsVisible() then
                        x = x - 158
                        y = y + 223
                        self:LootFrame_SetPoint(x,y)
                end
        end
        
        function FruityLoots:LOOT_CLOSED()
                 self.called = nil
        end
        
-- code submitted by hshh on www.wowace.com
        function FruityLoots:LootFrame_SetPoint(x, y)
                local screenWidth = GetScreenWidth()
                if (UIParent:GetWidth() > screenWidth) then screenWidth = UIParent:GetWidth() end
                local screenHeight = GetScreenHeight()
-- LootFrame is set to 256 wide in the xml file, but is actually only 191 wide
-- This is based on calculation envolving the offset on the close button:
-- The height is always 256, which is the correct number.
                local windowWidth = 191
                local windowHeight = 256
                if (x + windowWidth) > screenWidth then x = screenWidth - windowWidth end
                if y > screenHeight then y = screenHeight end
                if x < 0 then x = 0 end
                if (y - windowHeight) < 0 then y = windowHeight end
                LootFrame:ClearAllPoints()
                LootFrame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", x, y)
        end

        function FruityLoots:AutoClose()
                if GetNumLootItems() == 0 then HideUIPanel(LootFrame) return end
        end

Generated by GNU Enscript 1.6.5.90.