Refactor whole addon to follow best practices
This commit is contained in:
parent
43fc252902
commit
414aef6924
31 changed files with 7843 additions and 29579 deletions
101
Addon/Code/SpeechFrame.lua
Executable file
101
Addon/Code/SpeechFrame.lua
Executable file
|
@ -0,0 +1,101 @@
|
|||
local _, addon = ...
|
||||
|
||||
local SpeechFrame = CreateFrame("ScrollFrame", "CzechQuestsSpeechFrame", UIParent, "UIPanelScrollFrameTemplate")
|
||||
SpeechFrame:Hide()
|
||||
|
||||
local ContentFrame = CreateFrame("Frame", nil, SpeechFrame)
|
||||
ContentFrame:Hide()
|
||||
|
||||
addon.SpeechFrame = SpeechFrame
|
||||
SpeechFrame.ContentFrame = ContentFrame
|
||||
|
||||
function SpeechFrame:Init()
|
||||
local frame = self
|
||||
|
||||
-- Default style
|
||||
self:SetSize(CzechQuestsAddon_Store.config.SPEECH_FRAME_WIDTH, 150)
|
||||
|
||||
-- Make movable
|
||||
self:SetMovable(true)
|
||||
self:EnableMouse(true)
|
||||
self:RegisterForDrag("LeftButton")
|
||||
|
||||
-- Hide sidebar
|
||||
self.ScrollBar:Hide()
|
||||
|
||||
-- Register drag event
|
||||
self:SetScript("OnDragStart", function()
|
||||
frame:StartMoving()
|
||||
end)
|
||||
self:SetScript("OnDragStop", function(self)
|
||||
frame:StopMovingOrSizing()
|
||||
local finalLeft, finalTop = self:GetLeft(), self:GetTop()
|
||||
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION = {
|
||||
x = finalLeft,
|
||||
y = finalTop
|
||||
}
|
||||
end)
|
||||
|
||||
-- Create ContentFrame
|
||||
ContentFrame:Init()
|
||||
SpeechFrame:SetScrollChild(SpeechFrame.ContentFrame)
|
||||
|
||||
-- Register hover events
|
||||
self:SetScript("OnEnter", function() self.ContentFrame.Texture:SetAlpha(0.8) end)
|
||||
self:SetScript("OnLeave", function() self.ContentFrame.Texture:SetAlpha(0.2) end)
|
||||
|
||||
self:UpdateSettings()
|
||||
end
|
||||
|
||||
function ContentFrame:Init()
|
||||
-- Default style
|
||||
self:SetSize(SpeechFrame:GetWidth(), 1)
|
||||
|
||||
-- Texture for control color and alpha
|
||||
self.Texture = self:CreateTexture(nil, "ARTWORK")
|
||||
self.Texture:SetTexture("Interface\\Buttons\\WHITE8x8")
|
||||
self.Texture:SetVertexColor(0, 0, 0, 0.2)
|
||||
|
||||
-- Set points to edges
|
||||
self.Texture:SetPoint("TOPLEFT", self ,"TOPLEFT", 0, 0)
|
||||
self.Texture:SetPoint("BOTTOMRIGHT", self ,"BOTTOMRIGHT", 0, 0)
|
||||
|
||||
-- Set ContentFrame position
|
||||
self:SetPoint("BOTTOMLEFT", SpeechFrame, "BOTTOMLEFT", 0, 0)
|
||||
end
|
||||
|
||||
function ContentFrame:CreateMessage(message)
|
||||
-- Default style
|
||||
local MessageFrame = CreateFrame("Frame", nil, SpeechFrame.ContentFrame)
|
||||
MessageFrame:SetSize(SpeechFrame.ContentFrame:GetWidth() - 20, 1)
|
||||
|
||||
-- Define Message
|
||||
MessageFrame.Message = addon.API.CreateCzechFont(
|
||||
MessageFrame,
|
||||
CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_NAME,
|
||||
CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_SIZE,
|
||||
"THICK"
|
||||
)
|
||||
MessageFrame.Message:SetTextColor(1, 1, 1)
|
||||
MessageFrame.Message:SetPoint("TOPLEFT", MessageFrame, "TOPLEFT", 5, -5)
|
||||
MessageFrame.Message:SetPoint("BOTTOMRIGHT", MessageFrame, "BOTTOMRIGHT", -5, 5)
|
||||
|
||||
-- Set text and height
|
||||
MessageFrame.Message:SetText(message)
|
||||
MessageFrame:SetHeight(MessageFrame.Message:GetHeight() + 10)
|
||||
|
||||
return MessageFrame
|
||||
end
|
||||
|
||||
function SpeechFrame:UpdateSettings()
|
||||
self:SetWidth(CzechQuestsAddon_Store.config.SPEECH_FRAME_WIDTH)
|
||||
self.ContentFrame:SetWidth(self:GetWidth())
|
||||
|
||||
-- Set position
|
||||
self:ClearAllPoints()
|
||||
self:SetPoint(
|
||||
"TOPLEFT", UIParent, "TOPLEFT",
|
||||
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION.x,
|
||||
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION.y
|
||||
)
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue