private static void RegisterForRecovery() { var callback = new RecoveryDelegate(p => { Process.Start(Assembly.GetEntryAssembly().Location); ApplicationRecoveryFinished(true); return(0); }); var interval = 100U; var flags = 0U; RegisterApplicationRecoveryCallback(callback, IntPtr.Zero, interval, flags); }
//////////////////////////////////////////////////////////////////////////////////////////////////// private static void RegisterForRecovery() { var callback = new RecoveryDelegate(p => { Recover(); ApplicationRecoveryFinished(true); return(0); }); var interval = 100U; var flags = 0U; RegisterApplicationRecoveryCallback(callback, IntPtr.Zero, interval, flags); }
public static extern int RegisterApplicationRecoveryCallback( RecoveryDelegate recoveryCallback, RecoveryData parameter, uint pingInterval, uint flags);
public static extern int GetApplicationRecoveryCallback( IntPtr processHandle, out RecoveryDelegate recoveryCallback, out RecoveryData parameter, out uint pingInterval, out uint flags);
private static extern int RegisterApplicationRecoveryCallback( RecoveryDelegate recoveryCallback, IntPtr parameter, uint pingInterval, uint flags);
public static void Init(string directory, string settingsJSON) { Logger = HBS.Logging.Logger.GetLogger("CustomSalvage", LogLevel.Debug); try { try { Settings = new CustomSalvageSettings(); JSONSerializationUtility.FromJSON(Settings, settingsJSON); HBS.Logging.Logger.SetLoggerLevel(Logger.Name, Settings.LogLevel); } catch (Exception) { Settings = new CustomSalvageSettings(); } Settings.Complete(); SetupLogging(directory); var harmony = HarmonyInstance.Create("io.github.denadan.CustomSalvage"); harmony.PatchAll(Assembly.GetExecutingAssembly()); #if USE_CC Logger.Log("Loaded CustomSalvageCC v0.4.2 for bt 1.8"); #else Logger.Log("Loaded CustomSalvageNonCC v0.4.2 for bt 1.8"); #endif switch (Settings.RecoveryType) { case RecoveryCalculationType.AlwaysRecover: NeedRecovery = (result, contract) => true; break; case RecoveryCalculationType.NeverRecover: NeedRecovery = (result, contract) => false; break; case RecoveryCalculationType.PartDestroyed: NeedRecovery = RecoveryDelegates.PartDestroyed; break; default: NeedRecovery = RecoveryDelegates.VanilaRecovery; break; } switch (Settings.LostMechAction) { case LostMechActionType.ReturnItemsAndPartsToPlayer: LostUnitAction = LostUnitActions.ReturnItemsAndParts; break; case LostMechActionType.MoveItemsToSalvage: LostUnitAction = LostUnitActions.SalvageItems; break; case LostMechActionType.MoveItemsAndPartsToSalvage: LostUnitAction = LostUnitActions.SalvageItemsAndParts; break; default: LostUnitAction = LostUnitActions.ReturnItems; break; } switch (Settings.PartCountType) { case PartCalculationType.VanilaAdjusted: GetNumParts = PartsNumCalculations.VanilaAdjusted; break; case PartCalculationType.PartDestroyed: GetNumParts = PartsNumCalculations.PartDestroyed; break; case PartCalculationType.PartDestroyedIgnoreCT: GetNumParts = PartsNumCalculations.PartDestroyedNoCT; break; default: GetNumParts = PartsNumCalculations.Vanila; break; } #if USE_CC CustomComponents.Registry.RegisterSimpleCustomComponents(Assembly.GetExecutingAssembly()); #endif Logger.LogDebug("done"); Logger.LogDebug(JSONSerializationUtility.ToJSON(Settings)); } catch (Exception e) { Logger.LogError(e); } }