/// <summary> /// Toggles on all objects. /// </summary> public void ToggleAll(bool enabled, ToggleAllMode mode = ToggleAllMode.Default) { // World objects for (int i = 0; i < worldObjectManager.Count; i++) { try { worldObjectManager[i].Toggle(enabled); } catch (Exception ex) { ExceptionManager.New(ex, false, "TOGGLE_ALL_WORLD_OBJECTS_ERROR"); } } if (MopSettings.Mode == PerformanceMode.Safe) { return; } // Items for (int i = 0; i < ItemsManager.Instance.Count; i++) { try { ItemBehaviour item = ItemsManager.Instance[i]; item.Toggle(enabled); // We're freezing the object on save, so it won't move at all. if (mode == ToggleAllMode.OnSave) { item.gameObject.SetActive(true); item.Freeze(); item.SaveGame(); } } catch (Exception ex) { ExceptionManager.New(ex, false, "TOGGLE_ALL_ITEMS_ERROR"); } } // Find all kilju, emptyca, empty juice container, and force empty them if applicable try { IEnumerable <GameObject> bottles = Resources.FindObjectsOfTypeAll <GameObject>().Where(g => g.name.ContainsAny("kilju", "emptyca", "empty plastic can")); foreach (GameObject bottle in bottles) { bottle.GetComponent <ItemBehaviour>()?.ResetKiljuContainer(); if (mode == ToggleAllMode.OnSave) { bottle.SetActive(true); bottle.GetComponent <ItemBehaviour>()?.SaveGame(); } } } catch (Exception ex) { ExceptionManager.New(ex, false, "KILJU_RESET_FORCE_ERROR"); } // Vehicles for (int i = 0; i < vehicleManager.Count; i++) { try { vehicleManager[i].Toggle(enabled); if (mode == ToggleAllMode.OnLoad) { vehicleManager[i].ForceToggleUnityCar(false); } else if (mode == ToggleAllMode.OnSave) { vehicleManager[i].ToggleUnityCar(enabled); vehicleManager[i].Freeze(); } } catch (Exception ex) { ExceptionManager.New(ex, false, $"TOGGLE_ALL_VEHICLE_ERROR_{i}"); } } // Places for (int i = 0; i < placeManager.Count; i++) { try { placeManager[i].ToggleActive(enabled); } catch (Exception ex) { ExceptionManager.New(ex, false, $"TOGGLE_ALL_PLACES_{i}"); } } // Force teleport kilju bottles. try { if (mode == ToggleAllMode.OnSave) { GameObject canTrigger = ItemsManager.Instance.GetCanTrigger(); if (canTrigger) { if (!canTrigger.transform.parent.gameObject.activeSelf) { canTrigger.transform.parent.gameObject.SetActive(true); } canTrigger.GetComponent <PlayMakerFSM>().SendEvent("STOP"); } } } catch (Exception ex) { ExceptionManager.New(ex, false, "TOGGLE_ALL_JOBS_DRUNK"); } // ToggleElements class of Satsuma. try { Satsuma.Instance.ToggleElements((mode == ToggleAllMode.OnSave) ? 0 : (enabled ? 0 : 10000)); } catch (Exception ex) { ExceptionManager.New(ex, false, "TOGGLE_ALL_SATSUMA_TOGGLE_ELEMENTS"); } }