| DefineClass.DeveloperOptions = { | |
| __parents = { "PropertyObject" }, | |
| option_name = "", | |
| } | |
| function DeveloperOptions:GetProperty(property) | |
| local meta = table.find_value(self.properties, "id", property) | |
| if meta and not prop_eval(meta.dont_save, self, meta) then | |
| return GetDeveloperOption(property, self.class, self.option_name, meta.default) | |
| end | |
| return PropertyObject.GetProperty(self, property) | |
| end | |
| function DeveloperOptions:SetProperty(property, value) | |
| local meta = table.find_value(self.properties, "id", property) | |
| if meta and not prop_eval(meta.dont_save, self, meta) then | |
| return SetDeveloperOption(property, value, self.class, self.option_name) | |
| end | |
| return PropertyObject.SetProperty(self, property, value) | |
| end | |
| function GetDeveloperOption(option, storage, substorage, default) | |
| storage = storage or "Developer" | |
| substorage = substorage or "General" | |
| local ds = LocalStorage and LocalStorage[storage] | |
| return ds and ds[substorage] and ds[substorage][option] or default or false | |
| end | |
| function SetDeveloperOption(option, value, storage, substorage) | |
| if not LocalStorage then | |
| print("no local storage available!") | |
| return | |
| end | |
| storage = storage or "Developer" | |
| substorage = substorage or "General" | |
| value = value or nil | |
| local infos = LocalStorage[storage] or {} | |
| local info = infos[substorage] or {} | |
| info[option] = value | |
| infos[substorage] = info | |
| LocalStorage[storage] = infos | |
| Msg("DeveloperOptionsChanged", storage, substorage, option, value) | |
| DelayedCall(0, SaveLocalStorage) | |
| end | |
| function GetDeveloperHistory(class, name) | |
| if not LocalStorage then | |
| return {} | |
| end | |
| local history = LocalStorage.History or {} | |
| LocalStorage.History = history | |
| history[class] = history[class] or {} | |
| local list = history[class][name] or {} | |
| history[class][name] = list | |
| return list | |
| end | |
| function AddDeveloperHistory(class, name, entry, max_size, accept_empty) | |
| max_size = max_size or 20 | |
| if not LocalStorage or not accept_empty and (entry or "") == "" then | |
| return | |
| end | |
| local history = GetDeveloperHistory(class, name) | |
| table.remove_entry(history, entry) | |
| table.insert(history, 1, entry) | |
| while #history > max_size do | |
| table.remove(history) | |
| end | |
| SaveLocalStorageDelayed() | |
| end |