loadMissionSaveData
Definition
-- @/lua/ge/extensions/gameplay/missions/progress.lua:886
local function loadMissionSaveData(mission)
local id = mission.id
local path = savePath .. id .. '.json'
local updated = false
if FS:fileExists(path) then
local state, result = xpcall(function()
local saveData = jsonReadFile(path)
local updated = false
-- fallback for old savedata format
if saveData.unlockedStars then
for k, v in pairs(saveData.unlockedStars) do
if v == false then saveData.unlockedStars[k] = 0 end
if v == true then saveData.unlockedStars[k] = 1 end
end
end
if career_career and career_career.isActive() then
if not career_modules_missionWrapper then
plog("E", "", "Trying to load mission with career_modules_missionWrapper not loaded but career_career is active ("..dumps(id)..")")
else
career_modules_missionWrapper.onMissionLoaded(id, saveData.dirtyDate)
end
end
-- check if saveData is outdated and if it has an update function
if saveData.version < mission.latestVersion and mission.updateAttempt then
updated = true
saveData = updateSaveData(mission, saveData)
end
-- upgrade start unlocks into star attempts count.
return {saveData, updated}
end, debug.traceback)
if state ~= false and result ~= nil then
local saveData, wasUpdated = result[1], result[2]
updated = wasUpdated or updated
-- sanitize progress (add default)
if mission.loadSaveData then
local succ, err, prog = xpcall(function()
mission:loadSaveData(saveData)
end, debug.traceback)
if not succ then
plog("E", "", "Error loading custom mission progress, ID: " .. dumps(id) .. ". Error follows:")
plog("E", "", err)
else
saveData = prog
end
end
return saveData, updated
else
-- check for backupFile
plog("E", "", "Error loading mission save data for ID: " .. dumps(id) .. ". Error follows:")
plog("E", "", result)
end
end
return getCleanSaveData(mission), updated
end
Callers
@/lua/ge/extensions/gameplay/missions/missions.lua
-- mission.saveData = gameplay_missions_progress.loadMissionSaveData(mission)
mission.unlocks = {}
for _,mission in ipairs(missions) do
local saveData, updated = gameplay_missions_progress.loadMissionSaveData(mission)
if updated then