GE Lua Documentation

Press F to search!

getDriftSpotsById

Definition


-- @/lua/ge/extensions/gameplay/drift/saveLoad.lua:46


local function getDriftSpotsById()
  if not spotsById then
    local saveFolder = savePathFreeroam
    if career_career.isActive() then
      local saveSlot, savePath = career_saveSystem.getCurrentSaveSlot()
      saveFolder = savePath .. savePathCareer
    end
    local loaded = 0
    spotsById = {}
    local level = getCurrentLevelIdentifier()
    local levelSpotsDir = "/levels/"..level .. "/driftSpots/"
    --dump(levelSpotsDir)
    for _, file in ipairs(FS:findFiles(levelSpotsDir, "spot.driftSpot.json", -1, false, true)) do
      local dir, _, _ = path.split(file)
      local spotId = level .."/".. string.sub(dir, #levelSpotsDir+1, -2)
      -- main data

      local spotData = {
        id = spotId,
        spatialInfo = jsonReadFile(file).spatialInfo,
        racePath = dir.."race.race.json",
        bounds = dir.."bounds.sites.json",
        level = level,
      }

      -- infos for ui etc
      local info = jsonReadFile(dir .. "info.json") or {}
      info.preview = M.getPreviewWithFallback(dir)
      info.name = info.name or "Unnamed Drift Spot"
      spotData.info = info

      -- immediately hide the objects found
      for id, line in pairs(spotData.spatialInfo.lines) do
        for _, name in ipairs(line.markerObjects or {}) do
          local obj = scenetree.findObject(name)
          if obj then
            obj:setHidden(true)
            --log("I","","Hidden: " .. name)
          else
            log("W","","Couldnt find: " .. name .. " for drift zone: " ..spotId)
          end
        end
      end

      -- save data
      local saveData = jsonReadFile(saveFolder .. spotId .. ".json") or {}
      if next(saveData) then loaded = loaded + 1 end
      saveData.scores = saveData.scores or {}
      saveData.objectivesCompleted = saveData.objectivesCompleted or {}
      spotData.saveData = saveData

      table.sort(saveData.scores, function(a, b) return a.score > b.score end)

      spotData.unlocked = true

      spotsById[spotId] = spotData
      --dumpz(spotData)
    end
      --dump(tableKeysSorted(spotsById))
    if career_career.isActive() then
      extensions.hook("onAfterDriftSpotsLoaded", spotsById)
    end
    --log("I","","Loaded " .. #tableKeys(spotsById) .. " drift spots and " .. loaded .. " drift score files.")
  end
  return spotsById
end

Callers

@/lua/ge/extensions/gameplay/drift/saveLoad.lua
local function onSaveCurrentSaveSlot(currentSavePath)
  for id, spot in pairs(M.getDriftSpotsById()) do
    if spot._dirty then
local function getDriftSpotById(spotId)
  return M.getDriftSpotsById()[spotId]
end
  local spotsForLevel = {}
  for _, spot in pairs(getDriftSpotsById()) do
    if spot.level == getCurrentLevelIdentifier() then
@/lua/ge/extensions/gameplay/drift/freeroam/driftSpots.lua
  if anyObjectiveReached and career_career.isActive() then
    career_branches_leagues.onAfterDriftSpotsLoaded(gameplay_drift_saveLoad.getDriftSpotsById())
    gameplay_rawPois.clear()