Refactor whole addon to follow best practices

This commit is contained in:
Roman Jaroš 2025-03-07 12:52:37 +01:00
parent 43fc252902
commit 414aef6924
31 changed files with 7843 additions and 29579 deletions

View file

@ -1,86 +1,52 @@
-- Namespace
CzechQuestsAddon = {};
CzechQuestsAddon.fontPath = "Interface\\AddOns\\CzechQuests\\Assets\\Fonts\\"
local _, addon = ...
-- Define data
CzechQuestsAddon.data = {};
CzechQuestsAddon.data.quest = {};
CzechQuestsAddon.data.item = {};
CzechQuestsAddon.data.speech = {}
-- Prepare API object
addon.API = {}
addon.data = {};
addon.data.quest = {};
addon.data.item = {};
addon.data.speech = {}
-- Expose object as global for other addon integration
CzechQuestsAddon = {}
CzechQuestsAddon.data = addon.data
local function InitStore()
-- Init Store
CzechQuestsAddon_Store = CzechQuestsAddon_Store or {}
CzechQuestsAddon_Store.config = CzechQuestsAddon_Store.config or {}
-- General Settings
CzechQuestsAddon_Store.config.DEBUG_MODE = CzechQuestsAddon_Store.config.DEBUG_MODE or false
-- Quest Settings
CzechQuestsAddon_Store.config.QUEST_ENABLED = CzechQuestsAddon_Store.config.QUEST_ENABLED or true
CzechQuestsAddon_Store.config.QUEST_DARK_MODE = CzechQuestsAddon_Store.config.QUEST_DARK_MODE or false
CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_SIZE = CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_SIZE or 18
CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_SIZE = CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_SIZE or 14
CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_NAME = CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_NAME or 'morpheus_cz.ttf'
CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_NAME = CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_NAME or 'frizquadratatt_cz.ttf'
CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA = CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA or 80
CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA_ONLY_MOVING = CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA_ONLY_MOVING or true
-- Speech Settings
CzechQuestsAddon_Store.config.SPEECH_ENABLED = CzechQuestsAddon_Store.config.SPEECH_ENABLED or true
CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_SIZE = CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_SIZE or 15
CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_NAME = CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_NAME or 'frizquadratatt_cz.ttf'
CzechQuestsAddon_Store.config.SPEECH_FRAME_WIDTH = CzechQuestsAddon_Store.config.SPEECH_FRAME_WIDTH or 320
CzechQuestsAddon_Store.config.SPEECH_ORIGINAL_WHEN_MISSING = CzechQuestsAddon_Store.config.SPEECH_ORIGINAL_WHEN_MISSING or false
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION = CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION or { x = 0, y = 0}
end
-- Event handler frame
local frame = CreateFrame("Frame")
-- OnEvent function for event processing
local function OnEvent(self, event, addonName, ...)
if event == "ADDON_LOADED" and addonName == 'CzechQuests' then
-- Initialize the SavedVariables if it doesn't exist
if not CzechQuestsAddon_Store then
CzechQuestsAddon_Store = {}
end
if not CzechQuestsAddon_Store.config then
CzechQuestsAddon_Store.config = {}
end
if not CzechQuestsAddon_Store.config.DEBUG_MODE then
CzechQuestsAddon_Store.config.DEBUG_MODE = false;
end
-- Quests
if CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_ENABLED == nil then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_ENABLED = true;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_DARK_MODE then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_DARK_MODE = false;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE = 18;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE = 16;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE = 14;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY = 'morpheus_cz.ttf';
end
if not CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY = 'frizquadratatt_cz.ttf';
end
if not CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA = 80;
end
if CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA_ONLY_MOVING == nil then
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA_ONLY_MOVING = true;
end
-- Speech
if CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_ENABLED == nil then
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_ENABLED = true;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE then
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE = 15;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY then
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY = 'frizquadratatt_cz.ttf';
end
if not CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH then
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH = 320;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_ORIGINAL_WHEN_MISSING then
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_ORIGINAL_WHEN_MISSING = false;
end
if not CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_POSITION then
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_POSITION = { x = 0, y = 0}
end
-- Initialize settings
CzechQuestsAddon:InitializeSettings()
-- Initialize Quests
CzechQuestsAddon:InitializeTranslations()
-- Unregister the ADDON_LOADED event after handling it
InitStore()
addon.API.InitOptions()
addon.API.InitQuests()
addon.API.InitSpeeches()
self:UnregisterEvent("ADDON_LOADED")
end
end