local g="\078\101\120\117\115\083\101\116\116\105\110\103\115"local A=(require(script.Parent.Parent:WaitForChild("\078\101\120\117\115\080\108\117\103\105\110\070\114\097\109\101\119\111\114\107\080\114\111\106\101\099\116"))):GetContext(script)local I=A:GetResource("\066\097\115\101\046\078\101\120\117\115\067\111\110\116\097\105\110\101\114")local O=I:Extend()O:SetClassName(g)A:SetContextResource(O)local Y function O.GetSettings()if not Y then Y=O.new()end return Y end function O.__new(A)A:InitializeSuper()A.Name=g end function O.GetSetting(I,g,A)return(settings())[g][A]end function O.SetSetting(O,g,A,I)(settings())[g][A]=I end function O.GetSettingsChangedSignal(I,g,A)local O=(settings())[g]if A==nil then return O.Changed else return O:GetPropertyChangedSignal(A)end end return O
--[[
TheNexusAvenger

Proxy's Roblox's settings.
--]]

local CLASS_NAME = "NexusSettings"



local NexusPluginFramework = require(script.Parent.Parent:WaitForChild("NexusPluginFrameworkProject")):GetContext(script)
local NexusContainer = NexusPluginFramework:GetResource("Base.NexusContainer")

local NexusSettings = NexusContainer:Extend()
NexusSettings:SetClassName(CLASS_NAME)
NexusPluginFramework:SetContextResource(NexusSettings)

local CachedSettings

--[[
Returns a singleton version of the settings.
--]]
function NexusSettings.GetSettings()
	--Create the cached settings.
	if not CachedSettings then
		CachedSettings = NexusSettings.new()
	end
	
	--Return the cached settings.
	return CachedSettings
end

--[[
Creates a Nexus Settings object.
--]]
function NexusSettings:__new()
	self:InitializeSuper()
	self.Name = CLASS_NAME
end

--[[
Returns the setting for the given category and name.
--]]
function NexusSettings:GetSetting(Category,Name)
	return settings()[Category][Name]
end

--[[
Sets the setting for the given category and name.
--]]
function NexusSettings:SetSetting(Category,Name,Value)
	settings()[Category][Name] = Value
end

--[[
Returns a changed signal for a given property. If the name
is nil, a changed signal for the category is returned.
--]]
function NexusSettings:GetSettingsChangedSignal(Category,Name)
	--Get the settings category.
	local SettingsCategory = settings()[Category]
	
	--Return the changed signal.
	if Name == nil then
		return SettingsCategory.Changed
	else
		return SettingsCategory:GetPropertyChangedSignal(Name)
	end
end



return NexusSettings