Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Datei: state.lua
- -- Globale Zustandsverwaltung für Stavros 2.0
- -- Grundlegende Modullinks (werden später vom Startskript korrekt initialisiert)
- local config = require("config")
- local language = require("language")
- local userConfig = require("userConfig")
- local settingsModel = require("settingsmodel")
- local state = {}
- state.userConfig = userConfig
- function state:getUserConfig(key)
- return state.userConfig[key]
- end
- function state.saveUserConfig()
- local file = fs.open("userConfig", "w")
- file.write("return " .. textutils.serialize(state.userConfig))
- file.close()
- end
- function state:setUserConfig(key, value)
- state.userConfig[key] = value
- state.settings[key] = value
- state.saveUserConfig()
- end
- local function deepMerge(base, override)
- local result = {}
- for k, v in pairs(base) do
- if type(v) == "table" and type(override[k]) == "table" then
- result[k] = deepMerge(v, override[k])
- else
- if override[k] ~= nil then
- result[k] = override[k]
- else
- result[k] = v
- end
- end
- end
- -- Zusätzliche Keys aus override übernehmen
- for k, v in pairs(override) do
- if result[k] == nil then
- result[k] = v
- end
- end
- return result
- end
- -- Zentralisierte Konfiguration
- state.settings = deepMerge(config, userConfig or {})
- -- Strukturierte Settings aus settingsModel (Weg A)
- -- Ergänzt state.settings um alle definierten defaults, falls noch nicht vorhanden
- for key, def in pairs(settingsModel) do
- if state.settings[key] == nil then
- state.settings[key] = def.default
- end
- end
- -- Metadatenmodell verfügbar machen
- state._model = settingsModel
- state.rfProduction = {
- history = {},
- }
- -- Globale Variablen
- state.unixTime = os.time(os.date("*t"))
- --state.langKey = language.map[state.settings.language] or "de"
- state.langKey = language.options[state.settings.language] or "de"
- state.turbineEvaluateCount = 0
- state.turbines = {}
- state.turbineInfos = {}
- state.lastRotorSpeed = {}
- state.bladeEfficiencyFlow = {}
- state.turbineDiagnosis = {}
- state.turbineInfos = {}
- state.rpmDelta = {}
- return state
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement