mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-08-12 16:35:11 +09:00
emmylua only parses the inline cast as `--[[@as T]]`, the spaced form `--[[ @as T ]]` is treated as a plain comment, so all 149 of them were doing nothing. LuaGuiElement.style is a union because a style name can be assigned to it, so reading it back needs the cast. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
32 lines
1.2 KiB
Lua
32 lines
1.2 KiB
Lua
local Gui = require("modules/exp_gui")
|
|
local PlayerData = require("modules.exp_legacy.expcore.player_data")
|
|
|
|
-- Used to store the state of the toolbar when a player leaves
|
|
local ToolbarState = PlayerData.Settings:combine("ToolbarState")
|
|
ToolbarState:set_metadata{
|
|
stringify = function()
|
|
return "Toolbar is saved on exit"
|
|
end,
|
|
}
|
|
|
|
--- Uncompress the data to be more useable
|
|
ToolbarState:on_load(function(player_name, value)
|
|
-- If there is no value, do nothing
|
|
if value == nil then return end
|
|
-- Old format, we discard it [ string[], string[], string[], boolean ]
|
|
if type(value) ~= "string" then return end
|
|
|
|
local decompressed = helpers.json_to_table(assert(helpers.decode_string(value), "Failed String Decode"))
|
|
local player = assert(game.get_player(player_name))
|
|
Gui.toolbar.set_state(player, decompressed --[[@as Gui.ToolbarState]])
|
|
|
|
return nil -- We don't save the state, use Gui.toolbar.get_state
|
|
end)
|
|
|
|
--- Save the current state of the players toolbar menu
|
|
ToolbarState:on_save(function(player_name, _)
|
|
local player = assert(game.get_player(player_name))
|
|
local value = Gui.toolbar.get_state(player)
|
|
return helpers.encode_string(helpers.table_to_json(value))
|
|
end)
|