-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbrSettings.lua
More file actions
107 lines (86 loc) · 2.77 KB
/
brSettings.lua
File metadata and controls
107 lines (86 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
---@type _,br,_
local _,br,_ = ...
---@type br.Logging
local Log = br.Logging or {}
-- ---@type br.ModuleLoader
-- local ModuleLoader = br.ModuleLoader or {}
-- if(ModuleLoader.name ~= "ModuleLoader") then
-- Log:Log("Module Loader not found; It must be initialized first.")
-- return
-- end
---@class br.Settings
---@field settings table #Settings table
---@field __index br.Settings
---@field settingsFullPath string #Full path to settings file
---@field LoadSettings function #Load settings from file
---@field SaveSettings function #Save settings to file
---@field Initialize fun(self:br.Settings,path:string,file:string) #Initialize settings system
local Settings = br.Settings or {}
br.Settings = Settings
br.Settings.__index = br.Settings
Settings.Loaded = false
function Settings:LoadSettings()
local data = br.ReadFile(self.settingsFullPath)
if not data or data == "" then return end
self.settings = br.JSONDecode(data)
self.Loaded = true
end
function Settings:SaveSettings()
local encoded = br.JSONEncode(self.settings)
br.WriteFile(self.settingsFullPath, encoded)
end
function Settings:ResetSettings()
end
function Settings:LoadDefaultSettings()
end
function Settings:LoadProfileSettings()
end
function Settings:SaveProfileSettings()
end
function Settings:ResetProfileSettings()
end
function Settings:LoadDefaultProfileSettings()
end
function Settings:GetSettingToggle(key, default)
local setting = self:GetSetting(key)
if setting == nil then
return default
end
return setting
end
---Return system setting with a given value
---@param key string @key to retrieve
---@return any @results may be string, number, table or nil
function Settings:GetSetting(key)
if not self.Loaded then
Log:LogError("Settings not loaded yet; cannot get setting for key: " .. tostring(key))
end
return self.settings[key]
end
---Set a system setting with a given value
---@param key string @key to set
---@param value any @value to set
function Settings:SetSetting(key, value)
self.settings[key] = value
Settings:SaveSettings()
end
function Settings:GetProfileSetting()
end
function Settings:SetProfileSetting()
end
function Settings:Initialize(path,file)
self.settingsLocation = path or "./settings"
self.settingsFile = file or "brlite_settings.json"
self.settingsFullPath = self.settingsLocation .. "/" .. self.settingsFile
print("Settings full path: " .. tostring(self.settingsFullPath))
--Ensure directory and file exist
if not br.DirectoryExists(path) then
br.CreateDirectory(path)
end
if not br.FileExists(self.settingsFullPath) then
br.WriteFile(self.settingsFullPath , "{}")
end
Settings:LoadSettings()
end
br.Settings = Settings
Log:Log("Settings module initialized")