Сохранения скриптовых данных (luamarshal)
Обзор
IMPORTANT
Статус: Не поддерживается
Минимальная версия: 1.0
Утилита сохранения/загрузки, использующая Lua Marshal предоставляет служебные функции для сохранения и загрузки состояния игры. Она абстрагирует процессы сериализации и десериализации, позволяя легко сохранять состояние игры между сеансами.
Функции
saveToMarshalFile(stateTable): сериализует заданную таблицу Lua (stateTable) и сохраняет её в файл. Полезно для сохранения состояний игры, конфигураций или сохранения любых других табличных данных.loadFromMarshalFile(): считывает сериализованную таблицу Lua из файла, десериализует её и возвращает таблицу Lua. Полезно для загрузки сохраненных состояний игры, конфигураций или загрузки любых других ранее сохраненных табличных данных.
Использование
Аналогично исходным функциям save(f), load(r) мы можем использовать функции save_state(), load_state() для записи в .dat файлы информации. Для этого необходимо зарегистрировать эти функции в биндерах аналогично save(f), load(r), после чего мы можем их использовать следующим образом:
function save_state()
local gameState = {
score = 1000,
level = 5,
player = {
name = "Player",
items = {"x", "y", "z"}
}
}
save_manager.saveToMarshalFile(gameState)
endДля загрузки
function load_state()
local gameState = save_manager.loadFromMarshalFile()
if gameState then
score = gameState.score
level = gameState.level
if gameState.player then
player.name = gameState.player.name
player.items = gameState.player.items
end
end
endПреимущества
Данный метод абстрагирует данные в отдельный .dat файл, изолируя их от .scop файла сохранения; запись данных не имеет верхнего ограничения, данный метод более стабилен и не провоцирует ситуации с "битыми" файлами сохранений.
Недостатки
Данный метод принимает только допустимые типы Lua, такие как числа, строки, логические значения, таблицы (которые содержат эти допустимые типы) или функции. Пользовательские данные (userdata) не поддерживаются.