public void PlayerDisconnect()
 {
     IsOfflineSaveLoaded = false;
     if (!NetworkManager.IsHost())
     {
         if (offlineSave != null)
         {
             SaveGameManager.data.SetJObject(SaveGameKeys.Cars, JObject.Parse(offlineSave.SaveDataCars));
             SaveGameManager.data.SetObject(SaveGameKeys.Jobs, offlineSave.SaveDataJobs, JobSaveManager.serializeSettings);
             SaveGameManager.data.SetJObject(SaveGameKeys.Junctions, JObject.Parse(offlineSave.SaveDataSwitches));
             SaveGameManager.data.SetJObject(SaveGameKeys.Turntables, JObject.Parse(offlineSave.SaveDataTurntables));
             SaveGameManager.data.SetJObject("Debt_deleted_locos", JObject.Parse(offlineSave.SaveDataDestroyedLocoDebt));
             SaveGameManager.data.SetJObject("Debt_staged_jobs", JObject.Parse(offlineSave.SaveDataStagedJobDebt));
             SaveGameManager.data.SetJObject("Debt_jobless_cars", JObject.Parse(offlineSave.SaveDataDeletedJoblessCarsDept));
             SaveGameManager.data.SetJObject("Debt_insurance", JObject.Parse(offlineSave.SaveDataInsuranceDept));
             SaveGameManager.data.SetVector3("Player_position", offlineSave.SaveDataPosition);
             offlineSave = null;
             SaveGameUpgrader.Upgrade();
         }
         SingletonBehaviour <CoroutineManager> .Instance.Run(LoadOfflineSave());
     }
     else
     {
         CarSpawner.useCarPooling = true;
         SingletonBehaviour <SaveGameManager> .Instance.disableAutosave = false;
         IsOfflineSaveLoaded = true;
     }
 }
 internal void CreateOfflineBackup()
 {
     offlineSave = new OfflineSaveGame()
     {
         SaveDataCars                   = SaveGameManager.data.GetJObject(SaveGameKeys.Cars).ToString(Formatting.None),
         SaveDataJobs                   = SaveGameManager.data.GetObject <JobsSaveGameData>(SaveGameKeys.Jobs, JobSaveManager.serializeSettings),
         SaveDataSwitches               = SaveGameManager.data.GetJObject(SaveGameKeys.Junctions).ToString(Formatting.None),
         SaveDataTurntables             = SaveGameManager.data.GetJObject(SaveGameKeys.Turntables).ToString(Formatting.None),
         SaveDataDestroyedLocoDebt      = SaveGameManager.data.GetJObject("Debt_deleted_locos").ToString(Formatting.None),
         SaveDataStagedJobDebt          = SaveGameManager.data.GetJObject("Debt_staged_jobs").ToString(Formatting.None),
         SaveDataDeletedJoblessCarsDept = SaveGameManager.data.GetJObject("Debt_jobless_cars").ToString(Formatting.None),
         SaveDataInsuranceDept          = SaveGameManager.data.GetJObject("Debt_insurance").ToString(Formatting.None),
         SaveDataPosition               = PlayerManager.PlayerTransform.position - WorldMover.currentMove
     };
 }