101 lines
No EOL
3.1 KiB
Lua
Executable file
101 lines
No EOL
3.1 KiB
Lua
Executable file
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 |