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()