// called during Verse.Mod instantiation
 private void InitializeController()
 {
     try {
         ReadOwnVersion();
         Logger.Message("version {0}", LibraryVersion);
         PrepareReflection();
         ApplyHarmonyPatches();
         Settings = new ModSettingsManager();
         Settings.BeforeModSettingsSaved += OnBeforeModSettingsSaved;
         UpdateFeatures = new UpdateFeatureManager();
         UpdateFeatures.OnEarlyInitialize();
         TickDelayScheduler = new TickDelayScheduler();
         DistributedTicker  = new DistributedTickScheduler();
         DoLater            = new DoLaterScheduler();
         LogUploader        = new LogPublisher();
         var librarySettings = Settings.GetModSettings(ModIdentifier);
         QuickstartController.OnEarlyInitialize(librarySettings);
         ModSpotter = new ModSpottingManager();
         ModSpotter.OnEarlyInitialize();
         new LibraryVersionChecker(LibraryVersion, Logger).OnEarlyInitialize();
         LoadOrderChecker.ValidateLoadOrder();
         EnumerateModAssemblies();
         EarlyInitializeChildMods();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }
Esempio n. 2
0
        public void MultipleDefsTest()
        {
            void AssertFilteredDefs(IEnumerable <string> firstTimeSeenPackageIds,
                                    IEnumerable <string> expectedDefNames, string assertionMessage)
            {
                var results = UpdateFeatureManager.FilterFeatureDefsByMatchingAudience(
                    defs, firstTimeSeenPackageIds.Contains, null
                    ).Select(d => d.defName);

                Assert.That(results, Is.EquivalentTo(expectedDefNames), assertionMessage);
            }

            AssertFilteredDefs(
                new[] { "mod1", "mod2" },
                new[] { "2", "4", "5" },
                "both first seen"
                );
            AssertFilteredDefs(
                new[] { "mod1" },
                new[] { "2", "4" },
                "mod1 first seen"
                );
            AssertFilteredDefs(
                new[] { "mod2" },
                new[] { "1", "3", "4", "5" },
                "mod2 first seen"
                );
            AssertFilteredDefs(
                Enumerable.Empty <string>(),
                new[] { "1", "3", "4" },
                "none first seen"
                );
        }
Esempio n. 3
0
        public void NullPackageIdTest()
        {
            var noPackageDef = new UpdateFeatureDef();

            Assert.IsNull(noPackageDef.modContentPack);
            Assert.IsNull(noPackageDef.OverridePackageId);
            Assert.Throws <InvalidOperationException>(() => {
                var _ = UpdateFeatureManager.FilterFeatureDefsByMatchingAudience(
                    new[] { noPackageDef }, s => false, ex => throw ex
                    ).ToArray();
            }
                                                      );
        }
 // called during Verse.Mod instantiation
 private void InitializeController()
 {
     try {
         PrepareReflection();
         ApplyHarmonyPatches();
         Settings           = new ModSettingsManager(OnSettingsChanged);
         UpdateFeatures     = new UpdateFeatureManager();
         TickDelayScheduler = new TickDelayScheduler();
         DistributedTicker  = new DistributedTickScheduler();
         LogUploader        = new LogPublisher();
         ReadOwnVersionFile();
         LoadOrderChecker.ValidateLoadOrder();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }
Esempio n. 5
0
 // called during Verse.Mod instantiation
 private void InitializeController()
 {
     try {
         ReadOwnVersion();
         Logger.Message("version {0}", LibraryVersion);
         PrepareReflection();
         ApplyHarmonyPatches();
         Settings           = new ModSettingsManager(OnSettingsChanged);
         UpdateFeatures     = new UpdateFeatureManager();
         TickDelayScheduler = new TickDelayScheduler();
         DistributedTicker  = new DistributedTickScheduler();
         DoLater            = new DoLaterScheduler();
         LogUploader        = new LogPublisher();
         LoadOrderChecker.ValidateLoadOrder();
         EnumerateModAssemblies();
         EarlyInitializeChildMods();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }
 internal void Initalize()
 {
     if (Settings != null)               // double initialization safeguard by scene object, shouldn't happen
     {
         Logger.Error("Repeat initialization detected");
         return;
     }
     try {
         PrepareReflection();
         Settings          = new ModSettingsManager(OnSettingsChanged);
         UpdateFeatures    = new UpdateFeatureManager();
         CallbackScheduler = new CallbackScheduler();
         DistributedTicker = new DistributedTickScheduler();
         LogUploader       = new LogPublisher();
         reloadWatcher     = new DefReloadWatcher(OnDefReloadDetected);
         RegisterOwnSettings();
         ReadOwnVersionFile();
         LoadReloadInitialize();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }