GE Lua Documentation

Press F to search!

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