Compare commits
No commits in common. "main" and "1.4" have entirely different histories.
@ -30,9 +30,9 @@ local function spawnVehicle(inventoryId, callback)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function Retrieve(inventoryId)
|
local function Retrieve(inventoryId)
|
||||||
career_vehicleSaveSystem.EnqueueVehicleToSave(inventoryId)
|
career_vehicleSaveSystem.QueueVehicleToSave(inventoryId)
|
||||||
if not career_vehicleSaveSystem.SaveVehicle(inventoryId) then
|
if not career_vehicleSaveSystem.SaveVehicle(inventoryId) then
|
||||||
career_vehicleSaveSystem.DequeueVehicleToSave(inventoryId)
|
career_vehicleSaveSystem.QueuedVehicleSaved(inventoryId)
|
||||||
end
|
end
|
||||||
|
|
||||||
local vehicleValue = career_modules_valueCalculator.getInventoryVehicleValue(inventoryId, true)
|
local vehicleValue = career_modules_valueCalculator.getInventoryVehicleValue(inventoryId, true)
|
||||||
@ -41,11 +41,17 @@ local function Retrieve(inventoryId)
|
|||||||
career_vehicleSaveSystem.CheckSavedAsync(function()
|
career_vehicleSaveSystem.CheckSavedAsync(function()
|
||||||
extensions.core_jobsystem.create(
|
extensions.core_jobsystem.create(
|
||||||
function(job)
|
function(job)
|
||||||
career_vehicleSaveSystem.SetFade(true)
|
|
||||||
job.sleep(1)
|
|
||||||
spawnVehicle(inventoryId, function()
|
spawnVehicle(inventoryId, function()
|
||||||
career_vehicleSaveSystem.TeleportVehicle(inventoryId, false)
|
local veh = be:getObjectByID(career_modules_inventory.getVehicleIdFromInventoryId(inventoryId))
|
||||||
career_vehicleSaveSystem.LoadVehicle(inventoryId, currentVehicleValue < vehicleValue)
|
local location = { pos = veh:getPosition(), rot = quat(0, 0, 1, 0) * quat(veh:getRefNodeRotation()) }
|
||||||
|
local garage = career_modules_inventory.getClosestGarage(location.pos)
|
||||||
|
job.sleep(1)
|
||||||
|
if currentVehicleValue < vehicleValue then
|
||||||
|
career_vehicleSaveSystem.LoadVehicle(inventoryId)
|
||||||
|
else
|
||||||
|
log('I', 'retrieval', 'retrieving vehicle ' .. inventoryId .. " in an undamaged state")
|
||||||
|
end
|
||||||
|
freeroam_facilities.teleportToGarage(garage.id, veh, false)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
@ -81,7 +87,7 @@ end
|
|||||||
|
|
||||||
local function RemoveVehicleObject(inventoryId)
|
local function RemoveVehicleObject(inventoryId)
|
||||||
table.insert(vehicleObjectsToRemove, inventoryId)
|
table.insert(vehicleObjectsToRemove, inventoryId)
|
||||||
career_vehicleSaveSystem.EnqueueVehicleToSave(inventoryId)
|
career_vehicleSaveSystem.QueueVehicleToSave(inventoryId)
|
||||||
career_vehicleSaveSystem.SaveVehicle(inventoryId)
|
career_vehicleSaveSystem.SaveVehicle(inventoryId)
|
||||||
career_vehicleSaveSystem.CheckSavedAsync(function()
|
career_vehicleSaveSystem.CheckSavedAsync(function()
|
||||||
career_modules_inventory_removeVehicleObject(inventoryId)
|
career_modules_inventory_removeVehicleObject(inventoryId)
|
||||||
|
@ -15,8 +15,7 @@
|
|||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
M.dependencies = { 'freeroam_facilities', 'ui_fadeScreen', 'career_career', 'career_saveSystem',
|
M.dependencies = { 'career_career', 'career_saveSystem', 'career_modules_inventory' }
|
||||||
'career_modules_inventory' }
|
|
||||||
|
|
||||||
local extensionName = "career_vehicleSaveSystem"
|
local extensionName = "career_vehicleSaveSystem"
|
||||||
local vehicleSaves_temp = "/temp/career/vehicle_saves"
|
local vehicleSaves_temp = "/temp/career/vehicle_saves"
|
||||||
@ -66,50 +65,13 @@ local function GetVehicleSaveFile(root, inventoryId)
|
|||||||
return path .. "/save.json"
|
return path .. "/save.json"
|
||||||
end
|
end
|
||||||
|
|
||||||
local function EnqueueVehicleToSave(inventoryId)
|
local function QueueVehicleToSave(inventoryId)
|
||||||
log("I", "saving", "enqueued vehicle " .. inventoryId)
|
|
||||||
M.queuedVehicleSaves[inventoryId] = true
|
M.queuedVehicleSaves[inventoryId] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
local function DequeueVehicleToSave(inventoryId)
|
local function QueuedVehicleSaved(inventoryId)
|
||||||
log("I", "saving", "dequeued vehicle " .. inventoryId)
|
log("I", "saving", "saved vehicle " .. inventoryId)
|
||||||
M.queuedVehicleSaves[inventoryId] = nil
|
table.remove(M.queuedVehicleSaves, inventoryId)
|
||||||
end
|
|
||||||
|
|
||||||
local function TeleportVehicle(inventoryId, delayed, callback)
|
|
||||||
log("I", "loading", "teleporting vehicle " .. inventoryId)
|
|
||||||
|
|
||||||
local veh = be:getObjectByID(career_modules_inventory.getVehicleIdFromInventoryId(inventoryId))
|
|
||||||
local location = { pos = veh:getPosition(), rot = quat(0, 0, 1, 0) * quat(veh:getRefNodeRotation()) }
|
|
||||||
local garage = career_modules_inventory.getClosestGarage(location.pos)
|
|
||||||
|
|
||||||
extensions.core_jobsystem.create(function(job)
|
|
||||||
if delayed then
|
|
||||||
job.sleep(1)
|
|
||||||
end
|
|
||||||
freeroam_facilities.teleportToGarage(garage.id, veh, false)
|
|
||||||
|
|
||||||
if callback then
|
|
||||||
callback()
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local fadeInProgress = false
|
|
||||||
local function SetFade(fade)
|
|
||||||
if fadeInProgress and fade then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
if not fadeInProgress and not fade then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
if fade then
|
|
||||||
ui_fadeScreen.start(0.5)
|
|
||||||
fadeInProgress = true
|
|
||||||
else
|
|
||||||
ui_fadeScreen.stop(0.5)
|
|
||||||
fadeInProgress = false
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function VehiclesSaved()
|
local function VehiclesSaved()
|
||||||
@ -146,51 +108,24 @@ local function SaveVehicle(inventoryId)
|
|||||||
local object = be:getObjectByID(vehicleId)
|
local object = be:getObjectByID(vehicleId)
|
||||||
object:queueLuaCommand("beamstate.save(\"" ..
|
object:queueLuaCommand("beamstate.save(\"" ..
|
||||||
saveFile ..
|
saveFile ..
|
||||||
"\"); obj:queueGameEngineLua('career_vehicleSaveSystem.DequeueVehicleToSave(" .. inventoryId .. ")');")
|
"\"); obj:queueGameEngineLua('career_vehicleSaveSystem.QueuedVehicleSaved(\"" .. inventoryId .. "\")');")
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
log('I', 'saving', 'vehicle ' .. inventoryId .. " not spawned")
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function FinishedLoading(inventoryId)
|
local function LoadVehicle(inventoryId)
|
||||||
M.SetFade(false)
|
|
||||||
local veh = be:getObjectByID(career_modules_inventory.getVehicleIdFromInventoryId(inventoryId))
|
|
||||||
local pos, _ = freeroam_facilities.getGaragePosRot(career_modules_inventory.getClosestGarage(), veh)
|
|
||||||
career_modules_playerDriving.showPosition(pos)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function LoadVehicle(inventoryId, loadDamaged)
|
|
||||||
local saveFile = GetVehicleSaveFile(vehicleSaves_temp, inventoryId)
|
local saveFile = GetVehicleSaveFile(vehicleSaves_temp, inventoryId)
|
||||||
|
|
||||||
local vehicleId = career_modules_inventory.getVehicleIdFromInventoryId(inventoryId)
|
local vehicleId = career_modules_inventory.getVehicleIdFromInventoryId(inventoryId)
|
||||||
if vehicleId then
|
if vehicleId then
|
||||||
log("I", "loading", "loading vehicle from " .. saveFile)
|
log("I", "loading", "loading vehicle from " .. saveFile)
|
||||||
if loadDamaged then
|
|
||||||
local object = be:getObjectByID(vehicleId)
|
local object = be:getObjectByID(vehicleId)
|
||||||
object:queueLuaCommand(
|
object:queueLuaCommand("beamstate.load(\"" ..
|
||||||
"beamstate.load(\"" .. saveFile .. "\"); " ..
|
saveFile .. "\");" ..
|
||||||
"for key, value in pairs(v.data.controller) do " ..
|
"for key, value in pairs(v.data.controller) do if value['fileName'] == 'advancedCouplerControl' then local c = controller.getController(value['name']) if c['reset'] then c['reset']() end end end"
|
||||||
" if value['fileName'] == 'advancedCouplerControl' then " ..
|
|
||||||
" local c = controller.getController(value['name']) " ..
|
|
||||||
" if c['reset'] then " ..
|
|
||||||
" c['reset']() " ..
|
|
||||||
" end " ..
|
|
||||||
" end " ..
|
|
||||||
" end; " ..
|
|
||||||
" obj:queueGameEngineLua(' " ..
|
|
||||||
" career_vehicleSaveSystem.TeleportVehicle( " ..
|
|
||||||
" " .. inventoryId .. ", " ..
|
|
||||||
" true, " ..
|
|
||||||
" function() " ..
|
|
||||||
" career_vehicleSaveSystem.FinishedLoading(" .. inventoryId .. ")" ..
|
|
||||||
" end) " ..
|
|
||||||
" ');"
|
|
||||||
)
|
)
|
||||||
else
|
|
||||||
FinishedLoading(inventoryId)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -202,12 +137,12 @@ local function onSaveCurrentSaveSlot(currentSavePath, oldSaveDate, vehiclesThumb
|
|||||||
local vehicles = career_modules_inventory.getVehicles()
|
local vehicles = career_modules_inventory.getVehicles()
|
||||||
|
|
||||||
for id, _ in pairs(vehicles) do
|
for id, _ in pairs(vehicles) do
|
||||||
EnqueueVehicleToSave(id)
|
QueueVehicleToSave(id)
|
||||||
end
|
end
|
||||||
|
|
||||||
for id, _ in pairs(M.queuedVehicleSaves) do
|
for id, _ in pairs(M.queuedVehicleSaves) do
|
||||||
if not SaveVehicle(id) then
|
if not SaveVehicle(id) then
|
||||||
DequeueVehicleToSave(id)
|
QueuedVehicleSaved(id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
CheckSavedAsync(function()
|
CheckSavedAsync(function()
|
||||||
@ -230,16 +165,11 @@ M.queuedVehicleSaves = {}
|
|||||||
|
|
||||||
M.SaveVehicle = SaveVehicle
|
M.SaveVehicle = SaveVehicle
|
||||||
M.LoadVehicle = LoadVehicle
|
M.LoadVehicle = LoadVehicle
|
||||||
M.FinishedLoading = FinishedLoading
|
|
||||||
|
|
||||||
M.TeleportVehicle = TeleportVehicle
|
|
||||||
|
|
||||||
M.SetFade = SetFade
|
|
||||||
|
|
||||||
M.CheckSavedAsync = CheckSavedAsync
|
M.CheckSavedAsync = CheckSavedAsync
|
||||||
|
|
||||||
M.EnqueueVehicleToSave = EnqueueVehicleToSave
|
M.QueueVehicleToSave = QueueVehicleToSave
|
||||||
M.DequeueVehicleToSave = DequeueVehicleToSave
|
M.QueuedVehicleSaved = QueuedVehicleSaved
|
||||||
|
|
||||||
M.onSaveCurrentSaveSlotAsyncStart = onSaveCurrentSaveSlotAsyncStart
|
M.onSaveCurrentSaveSlotAsyncStart = onSaveCurrentSaveSlotAsyncStart
|
||||||
M.onSaveCurrentSaveSlot = onSaveCurrentSaveSlot
|
M.onSaveCurrentSaveSlot = onSaveCurrentSaveSlot
|
||||||
|
Loading…
Reference in New Issue
Block a user