Пример #1
0
        TechType ITechTypeHandlerInternal.AddTechType(Assembly modAssembly, string internalName, string displayName, string tooltip, bool unlockAtStart)
        {
            string modName = modAssembly.GetName().Name;

            // Register the TechType.
            var techType = TechTypePatcher.AddTechType(internalName);

            // Remember which Assembly added it
            TechTypesAddedBy[techType] = modAssembly;

            // register Language Lines.
            LanguagePatcher.AddCustomLanguageLine(modName, internalName, displayName);
            LanguagePatcher.AddCustomLanguageLine(modName, "Tooltip_" + internalName, tooltip);

            Dictionary <TechType, string> valueToString = TooltipFactory.techTypeTooltipStrings.valueToString;

            valueToString[techType] = "Tooltip_" + internalName;

            // Unlock the TechType on start
            if (unlockAtStart)
            {
                KnownTechPatcher.UnlockedAtStart.Add(techType);
            }

            // Return the new TechType.
            return(techType);
        }
Пример #2
0
        internal override void LinkToParent(ModCraftTreeLinkingNode parent)
        {
            base.LinkToParent(parent);

            if (IsExistingTab)
            {
                return;
            }

            LanguagePatcher.AddCustomLanguageLine(ModName, $"{base.SchemeAsString}Menu_{Name}", DisplayText);

            string spriteID = $"{SchemeAsString}_{Name}";

#if SUBNAUTICA
            ModSprite modSprite;
            if (Asprite != null)
            {
                modSprite = new ModSprite(SpriteManager.Group.Category, spriteID, Asprite);
            }
            else
            {
                modSprite = new ModSprite(SpriteManager.Group.Category, spriteID, Usprite);
            }

            ModSprite.Add(modSprite);
#elif BELOWZERO
            ModSprite modSprite;
            modSprite = new ModSprite(SpriteManager.Group.Category, spriteID, Usprite);
            ModSprite.Add(modSprite);
#endif
        }
Пример #3
0
        public static void PostPatch()
        {
            FishPatcher.Patch(harmony);

            TechTypePatcher.Patch();
            CraftTreeTypePatcher.Patch();
            PingTypePatcher.Patch();
            EnumPatcher.Patch(harmony);

            CraftDataPatcher.Patch(harmony);
            CraftTreePatcher.Patch(harmony);
            ConsoleCommandsPatcher.Patch(harmony);
            LanguagePatcher.Patch(harmony);
            PrefabDatabasePatcher.PostPatch(harmony);
            SpritePatcher.Patch();
            KnownTechPatcher.Patch(harmony);
            BioReactorPatcher.Patch();
            OptionsPanelPatcher.Patch(harmony);
            ItemsContainerPatcher.Patch(harmony);
            PDAPatcher.Patch(harmony);
            PDAEncyclopediaPatcher.Patch(harmony);
            ItemActionPatcher.Patch(harmony);
            LootDistributionPatcher.Patch(harmony);
            WorldEntityDatabasePatcher.Patch(harmony);
            IngameMenuPatcher.Patch(harmony);
            TooltipPatcher.Patch(harmony);



            Logger.Debug("Saving TechType Cache");
            TechTypePatcher.cacheManager.SaveCache();
            Logger.Debug("Saving CraftTreeType Cache");
            CraftTreeTypePatcher.cacheManager.SaveCache();
        }
Пример #4
0
        TechType ITechTypeHandlerInternal.AddTechType(string modName, string internalName, string displayName, string tooltip, bool unlockAtStart)
        {
            // Register the TechType.
            TechType techType = TechTypePatcher.AddTechType(internalName);

            // Remember which Assembly added it
            Assembly mod = ReflectionHelper.CallingAssemblyByStackTrace();

            TechTypesAddedBy[techType] = mod;

            // Register Language lines.
            LanguagePatcher.AddCustomLanguageLine(modName, internalName, displayName);
            LanguagePatcher.AddCustomLanguageLine(modName, "Tooltip_" + internalName, tooltip);

            Dictionary <TechType, string> valueToString = TooltipFactory.techTypeTooltipStrings.valueToString;

            valueToString[techType] = "Tooltip_" + internalName;

            // Unlock the TechType on start
            if (unlockAtStart)
            {
                KnownTechPatcher.UnlockedAtStart.Add(techType);
            }

            // Return the new TechType.
            return(techType);
        }
