WoWInterface SVN Eui

[/] [Eui/] [element/] [actionbars/] [barvehicle.lua] - Rev 2

Compare with Previous | Blame | View Log

local E, C = unpack(select(2, ...)) -- Import Functions/Constants, Config, Locales

if not C["actionbar"].enable == true then return end


---------------------------------------------------------------------------
-- Setup Vehicle Bar
---------------------------------------------------------------------------

local vbar = CreateFrame("Frame", "EuiVehicleBar", EuiVehicleBarBackground, "SecureHandlerStateTemplate")
vbar:ClearAllPoints()
vbar:SetAllPoints(EuiVehicleBarBackground)

vbar:RegisterEvent("UNIT_ENTERED_VEHICLE")
vbar:RegisterEvent("UNIT_DISPLAYPOWER")
vbar:RegisterEvent("PLAYER_LOGIN")
vbar:RegisterEvent("PLAYER_ENTERING_WORLD")
vbar:SetScript("OnEvent", function(self, event, ...)
        if event == "PLAYER_LOGIN" then
                local button
                for i = 1, VEHICLE_MAX_ACTIONBUTTONS do
                        button = _G["VehicleMenuBarActionButton"..i]
                        self:SetFrameRef("VehicleMenuBarActionButton"..i, button)
                end     
                
                self:SetAttribute("_onstate-vehicleupdate", [[
                        if newstate == "s1" then
                                self:GetParent():Show()
                        else
                                self:GetParent():Hide()
                        end
                ]])
                
                RegisterStateDriver(self, "vehicleupdate", "[vehicleui]s1;s2")
        elseif event == "PLAYER_ENTERING_WORLD" then
                local button
                for i = 1, VEHICLE_MAX_ACTIONBUTTONS do
                        button = _G["VehicleMenuBarActionButton"..i]
                        button:SetSize(E.buttonsize*1.2, E.buttonsize*1.2)
                        button:ClearAllPoints()
                        button:SetParent(EuiVehicleBar)
                        if i == 1 then
                                button:SetPoint("BOTTOMLEFT", EuiVehicleBar, E.buttonspacing*1.2, E.buttonspacing*1.2)
                        else
                                local previous = _G["VehicleMenuBarActionButton"..i-1]
                                button:SetPoint("LEFT", previous, "RIGHT", E.buttonspacing*1.2, 0)
                        end
                end
        else
                VehicleMenuBar_OnEvent(self, event, ...)
        end
end)

--Create our custom Vehicle Button Hotkeys, because blizzard is fucking gay and won't let us reposition the default ones
do
        for i=1, VEHICLE_MAX_ACTIONBUTTONS do
                _G["EuiVehicleHotkey"..i] = _G["VehicleMenuBarActionButton"..i]:CreateFontString("EuiVehicleHotkey"..i, "OVERLAY", nil)
                _G["EuiVehicleHotkey"..i]:ClearAllPoints()
                _G["EuiVehicleHotkey"..i]:SetPoint("TOPRIGHT", 0, E.Scale(-3))
                _G["EuiVehicleHotkey"..i]:SetFont(E.font, 14, "OUTLINE")
                _G["EuiVehicleHotkey"..i].ClearAllPoints = E.dummy
                _G["EuiVehicleHotkey"..i].SetPoint = E.dummy
                
                if not C["actionbar"].hotkey == true then
                        _G["EuiVehicleHotkey"..i]:SetText("")
                        _G["EuiVehicleHotkey"..i]:Hide()
                        _G["EuiVehicleHotkey"..i].Show = E.dummy
                else
                        _G["EuiVehicleHotkey"..i]:SetText(_G["VehicleMenuBarActionButton"..i.."HotKey"]:GetText())
                end
        end
end

local UpdateVehHotkeys = function()
        if not UnitHasVehicleUI("player") then return end
        if C["actionbar"].hotkey ~= true then return end
        for i=1, VEHICLE_MAX_ACTIONBUTTONS do
                _G["EuiVehicleHotkey"..i]:SetText(_G["VehicleMenuBarActionButton"..i.."HotKey"]:GetText())
                _G["EuiVehicleHotkey"..i]:SetTextColor(_G["VehicleMenuBarActionButton"..i.."HotKey"]:GetTextColor())
        end
end

local VehTextUpdate = CreateFrame("Frame")
VehTextUpdate:RegisterEvent("UNIT_ENTERING_VEHICLE")
VehTextUpdate:RegisterEvent("UNIT_ENTERED_VEHICLE")
VehTextUpdate:SetScript("OnEvent", UpdateVehHotkeys)

-- vehicle button under minimap
local vehicle = CreateFrame("Button", nil, UIParent, "SecureHandlerClickTemplate")
vehicle:SetWidth(E.Scale(26))
vehicle:SetHeight(E.Scale(26))
vehicle:SetPoint("BOTTOMRIGHT", Minimap, "BOTTOMRIGHT", -E.Scale(2), E.Scale(2))
vehicle:SetNormalTexture("Interface\\AddOns\\Eui\\media\\vehicleexit")
vehicle:SetPushedTexture("Interface\\AddOns\\Eui\\media\\vehicleexit")
vehicle:SetHighlightTexture("Interface\\AddOns\\Eui\\media\\vehicleexit")
E.EuiSetTemplate(vehicle)
vehicle:RegisterForClicks("AnyUp")
vehicle:SetScript("OnClick", function() VehicleExit() end)
RegisterStateDriver(vehicle, "visibility", "[vehicleui][target=vehicle,noexists] hide;show")

-- vehicle on vehicle bar, dont need to have a state driver.. its parented to vehicle bar
local vehicle2 = CreateFrame("BUTTON", nil, EuiVehicleBarBackground, "SecureActionButtonTemplate")
vehicle2:SetWidth(E.buttonsize*1.2)
vehicle2:SetHeight(E.buttonsize*1.2)
vehicle2:SetPoint("RIGHT", EuiVehicleBarBackground, "RIGHT", -E.buttonspacing*1.2, 0)
vehicle2:RegisterForClicks("AnyUp")
vehicle2:SetNormalTexture("Interface\\AddOns\\Eui\\media\\vehicleexit")
vehicle2:SetPushedTexture("Interface\\AddOns\\Eui\\media\\vehicleexit")
vehicle2:SetHighlightTexture("Interface\\AddOns\\Eui\\media\\vehicleexit")
E.EuiSetTemplate(vehicle2)
vehicle2:SetScript("OnClick", function() VehicleExit() end)

Compare with Previous | Blame