diff --git a/Modules/Config.lua b/Modules/Config.lua new file mode 100644 index 0000000..f502c5e --- /dev/null +++ b/Modules/Config.lua @@ -0,0 +1,128 @@ +local addonname, shared = ... +---@cast shared HeimdallShared +---@cast addonname string + +local configFrame = CreateFrame("Frame", "HeimdallConfig", UIParent) + +---@diagnostic disable-next-line: missing-fields +shared.Config = {} +function shared.Config.Init() + configFrame:SetSize(256+256, 512) + configFrame:SetPoint("CENTER") + configFrame:SetFrameStrata("HIGH") + configFrame:EnableMouse(true) + configFrame:SetMovable(true) + configFrame:SetResizable(false) + configFrame:SetBackdrop({ + bgFile = "Interface/Tooltips/UI-Tooltip-Background", + edgeFile = "Interface/Tooltips/UI-Tooltip-Border", + tile = true, + tileSize = 4, + edgeSize = 4, + insets = { left = 4, right = 4, top = 4, bottom = 4 } + }) + configFrame:SetBackdropColor(0, 0, 0, 0.8) + configFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1) + + configFrame:SetMovable(true) + configFrame:EnableMouse(true) + configFrame:RegisterForDrag("LeftButton") + configFrame:SetScript("OnDragStart", function(self) + self:StartMoving() + end) + configFrame:SetScript("OnDragStop", function(self) + self:StopMovingOrSizing() + end) + configFrame:SetScript("OnShow", function(self) + self:SetScale(1) + end) + + local title = configFrame:CreateFontString(nil, "ARTWORK", "GameFontNormal") + title:SetText("Heimdall Config") + title:SetPoint("TOP", configFrame, "TOP", 0, -8) + + local spotterConfigFrame = CreateFrame("Frame", "HeimdallSpotterConfig", configFrame) + spotterConfigFrame:SetSize(256, 128) + spotterConfigFrame:SetPoint("TOPLEFT", configFrame, "TOPLEFT", 8, -24) + spotterConfigFrame:SetBackdrop({ + bgFile = "Interface/Tooltips/UI-Tooltip-Background", + edgeFile = "Interface/Tooltips/UI-Tooltip-Border", + tile = true, + tileSize = 4, + edgeSize = 4, + insets = { left = 4, right = 4, top = 4, bottom = 4 } + }) + spotterConfigFrame:SetBackdropColor(0, 0, 0, 0.8) + spotterConfigFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1) +-- spotterConfigFrame:Hide() + + local spotterEnableButton = CreateFrame("CheckButton", "HeimdallSpotterEnable", spotterConfigFrame, "UICheckButtonTemplate") + spotterEnableButton.text = spotterEnableButton:CreateFontString(nil, "OVERLAY", "GameFontNormal") + spotterEnableButton.text:SetText("Enable Spotter") + spotterEnableButton.text:SetPoint("LEFT", spotterEnableButton, "RIGHT", 0, 0) + spotterEnableButton:SetSize(24, 24) + spotterEnableButton:SetPoint("TOPLEFT", spotterConfigFrame, "TOPLEFT", 4, -4) + spotterEnableButton:SetChecked(Heimdall_Data.config.spotter.enabled) + spotterEnableButton:SetScript("OnClick", function() + Heimdall_Data.config.spotter.enabled = spotterEnableButton:GetChecked() + end) +-- +-- ---@type table +-- local spotterEnableButton = CreateFrame("Button", "HeimdallSpotterEnable", configFrame, "UIPanelButtonTemplate") +-- spotterEnableButton:SetText("Enable Spotter") +-- spotterEnableButton:SetSize(100, 30) +-- spotterEnableButton:SetPoint("TOPLEFT", configFrame, "TOPLEFT", 10, -40) +-- spotterEnableButton:SetScript("OnClick", function() +-- print("Button was clicked!") +-- end) +-- +-- local checkButton = CreateFrame("CheckButton", nil, configFrame, "UICheckButtonTemplate") +-- checkButton:SetPoint("TOPRIGHT", configFrame, "TOPRIGHT", -10, -40) +-- checkButton.text = checkButton:CreateFontString(nil, "OVERLAY", "GameFontNormal") +-- checkButton.text:SetText("Check Me") +-- checkButton.text:SetPoint("LEFT", checkButton, "RIGHT", 5, 0) +-- checkButton:SetScript("OnClick", function() +-- if checkButton:GetChecked() then +-- print("Check Button is checked.") +-- else +-- print("Check Button is unchecked.") +-- end +-- end) +-- +-- -- Create a text element +-- local text = configFrame:CreateFontString(nil, "ARTWORK", "GameFontHighlight") +-- text:SetText("This is some text in the frame.") +-- text:SetPoint("TOPLEFT", configFrame, "TOPLEFT", 10, -80) +-- +-- -- Create a small edit box +-- local smallEditBox = CreateFrame("EditBox", nil, configFrame) +-- smallEditBox:SetSize(200, 20) +-- smallEditBox:SetPoint("TOPLEFT", configFrame, "TOPLEFT", 10, -110) +-- smallEditBox:SetAutoFocus(false) +-- smallEditBox:SetFontObject("GameFontNormal") +-- smallEditBox:SetScript("OnEnterPressed", function() +-- print("Entered text: " .. smallEditBox:GetText()) +-- end) +-- +-- -- Create a large edit box +-- local largeEditBox = CreateFrame("EditBox", nil, configFrame) +-- largeEditBox:SetSize(280, 100) +-- largeEditBox:SetPoint("TOP", configFrame, "TOP", 0, -150) +-- largeEditBox:SetAutoFocus(false) +-- largeEditBox:SetFontObject("GameFontNormal") +-- largeEditBox:SetMultiLine(true) +-- largeEditBox:EnableMouse(true) +-- largeEditBox:SetMaxLetters(0) +-- largeEditBox:SetScript("OnEscapePressed", function() +-- largeEditBox:ClearFocus() +-- end) + + configFrame:Show() + print("Heimdall - Config loaded") +end + +SlashCmdList["HEIMDALL_CONFIG"] = function() + configFrame:Show() +end +SLASH_HEIMDALL_CONFIG1 = "/heimdall_config" +SLASH_HEIMDALL_CONFIG2 = "/hc"