Пример #5
0
        internal TabNode(string[] path, CraftTree.Type scheme, UnityEngine.Sprite sprite, string modName, string name, string displayName) : base(path, scheme)
        {
            Sprite      = sprite;
            DisplayName = displayName;
            Name        = name;

            ModSprite.Add(new ModSprite(SpriteManager.Group.Category, $"{Scheme.ToString()}_{Name}", Sprite));
            LanguagePatcher.AddCustomLanguageLine(modName, $"{Scheme.ToString()}Menu_{Name}", DisplayName);
        }
Пример #6
0
        public CustomCraftTab(string path, string name, CraftTree.Type scheme, Atlas.Sprite sprite)
        {
            Path   = path;
            Name   = name;
            Scheme = scheme;
            Sprite = new CustomSprite(SpriteManager.Group.Category, SpriteId, sprite);

            string modName = ReflectionHelper.CallingAssemblyNameByStackTrace();

            LanguagePatcher.AddCustomLanguageLine(modName, LanguageId, name);
            CustomSpriteHandler.customSprites.Add(Sprite);
        }
    public static void Patch(HarmonyInstance instance)
    {
        foreach (var v in customResources)
        {
            v.Patch();
        }
        PrefabDatabasePatcher.Patch(instance);
        EntTechDataPatcher.Patch(instance);
        LanguagePatcher.Patch(instance);

        ResourcesLoadPatcher.Patch(instance);
    }
Пример #8
0
        public static void Patch()
        {
            harmony = HarmonyInstance.Create("com.ahk1221.smlhelper");

            TechTypePatcher.Patch(harmony);
            CraftDataPatcher.Patch(harmony);
            CraftTreePatcher.Patch(harmony);
            DevConsolePatcher.Patch(harmony);
            LanguagePatcher.Patch(harmony);
            ResourcesPatcher.Patch(harmony);
            PrefabDatabasePatcher.Patch(harmony);
            SpritePatcher.Patch(harmony);
        }
Пример #9
0
        public void ExtractOverrideLines_WhenLegacyDelimitersPresent_Overrides(
            [ValueSource(nameof(CustomValues))] string customValue)
        {
            var originalLines = new Dictionary <string, string>
            {
                { "Key", "OriginalValue" }
            };

            string text = "Key:{" + customValue + "}";

            Console.WriteLine("TestText");
            Console.WriteLine(text);
            int overridesApplied = LanguagePatcher.ExtractOverrideLines("Test1", new[] { text }, originalLines);

            Assert.AreEqual(1, overridesApplied);
            Assert.AreEqual(customValue.Replace("\\n", "\n"), LanguagePatcher.GetCustomLine("Key"));
        }
