Example #1
0
        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);
        }
Example #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        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);
        }
Example #3
0
 public static extern int RegisterApplicationRecoveryCallback(
     RecoveryDelegate recoveryCallback,
     RecoveryData parameter,
     uint pingInterval,
     uint flags);
Example #4
0
 public static extern int GetApplicationRecoveryCallback(
     IntPtr processHandle,
     out RecoveryDelegate recoveryCallback,
     out RecoveryData parameter,
     out uint pingInterval,
     out uint flags);
Example #5
0
 private static extern int RegisterApplicationRecoveryCallback(
     RecoveryDelegate recoveryCallback,
     IntPtr parameter,
     uint pingInterval,
     uint flags);
Example #6
0
        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);
            }
        }