Quantcast
-- Author      : Chrono
-- Create Date : 6/14/2020 6:22:07 PM

local ADDON_NAME, Import = ...;

defaultValue = {
	IS_FRAME_VISIBLE = true,
	DRESS_BLIZZ_BUBBLE = true,
	SMART_COLORING = true,
	CREATE_BUTTON_EXTRA_TEXT = true,

	SELECTED_COLOR_RGB = { r = 1.0, g = 1.0, b = 1.0 },
	SELECTED_COLOR = "Say",
	CUSTOM_COLOR = { r = 1.0, g = 1.0, b = 1.0 },

	GENERATE_TOTAL_RP3_BUBBLES = true,
	GENERATE_TOTAL_RP3_BUBBLES_FOR_OTHER_PLAYERS = true
}

function initSettings()
	if settings == nil then
		settings = {}
	end
	settings.get = function(key)
		if settings[key] == nil then
			settings[key] = defaultValue[key];
		end
		return settings[key];
	end
	settings.set = function(key, value)
		settings[key] = value;
	end
	Import.settings = settings;
end

function ConfigureFrameOnRuntime(self, event, ...)
	--Check if TRP3 is installed and turn off the TRP3 options if it's not there.
	if TRP3_API == nil then
		totalRP3Header:SetFontObject("GameFontDisableLarge");
		totalRP3GenerateOptionLabel:SetFontObject("GameFontDisable");
		totalRP3GenerateOtherPlayerLabel:SetFontObject("GameFontDisable");
		totalRP3GenerateCheck:Disable();
		totalRP3GenerateOtherCheck:Disable();
		NotInstalledLabel:Show();
	end
	self:RegisterForDrag("LeftButton");
	self:SetScript("OnDragStart",self.StartMoving);
	self:SetScript("OnDragStop",self.StopMovingOrSizing);
	self:SetBackdrop(BACKDROP_DIALOG_32_32)
	self:OnBackdropLoaded()
end

function ShowSettingsPanel()
	if not SettingsPanel:IsVisible() then
		SettingsPanel:Show()

		DressBlizzBubbleCheck:SetChecked(settings.get("DRESS_BLIZZ_BUBBLE"));
		ExtraTextCheck:SetChecked(settings.get("CREATE_BUTTON_EXTRA_TEXT"));
		SmartColoringCheck:SetChecked(settings.get("SMART_COLORING"));
		totalRP3GenerateCheck:SetChecked(settings.get("GENERATE_TOTAL_RP3_BUBBLES"));
		totalRP3GenerateOtherCheck:SetChecked(settings.get("GENERATE_TOTAL_RP3_BUBBLES_FOR_OTHER_PLAYERS"));

		TotalRP3_onStart();
	else
		CancelSettings();
	end
end

function ToggleReloadWarning(self, event, ...)
	--This function detects if the user has changed the Dress Blizz Bubble setting, which will show a reload required message on changed.
	if settings.DRESS_BLIZZ_BUBBLE ~= DressBlizzBubbleCheck:GetChecked() then
		if not UIReloadWarningLabel:IsVisible() then
			UIReloadWarningLabel:Show();
			SettingsPanel:SetSize(SettingsPanel:GetWidth(),SettingsPanel:GetHeight()+UIReloadWarningLabel:GetHeight()+5);
		end
	else
		if UIReloadWarningLabel:IsVisible() then
			UIReloadWarningLabel:Hide();
			SettingsPanel:SetSize(SettingsPanel:GetWidth(),SettingsPanel:GetHeight()-UIReloadWarningLabel:GetHeight()-5);
		end
	end
end

function SaveSettings(self, event, ...)
	local reloadRequired = settings.DRESS_BLIZZ_BUBBLE ~= DressBlizzBubbleCheck:GetChecked()

	settings.DRESS_BLIZZ_BUBBLE = DressBlizzBubbleCheck:GetChecked();
	settings.GENERATE_TOTAL_RP3_BUBBLES = totalRP3GenerateCheck:GetChecked();
	settings.GENERATE_TOTAL_RP3_BUBBLES_FOR_OTHER_PLAYERS = totalRP3GenerateOtherCheck:GetChecked();
	settings.SMART_COLORING = SmartColoringCheck:GetChecked();
	settings.CREATE_BUTTON_EXTRA_TEXT = ExtraTextCheck:GetChecked();

	SettingsPanel:Hide();
	if reloadRequired then
		ReloadUI()
	end
end

function CancelSettings()
	SettingsPanel:Hide();
end

Import.initSettings = initSettings;
Import.ShowSettingsPanel = ShowSettingsPanel