Пример #10
0
        public static void PostPatch()
        {
            FishPatcher.Patch(harmony);

            TechTypePatcher.Patch();
            CraftTreeTypePatcher.Patch();
            PingTypePatcher.Patch();
            TechCategoryPatcher.Patch();
            TechGroupPatcher.Patch();
            BackgroundTypePatcher.Patch();
            EquipmentTypePatcher.Patch();
            EnumPatcher.Patch(harmony);

            CraftDataPatcher.Patch(harmony);
            CraftTreePatcher.Patch(harmony);
            ConsoleCommandsPatcher.Patch(harmony);
            LanguagePatcher.Patch(harmony);
            PrefabDatabasePatcher.PostPatch(harmony);
            SpritePatcher.Patch(harmony);
            KnownTechPatcher.Patch(harmony);
            BioReactorPatcher.Patch();
            OptionsPanelPatcher.Patch(harmony);
            ItemsContainerPatcher.Patch(harmony);
            PDALogPatcher.Patch(harmony);
            PDAPatcher.Patch(harmony);
            PDAEncyclopediaPatcher.Patch(harmony);
            ItemActionPatcher.Patch(harmony);
            LootDistributionPatcher.Patch(harmony);
            WorldEntityDatabasePatcher.Patch(harmony);
            LargeWorldStreamerPatcher.Patch(harmony);
            IngameMenuPatcher.Patch(harmony);
            TooltipPatcher.Patch(harmony);
            SurvivalPatcher.Patch(harmony);
            CustomSoundPatcher.Patch(harmony);



            Logger.Debug("Saving TechType Cache");
            TechTypePatcher.cacheManager.SaveCache();
            Logger.Debug("Saving CraftTreeType Cache");
            CraftTreeTypePatcher.cacheManager.SaveCache();
            Logger.Debug("Saving PingType Cache");
            PingTypePatcher.cacheManager.SaveCache();
        }
Пример #11
0
 internal static void Initialize()
 {
     CustomFishPatcher.Patch(harmony);
     TechTypePatcher.Patch(harmony);
     CraftTreeTypePatcher.Patch(harmony);
     CraftDataPatcher.Patch(harmony);
     CraftTreePatcher.Patch(harmony);
     DevConsolePatcher.Patch(harmony);
     LanguagePatcher.Patch(harmony);
     ResourcesPatcher.Patch(harmony);
     PrefabDatabasePatcher.Patch(harmony);
     SpritePatcher.Patch();
     KnownTechPatcher.Patch(harmony);
     BioReactorPatcher.Patch(harmony);
     OptionsPanelPatcher.Patch(harmony);
     ItemsContainerPatcher.Patch(harmony);
     PDAPatcher.Patch(harmony);
     ItemActionPatcher.Patch(harmony);
 }
Пример #12
0
        public static void Patch()
        {
            harmony = HarmonyInstance.Create("com.ahk1221.smlhelper");

            try
            {
                TechTypePatcher.Patch(harmony);
                CraftDataPatcher.Patch(harmony);
                CraftTreePatcher.Patch(harmony);
                DevConsolePatcher.Patch(harmony);
                LanguagePatcher.Patch(harmony);
                ResourcesPatcher.Patch(harmony);
                PrefabDatabasePatcher.Patch(harmony);
                SpritePatcher.Patch(harmony);
                KnownTechPatcher.Patch(harmony);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }
        }
Пример #13
0
        public void ExtractOverrideLines_WhenTextIsValid_MultipleEntries_KeyIsKnown_Overrides(
            [ValueSource(nameof(CustomValues))] string otherCustomValue,
            [ValueSource(nameof(Keys))] string secondKey)
        {
            var originalLines = new Dictionary <string, string>
            {
                { "Key1", "OriginalValue1" },
                { secondKey, "OriginalValue2" },
            };

            string line1 = "Key1:CustomValue1";
            string line2 = secondKey + ":" + otherCustomValue;

            Console.WriteLine("TestText");
            Console.WriteLine(line1);
            Console.WriteLine(line2);
            int overridesApplied = LanguagePatcher.ExtractOverrideLines("Test1", new[] { line1, line2 }, originalLines);

            Assert.AreEqual(2, overridesApplied);
            Assert.AreEqual("CustomValue1", LanguagePatcher.GetCustomLine("Key1"));
            Assert.AreEqual(otherCustomValue.Replace("\\n", "\n"), LanguagePatcher.GetCustomLine(secondKey));
        }
