private static bool Postfix(bool __result, ComputerSave save, PartDesc.Type ___m_partType, string ___m_refPart, int ___m_totalPartsOfType) { if (ConfigHandler.Instance.UpgradePriceCheckRemoveBool.Value) { if (___m_partType == PartDesc.Type.MOTHERBOARD || ___m_partType == PartDesc.Type.AIR_COOLER || ___m_partType == PartDesc.Type.LIQUID_COOLER) { var successfulPartChanges = 0; foreach (var partInstance in save.GetAllParts()) { if (partInstance != null && partInstance.IsActive()) { PartDesc refPart = PartsDatabase.GetDesc(___m_refPart); var canUpgrade = partInstance.GetPart().MatchForUpgrade(refPart.m_type); SFLog.log($"{partInstance.GetPart().m_partName} | canUpgrade: {canUpgrade.ToString()}"); if (canUpgrade) { successfulPartChanges++; } } } var cond = ___m_totalPartsOfType == successfulPartChanges; SFLog.log($"totalPartsOfType: {___m_totalPartsOfType.ToString()}, successfulPartChanges: {successfulPartChanges.ToString()}, satisfied: {cond.ToString()}"); return(cond); } } return(__result); }
static void Postfix(AddProgramApp __instance) { foreach (object o in __instance.m_programList.content) { UnityEngine.Object.Destroy(((Transform)o).gameObject); } ComputerSave computer = __instance.GetComponentInParent <VirtualComputer>().GetComputer(); bool isUsbDriveInserted = computer.IsUSBDriveInserted(); if (!isUsbDriveInserted) { WorkStation componentInParent = __instance.GetComponentInParent <WorkStation>(); if (componentInParent && componentInParent.m_slot && componentInParent.m_slot.m_type == BenchSlot.Type.SHOP_COMPUTER) { isUsbDriveInserted = true; } } if (AddProgramAppLogic.InstanceFor(__instance).addMode == 1) { if (!isUsbDriveInserted) { ReflectionUtils.Run("SetMessage", __instance, new object[] { ScriptLocalization.AddPrograms.INSERT_USB }); return; } foreach (OSProgramDesc prog in PartsDatabase.GetAllPrograms()) { if (CareerStatus.Get().IsProgramAvailableForInstall(prog.m_id)) { UnityEngine.Object.Instantiate <ProgramIcon>(__instance.programIconPrefab, __instance.m_programList.content).Init(prog, false, delegate { __instance.GetComponentInParent <OS>().Launch(prog); }); } } return; } if (AddProgramAppLogic.InstanceFor(__instance).addMode == 2) { if (!isUsbDriveInserted) { ReflectionUtils.Run("SetMessage", __instance, new object[] { ScriptLocalization.AddPrograms.INSERT_USB }); return; } bool programsMissing = false; foreach (OSProgramDesc prog in PartsDatabase.GetAllPrograms()) { if (!computer.m_software.m_programs.Contains(prog.m_id) && CareerStatus.Get().IsProgramAvailableForInstall(prog.m_id)) { UnityEngine.Object.Instantiate <ProgramIcon>(__instance.programIconPrefab, __instance.m_programList.content).Init(prog, false, delegate { __instance.StartCoroutine(ReflectionUtils.Run <IEnumerator>("Install", __instance, new object[] { prog })); }); programsMissing = true; } } if (!programsMissing) { ReflectionUtils.Run("SetMessage", __instance, new object[] { ScriptLocalization.AddPrograms.ALL_INSTALLED }); return; } } else if (AddProgramAppLogic.InstanceFor(__instance).addMode == 3) { bool uninstallablePrograms = false; foreach (OSProgramDesc prog in PartsDatabase.GetAllPrograms()) { if (prog.m_canBeUninstalled && computer.m_software.m_programs.Contains(prog.m_id)) { UnityEngine.Object.Instantiate <ProgramIcon>(__instance.programIconPrefab, __instance.m_programList.content).Init(prog, false, delegate { __instance.StartCoroutine(ReflectionUtils.Run <IEnumerator>("Uninstall", __instance, new object[] { prog })); }); uninstallablePrograms = true; } } if (!uninstallablePrograms) { ReflectionUtils.Run("SetMessage", __instance, new object[] { ScriptLocalization.AddPrograms.NONE_INSTALLED }); } } }