Fix Saving for Multiple Spawned Vehicles

This commit is contained in:
snoutie 2025-03-06 20:09:16 +01:00
parent 17d90c2699
commit d245d00706
2 changed files with 14 additions and 12 deletions

View File

@ -30,9 +30,9 @@ local function spawnVehicle(inventoryId, callback)
end
local function Retrieve(inventoryId)
career_vehicleSaveSystem.QueueVehicleToSave(inventoryId)
career_vehicleSaveSystem.EnqueueVehicleToSave(inventoryId)
if not career_vehicleSaveSystem.SaveVehicle(inventoryId) then
career_vehicleSaveSystem.QueuedVehicleSaved(inventoryId)
career_vehicleSaveSystem.DequeueVehicleToSave(inventoryId)
end
local vehicleValue = career_modules_valueCalculator.getInventoryVehicleValue(inventoryId, true)
@ -87,7 +87,7 @@ end
local function RemoveVehicleObject(inventoryId)
table.insert(vehicleObjectsToRemove, inventoryId)
career_vehicleSaveSystem.QueueVehicleToSave(inventoryId)
career_vehicleSaveSystem.EnqueueVehicleToSave(inventoryId)
career_vehicleSaveSystem.SaveVehicle(inventoryId)
career_vehicleSaveSystem.CheckSavedAsync(function()
career_modules_inventory_removeVehicleObject(inventoryId)

View File

@ -65,13 +65,14 @@ local function GetVehicleSaveFile(root, inventoryId)
return path .. "/save.json"
end
local function QueueVehicleToSave(inventoryId)
local function EnqueueVehicleToSave(inventoryId)
log("I", "saving", "enqueued vehicle " .. inventoryId)
M.queuedVehicleSaves[inventoryId] = true
end
local function QueuedVehicleSaved(inventoryId)
log("I", "saving", "saved vehicle " .. inventoryId)
table.remove(M.queuedVehicleSaves, inventoryId)
local function DequeueVehicleToSave(inventoryId)
log("I", "saving", "dequeued vehicle " .. inventoryId)
M.queuedVehicleSaves[inventoryId] = nil
end
local function VehiclesSaved()
@ -108,9 +109,10 @@ local function SaveVehicle(inventoryId)
local object = be:getObjectByID(vehicleId)
object:queueLuaCommand("beamstate.save(\"" ..
saveFile ..
"\"); obj:queueGameEngineLua('career_vehicleSaveSystem.QueuedVehicleSaved(\"" .. inventoryId .. "\")');")
"\"); obj:queueGameEngineLua('career_vehicleSaveSystem.DequeueVehicleToSave(" .. inventoryId .. ")');")
return true
else
log('I', 'saving', 'vehicle ' .. inventoryId .. " not spawned")
return false
end
end
@ -137,12 +139,12 @@ local function onSaveCurrentSaveSlot(currentSavePath, oldSaveDate, vehiclesThumb
local vehicles = career_modules_inventory.getVehicles()
for id, _ in pairs(vehicles) do
QueueVehicleToSave(id)
EnqueueVehicleToSave(id)
end
for id, _ in pairs(M.queuedVehicleSaves) do
if not SaveVehicle(id) then
QueuedVehicleSaved(id)
DequeueVehicleToSave(id)
end
end
CheckSavedAsync(function()
@ -168,8 +170,8 @@ M.LoadVehicle = LoadVehicle
M.CheckSavedAsync = CheckSavedAsync
M.QueueVehicleToSave = QueueVehicleToSave
M.QueuedVehicleSaved = QueuedVehicleSaved
M.EnqueueVehicleToSave = EnqueueVehicleToSave
M.DequeueVehicleToSave = DequeueVehicleToSave
M.onSaveCurrentSaveSlotAsyncStart = onSaveCurrentSaveSlotAsyncStart
M.onSaveCurrentSaveSlot = onSaveCurrentSaveSlot