Пример #14
0
        internal TechType AddTechType(string modName, string internalName, string displayName, string tooltip, bool unlockAtStart)
        {
            // Register the TechType.
            TechType techType = TechTypePatcher.AddTechType(internalName);

            // Register Language lines.
            LanguagePatcher.AddCustomLanguageLine(modName, internalName, displayName);
            LanguagePatcher.AddCustomLanguageLine(modName, "Tooltip_" + internalName, tooltip);

            Dictionary <TechType, string> valueToString = TooltipFactory.techTypeTooltipStrings.valueToString;

            valueToString[techType] = "Tooltip_" + internalName;

            // Unlock the TechType on start
            if (unlockAtStart)
            {
                KnownTechPatcher.UnlockedAtStart.Add(techType);
            }

            // Return the new TechType.
            return(techType);
        }
Пример #15
0
        internal override void LinkToParent(CustomCraftTreeLinkingNode parent)
        {
            base.LinkToParent(parent);

            string tabLanguageID = $"{SchemeAsString}Menu_{Name}";

            // Legacy Support
            LanguagePatcher.AddCustomLanguageLine("SMLHelper", tabLanguageID, DisplayText);

            string spriteID = $"{SchemeAsString}_{Name}";

            CustomSprite custSprite;

            if (Asprite != null)
            {
                custSprite = new CustomSprite(SpriteManager.Group.Category, spriteID, Asprite);
            }
            else
            {
                custSprite = new CustomSprite(SpriteManager.Group.Category, spriteID, Usprite);
            }

            CustomSpriteHandler.customSprites.Add(custSprite);
        }
Пример #16
0
        private static void Initialize()
        {
            var harmony = HarmonyInstance.Create("com.ahk1221.smlhelper");

            FishPatcher.Patch(harmony);

            TechTypePatcher.Patch();
            CraftTreeTypePatcher.Patch();
            PingTypePatcher.Patch();
            EnumPatcher.Patch(harmony);

            CraftDataPatcher.Patch(harmony);
            CraftTreePatcher.Patch(harmony);
            DevConsolePatcher.Patch(harmony);
            LanguagePatcher.Patch(harmony);
            PrefabDatabasePatcher.Patch(harmony);
            SpritePatcher.Patch();
            KnownTechPatcher.Patch(harmony);
            BioReactorPatcher.Patch(harmony);
            OptionsPanelPatcher.Patch(harmony);
            ItemsContainerPatcher.Patch(harmony);
            PDAPatcher.Patch(harmony);
            PDAEncyclopediaPatcher.Patch(harmony);
            ItemActionPatcher.Patch(harmony);
            LootDistributionPatcher.Patch(harmony);
            WorldEntityDatabasePatcher.Patch(harmony);
            IngameMenuPatcher.Patch(harmony);
            TooltipPatcher.Patch(harmony);



            Logger.Debug("Saving TechType Cache");
            TechTypePatcher.cacheManager.SaveCache();
            Logger.Debug("Saving CraftTreeType Cache");
            CraftTreeTypePatcher.cacheManager.SaveCache();
        }
Пример #17
0
        /// <summary>
        /// Allows you to set the tooltip of a specific <see cref="TechType"/>.
        /// </summary>
        /// <param name="techType">The <see cref="TechType"/> whose tooltip that is to be changed.</param>
        /// <param name="text">The new tooltip for the chosen <see cref="TechType"/>.</param>
        void ILanguageHandler.SetTechTypeTooltip(TechType techType, string text)
        {
            string modName = ReflectionHelper.CallingAssemblyNameByStackTrace();

            LanguagePatcher.AddCustomLanguageLine(modName, $"Tooltip_{techType.AsString()}", text);
        }
Пример #18
0
        /// <summary>
        /// Allows you to define a language entry into the game.
        /// </summary>
        /// <param name="lineId">The ID of the entry, this is what is used to get the actual text.</param>
        /// <param name="text">The actual text related to the entry.</param>
        void ILanguageHandler.SetLanguageLine(string lineId, string text)
        {
            string modName = ReflectionHelper.CallingAssemblyNameByStackTrace();

            LanguagePatcher.AddCustomLanguageLine(modName, lineId, text);
        }