Advertisement
PlatinKinggg

state.lua

Jun 15th, 2025 (edited)
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.22 KB | Gaming | 0 0
  1. -- Datei: state.lua
  2. -- Globale Zustandsverwaltung für Stavros 2.0
  3.  
  4.  
  5. -- Grundlegende Modullinks (werden später vom Startskript korrekt initialisiert)
  6. local config = require("config")
  7. local language = require("language")
  8. local userConfig = require("userConfig")
  9. local settingsModel = require("settingsmodel")
  10.  
  11. local state = {}
  12.  
  13. state.userConfig = userConfig
  14.  
  15. function state:getUserConfig(key)
  16.     return state.userConfig[key]
  17. end
  18.  
  19. function state.saveUserConfig()
  20.     local file = fs.open("userConfig", "w")
  21.     file.write("return " .. textutils.serialize(state.userConfig))
  22.     file.close()
  23. end
  24.  
  25. function state:setUserConfig(key, value)
  26.     state.userConfig[key] = value
  27.     state.settings[key] = value
  28.     state.saveUserConfig()
  29. end
  30.  
  31. local function deepMerge(base, override)
  32.     local result = {}
  33.     for k, v in pairs(base) do
  34.         if type(v) == "table" and type(override[k]) == "table" then
  35.             result[k] = deepMerge(v, override[k])
  36.         else
  37.             if override[k] ~= nil then
  38.                 result[k] = override[k]
  39.             else
  40.                 result[k] = v
  41.             end
  42.         end
  43.     end
  44.  
  45.     -- Zusätzliche Keys aus override übernehmen
  46.     for k, v in pairs(override) do
  47.         if result[k] == nil then
  48.             result[k] = v
  49.         end
  50.     end
  51.     return result
  52. end
  53.  
  54. -- Zentralisierte Konfiguration
  55. state.settings = deepMerge(config, userConfig or {})
  56.  
  57. -- Strukturierte Settings aus settingsModel (Weg A)
  58. -- Ergänzt state.settings um alle definierten defaults, falls noch nicht vorhanden
  59. for key, def in pairs(settingsModel) do
  60.     if state.settings[key] == nil then
  61.         state.settings[key] = def.default
  62.     end
  63. end
  64.  
  65. -- Metadatenmodell verfügbar machen
  66. state._model = settingsModel
  67.  
  68. state.rfProduction = {
  69.   history = {},
  70. }
  71.  
  72. -- Globale Variablen
  73. state.unixTime = os.time(os.date("*t"))
  74.  
  75. --state.langKey = language.map[state.settings.language] or "de"
  76. state.langKey = language.options[state.settings.language] or "de"
  77.  
  78. state.turbineEvaluateCount = 0
  79. state.turbines = {}
  80. state.turbineInfos = {}
  81. state.lastRotorSpeed = {}
  82. state.bladeEfficiencyFlow = {}
  83. state.turbineDiagnosis = {}
  84. state.turbineInfos = {}
  85. state.rpmDelta = {}
  86.  
  87. return state
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement