public static void RegisterFloraFabricator(List <IDecorationItem> decorationItems)
        {
            Logger.Log("Creating flora craft tree...");
            CustomCraftTreeRoot customTreeRootNode = CreateFloraTree(out CraftTree.Type craftType, decorationItems);

            FloraTreeType = craftType;

            Logger.Log("Registering flora fabricator...");
            // Create a new TechType for the fabricator
            FloraFabTechType = TechTypePatcher.AddTechType(FloraFabID,
                                                           LanguageHelper.GetFriendlyWord("FloraFabricatorName"),
                                                           LanguageHelper.GetFriendlyWord("FloraFabricatorDescription"),
                                                           true);
            // Add new TechType to the buildables (Interior Module group)
            CraftDataPatcher.customBuildables.Add(FloraFabTechType);
            CraftDataPatcher.AddToCustomGroup(TechGroup.InteriorModules, TechCategory.InteriorModule, FloraFabTechType);
            // Set buildable prefab
            CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(FloraFabID, $"Submarine/Build/{FloraFabID}", FloraFabTechType, GetFloraFabPrefab));
            // Set custom sprite for the Habitat Builder Tool menu
            CustomSpriteHandler.customSprites.Add(new CustomSprite(FloraFabTechType, AssetsHelper.Assets.LoadAsset <Sprite>("fabricator_icon_green")));
            // Create and associate recipe to the new TechType
            var customFabRecipe = new TechDataHelper()
            {
                _craftAmount = 1,
                _ingredients = new List <IngredientHelper>(new IngredientHelper[4] {
                    new IngredientHelper(TechType.Titanium, 1),
                    new IngredientHelper(TechType.ComputerChip, 1),
                    new IngredientHelper(TechType.Kyanite, 1),
                    new IngredientHelper(TechType.PrecursorIonCrystal, 1)
                }),
                _techType = FloraFabTechType
            };

            CraftDataPatcher.customTechData[FloraFabTechType] = customFabRecipe;
        }
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                this.CargoCrateContainer = Resources.Load <GameObject>("Submarine/Build/Locker");

                // Add model controler
                var decorativeLockerController = this.GameObject.AddComponent <DecorativeLockerController>();

                // Add to the custom buidables
                CraftDataPatcher.customBuildables.Add(this.TechType);
                CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab));

                // Set the custom icon
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, new Atlas.Sprite(ImageUtils.LoadTextureFromFile("./QMods/DecorationsMod/Assets/decorativelockerdooricon.png")))); //AssetsHelper.Assets.LoadAsset<Sprite>("decorativelockericon")));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 3
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                if (ConfigSwitcher.MarkiDoll1_asBuildable)
                {
                    // Add new TechType to the buildables
                    CraftDataPatcher.customBuildables.Add(this.TechType);
                    CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);
                }
                else
                {
                    // Add the new TechType to the hand-equipments
                    CraftDataPatcher.customEquipmentTypes.Add(this.TechType, EquipmentType.Hand);
                }

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab));

                // Set the custom icon
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, SpriteManager.Get(TechType.Marki1)));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 4
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                normal = AssetsHelper.Assets.LoadAsset <Texture>("descent_bar_sofa_01_normal");
                spec   = AssetsHelper.Assets.LoadAsset <Texture>("descent_bar_sofa_01_spec");

                if (ConfigSwitcher.SofaStr1_asBuidable)
                {
                    // Add new TechType to the buildables
                    CraftDataPatcher.customBuildables.Add(this.TechType);
                    CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);
                }
                else
                {
                    // Set item occupies 4 slots
                    CraftDataPatcher.customItemSizes[this.TechType] = new Vector2int(2, 2);

                    // Add the new TechType to Hand Equipment type.
                    CraftDataPatcher.customEquipmentTypes.Add(this.TechType, EquipmentType.Hand);
                }

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, DecorationItem.DefaultResourcePath + this.ClassID, this.TechType, this.GetPrefab));

                // Set the custom sprite
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("sofastr01icon")));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 5
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                if (ConfigSwitcher.EmptyDesk_asBuildable)
                {
                    // Add to the custom buidables
                    CraftDataPatcher.customBuildables.Add(this.TechType);
                    CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);
                }
                else
                {
                    // Set item occupies 4 slots
                    CraftDataPatcher.customItemSizes[this.TechType] = new Vector2int(2, 2);

                    // Add the new TechType to the hand-equipments
                    CraftDataPatcher.customEquipmentTypes.Add(this.TechType, EquipmentType.Hand);
                }

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab));

                // Set the custom icon
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("deskemptyicon")));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 6
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();
        }
Esempio n. 7
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                posterMagnetObj = AssetsHelper.Assets.LoadAsset <GameObject>("poster_kitty");
                normal          = AssetsHelper.Assets.LoadAsset <Texture>("poster_magnet_normal");
                illum           = AssetsHelper.Assets.LoadAsset <Texture>("poster_magnet_illum");

                // Add new TechType to the buildables
                CraftDataPatcher.customBuildables.Add(this.TechType);
                CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, DecorationItem.DefaultResourcePath + this.ClassID, this.TechType, this.GetPrefab));

                // Set the custom sprite
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("revertpictureframe")));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                // Override OnHandHover
                var pictureFrameType  = typeof(PictureFrame);
                var onHandHoverMethod = pictureFrameType.GetMethod("OnHandHover", BindingFlags.Public | BindingFlags.Instance);
                var postfix           = typeof(PictureFramePatch).GetMethod("OnHandHover_Postfix", BindingFlags.Public | BindingFlags.Static);
                DecorationsMod.HarmonyInstance.Patch(onHandHoverMethod, null, new HarmonyMethod(postfix));

                // Override OnHandClick
                var onHandClickMethod = pictureFrameType.GetMethod("OnHandClick", BindingFlags.Public | BindingFlags.Instance);
                var prefix            = typeof(PictureFramePatch).GetMethod("OnHandClick_Prefix", BindingFlags.Public | BindingFlags.Static);
                DecorationsMod.HarmonyInstance.Patch(onHandClickMethod, new HarmonyMethod(prefix), null);

                this.IsRegistered = true;
            }
        }
Esempio n. 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);
        }
Esempio n. 9
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();
        }
Esempio n. 10
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);
 }
Esempio n. 11
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                // Add new TechType to the buildables
                CraftDataPatcher.customBuildables.Add(this.TechType);
                CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, DecorationItem.DefaultResourcePath + this.ClassID, this.TechType, this.GetPrefab));

                // Set the custom sprite
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, new Atlas.Sprite(ImageUtils.LoadTextureFromFile("./QMods/DecorationsMod/Assets/benchmediumicon.png"))));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 12
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                // Add to the custom buidables
                CraftDataPatcher.customBuildables.Add(this.TechType);
                CraftDataPatcher.AddToCustomGroup(TechGroup.InteriorModules, TechCategory.InteriorModule, this.TechType);

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab));

                // Set the custom icon
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, new Atlas.Sprite(ImageUtils.LoadTextureFromFile("./QMods/DecorationsMod/Assets/longplanterbox.png"))));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 13
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);
            }
        }
Esempio n. 14
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();
        }
Esempio n. 15
0
 /// <summary>
 /// Loads a custom item
 /// </summary>
 /// <param name="name">Item's internal name</param>
 /// <param name="languageName">Item's display name</param>
 /// <param name="languageTooltip">Item's tooltip</param>
 /// <param name="from">Item's ingredient</param>
 /// <param name="fromstring">Item's ingredient's name</param>
 /// <param name="inassetbundles">What assetbundle the sprite of the item is in</param>
 /// <param name="assetPath">The name of the sprite</param>
 /// <param name="alt_assetPath">The name of the alternative sprite</param>
 public static void Custom(string name, string languageName, string languageTooltip, TechType from, string alt_assetPath, string assetPath, InAssetBundles inassetbundles = InAssetBundles.All)
 {
     try
     {
         var _x              = 1;
         var _y              = 1;
         var _a              = 10;
         var _e              = true;
         var Config          = MI.Config.cfgfile;
         var moreingots      = Load.moreingots;
         var ingotsplus      = Load.ingotsplus;
         var moreingots_salt = Load.moreingots_salt;
         var ingotsplus_salt = Load.ingotsplus_salt;
         var fromstring      = from.ToString();
         Config.TryGet(ref _x, languageName, "Size", "x");
         Config.TryGet(ref _y, languageName, "Size", "y");
         Config.TryGet(ref _a, languageName, "Craft amount");
         Config.TryGet(ref _e, languageName, "Enabled");
         Log.Debug(languageName, Status.Start);
         if (_e == false)
         {
             Log.Debug(languageName, "Item is disabled");
             return;
         }
         Log.Debug(languageName, "Checking config data for errors... (0/6)");
         if (_x <= 0)
         {
             _x = 1;
             Config[languageName, "Size", "x"] = _x;
             Log.Warning(languageName, "X can't be less than 1");
             Log.Info(languageName, "X was set to 1");
         }
         Log.Debug(languageName, "Checking config data for errors... (1/6)");
         if (_x > 6)
         {
             _x = 1;
             Config[languageName, "Size", "x"] = _x;
             Log.Warning(languageName, "X can't be greater than 6");
             Log.Info(languageName, "X was set to 1");
         }
         Log.Debug(languageName, "Checking config data for errors... (2/6)");
         if (_y <= 0)
         {
             _y = 1;
             Config[languageName, "Size", "y"] = _y;
             Log.Warning(languageName, "Y can't be less than 1");
             Log.Info(languageName, "Y was set to 1");
         }
         Log.Debug(languageName, "Checking config data for errors... (3/6)");
         if (_y > 8)
         {
             _y = 1;
             Config[languageName, "Size", "y"] = _y;
             Log.Warning(languageName, "Y can't be greater than 8");
             Log.Info(languageName, "Y was set to 1");
         }
         Log.Debug(languageName, "Checking config data for errors... (4/6)");
         if (_a <= 0)
         {
             _a = 10;
             Config[languageName, "Craft amount"] = _a;
             Log.Warning(languageName, "Craft amount can't be less than 1");
             Log.Info(languageName, "Craft amount was set to 10");
         }
         Log.Debug(languageName, "Checking config data for errors... (5/6)");
         if (_a > 10)
         {
             _a = 10;
             Config[languageName, "Craft amount"] = _a;
             Log.Warning(languageName, "Craft amount can't be greater than 10");
             Log.Info(languageName, "Craft amount was set to 10");
         }
         Log.Debug(languageName, "Checking config data for errors... (6/6)");
         Log.Debug(languageName, "Error check complete");
         MI.Config.Save(languageName);
         Log.Debug(languageName, "Adding TechType...");
         var techType = TechTypePatcher.AddTechType(name, languageName, languageTooltip);
         Log.Debug(languageName, "TechType added");
         Log.Debug(languageName, "Loading TechDatas... (0/2)");
         var techData = new TechDataHelper
         {
             _craftAmount = 1,
             _ingredients = new List <IngredientHelper>()
             {
                 new IngredientHelper(from, _a)
             },
             _techType = techType
         };
         Log.Debug(languageName, "Loading TechDatas... (1/2)");
         var techDataB = new TechDataHelper
         {
             _craftAmount = _a,
             _ingredients = new List <IngredientHelper>()
             {
                 new IngredientHelper(techType, 1)
             },
             _techType = from
         };
         Log.Debug(languageName, "Loading TechDatas... (2/2)");
         Log.Debug(languageName, "TechDatas loaded");
         Log.Debug(languageName, "Adding unlock on start for " + from + "...");
         KnownTechPatcher.unlockedAtStart.Add(from);
         Log.Debug(languageName, "Unlock on start added for " + from);
         Log.Debug(languageName, "Adding TechTypes to the PDA Databank... (0/2)");
         CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.BasicMaterials, techType);
         Log.Debug(languageName, "Adding TechTypes to the PDA Databank... (1/2)");
         CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.BasicMaterials, from);
         Log.Debug(languageName, "Adding TechTypes to the PDA Databank... (2/2)");
         Log.Debug(languageName, "TechTypes added to the PDA Databank");
         Log.Debug(languageName, "Linking TechDatas with TechTypes... (0/2)");
         CraftDataPatcher.customTechData.Add(techType, techData);
         Log.Debug(languageName, "Linking TechDatas with TechTypes... (1/2)");
         CraftDataPatcher.customTechData.Add(from, techDataB);
         Log.Debug(languageName, "Linking TechDatas with TechTypes... (2/2)");
         Log.Debug(languageName, "TechDatas linked with TechTypes");
         Log.Debug(languageName, "Adding Fabricator nodes... (0/2)");
         CraftTreePatcher.customNodes.Add(new CustomCraftNode(techType, CraftScheme.Fabricator, "Resources/Craft/" + name));
         Log.Debug(languageName, "Adding Fabricator nodes... (1/2)");
         CraftTreePatcher.customNodes.Add(new CustomCraftNode(from, CraftScheme.Fabricator, "Resources/Unpack/" + fromstring));
         Log.Debug(languageName, "Adding Fabricator nodes... (2/2)");
         Log.Debug(languageName, "Fabricator nodes added");
         Log.Debug(languageName, "Applying item sizes...");
         CraftDataPatcher.customItemSizes[key : techType] = new Vector2int(_x, _y);
         Log.Debug(languageName, "Item sizes applied");
         Log.Debug(languageName, "Starting sprite loading...");
         if (inassetbundles == InAssetBundles.All)
         {
             if (MI.Config._alttextures)
             {
                 Log.Debug(languageName, "Asset bundle \"moreingots\" selected");
                 Log.Debug(languageName, "Obtaining sprite...");
                 if (moreingots.LoadAsset <Sprite>(alt_assetPath) == null)
                 {
                     Log.Error(languageName, "Sprite is null");
                     Log.Debug(languageName, Status.Stop);
                     return;
                 }
                 var alt_sprite = moreingots.LoadAsset <Sprite>(alt_assetPath);
                 Log.Debug(languageName, "Sprite obtained");
                 Log.Debug(languageName, "Applying sprite...");
                 CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, alt_sprite));
                 Log.Debug(languageName, "Sprite applied");
             }
             else
             {
                 Log.Debug(languageName, "Asset bundle \"yenzen-ingotsplus\" selected");
                 Log.Debug(languageName, "Obtaining sprite...");
                 if (ingotsplus.LoadAsset <Sprite>(assetPath) == null)
                 {
                     Log.Error(languageName, "Sprite is null");
                     Log.Debug(languageName, Status.Stop);
                     return;
                 }
                 var sprite = ingotsplus.LoadAsset <Sprite>(assetPath);
                 Log.Debug(languageName, "Sprite obtained");
                 Log.Debug(languageName, "Applying sprite...");
                 CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, sprite));
                 Log.Debug(languageName, "Sprite applied");
             }
         }
         if (inassetbundles == InAssetBundles.Salt)
         {
             if (MI.Config._alttextures)
             {
                 Log.Debug(languageName, "Asset bundle \"salt-alexejheroytb\" selected");
                 Log.Debug(languageName, "Obtaining sprite...");
                 if (moreingots_salt.LoadAsset <Sprite>(alt_assetPath) == null)
                 {
                     Log.Error(languageName, "Sprite is null");
                     Log.Debug(languageName, Status.Stop);
                     return;
                 }
                 var alt_sprite = moreingots_salt.LoadAsset <Sprite>(alt_assetPath);
                 Log.Debug(languageName, "Sprite obtained");
                 Log.Debug(languageName, "Applying sprite...");
                 CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, alt_sprite));
                 Log.Debug(languageName, "Sprite applied");
             }
             else
             {
                 Log.Debug(languageName, "Asset bundle \"salt-yenzen\" selected");
                 Log.Debug(languageName, "Obtaining sprite...");
                 if (ingotsplus_salt.LoadAsset <Sprite>(assetPath) == null)
                 {
                     Log.Error(languageName, "Sprite is null");
                     Log.Debug(languageName, Status.Stop);
                     return;
                 }
                 var sprite = ingotsplus_salt.LoadAsset <Sprite>(assetPath);
                 Log.Debug(languageName, "Sprite obtained");
                 Log.Debug(languageName, "Applying sprite...");
                 CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, sprite));
                 Log.Debug(languageName, "Sprite applied");
             }
         }
         if (inassetbundles == InAssetBundles.Sulphur)
         {
             Log.Debug(languageName, "Asset bundle \"sulphur\" selected");
             Log.Debug(languageName, "Obtaining sprite...");
             if (sulphur.LoadAsset <Sprite>(assetPath) == null)
             {
                 Log.Error(languageName, "Sprite is null");
                 Log.Debug(languageName, Status.Stop);
                 return;
             }
             var s_sprite = sulphur.LoadAsset <Sprite>(assetPath);
             Log.Debug(languageName, "Sprite obtained");
             Log.Debug(languageName, "Applying sprite...");
             CustomSpriteHandler.customSprites.Add(new CustomSprite(techType, s_sprite));
             Log.Debug(languageName, "Sprite applied");
         }
         Log.Debug(languageName, Status.Stop);
     }
     catch (Exception e)
     {
         Log.e(e);
     }
 }
Esempio n. 16
0
 /// <summary>
 /// Allows you to add items to the game's internal grouping system.
 /// Required if you want to make buildable items show up in the Habitat Builder or show in the Blueprints Tab of the PDA.
 /// </summary>
 /// <param name="group">The TechGroup you want to add your TechType to.</param>
 /// <param name="category">The TechCategory (in the TechGroup) you want to add your TechType to.</param>
 /// <param name="techType">The TechType you want to add.</param>
 /// <param name="after">Added TechType will be added after this TechType, for sorting purposes.</param>
 void ICraftDataHandler.AddToGroup(TechGroup group, TechCategory category, TechType techType, TechType after)
 {
     CraftDataPatcher.AddToCustomGroup(group, category, techType, after);
 }
Esempio n. 17
0
 /// <summary>
 /// Loads an item
 /// </summary>
 /// <param name="typ">Must be "Juice" or "Cake"</param>
 /// <param name="numbr">Must be between 1 and 8</param>
 public static void Load(string typ, int numbr)
 {
     try
     {
         var _enabled           = true;
         var _name              = "Name";
         var _tooltip           = "Tooltip";
         var _foodvalue         = 1;
         var _watervalue        = 1;
         var _ingredient1       = "None";
         var _ingredient1amount = 1;
         var _ingredient2       = "None";
         var _ingredient2amount = 1;
         var _ingredient3       = "None";
         var _ingredient3amount = 1;
         var _ingredient4       = "None";
         var _ingredient4amount = 1;
         var _ingredient5       = "None";
         var _ingredient5amount = 1;
         var _x     = 1;
         var _y     = 1;
         var number = numbr.ToString();
         type = typ + "s";
         name = typ + number;
         var internal_name = "Custom" + name;
         var _sprite       = "Default";
         var prefabpath    = "WorldEntities/Food/" + internal_name;
         Config.TryGet(ref _enabled, type, name, "Enabled");
         Config.TryGet(ref _name, type, name, "Name");
         Config.TryGet(ref _tooltip, type, name, "Tooltip");
         Config.TryGet(ref _foodvalue, type, name, "Values", "Food");
         Config.TryGet(ref _watervalue, type, name, "Values", "Water");
         Config.TryGet(ref _ingredient1, type, name, "Ingredients", "Ingredient1", "Item");
         Config.TryGet(ref _ingredient1amount, type, name, "Ingredients", "Ingredient1", "Amount");
         Config.TryGet(ref _ingredient2, type, name, "Ingredients", "Ingredient2", "Item");
         Config.TryGet(ref _ingredient2amount, type, name, "Ingredients", "Ingredient2", "Amount");
         Config.TryGet(ref _ingredient3, type, name, "Ingredients", "Ingredient3", "Item");
         Config.TryGet(ref _ingredient3amount, type, name, "Ingredients", "Ingredient3", "Amount");
         Config.TryGet(ref _ingredient4, type, name, "Ingredients", "Ingredient4", "Item");
         Config.TryGet(ref _ingredient4amount, type, name, "Ingredients", "Ingredient4", "Amount");
         Config.TryGet(ref _ingredient5, type, name, "Ingredients", "Ingredient5", "Item");
         Config.TryGet(ref _ingredient5amount, type, name, "Ingredients", "Ingredient5", "Amount");
         Config.TryGet(ref _x, type, name, "Size", "X");
         Config.TryGet(ref _y, type, name, "Size", "Y");
         Config.TryGet(ref _sprite, type, name, configColorPath);
         Log.Debug("Started loading " + name);
         if (_enabled == false)
         {
             return;
         }
         if (_name == "")
         {
             _name = "Name can't be blank";
             Config[type, name, "Name"] = _name;
             Log.Warning(name, "Name can't be blank");
             Log.Info(name, "Name was set to 'Name can't be blank'");
         }
         if (_x < 1)
         {
             _x = 1;
             Config[type, name, "Size", "X"] = _x;
             Log.Warning(name, "X Size can't be less than 1");
             Log.Info(name, "X was set to 1");
         }
         if (_x > 6)
         {
             _x = 1;
             Config[type, name, "Size", "X"] = _x;
             Log.Warning(name, "X Size can't be greater than 6");
             Log.Info(name, "X was set to 1");
         }
         if (_y < 1)
         {
             _y = 1;
             Config[type, name, "Size", "Y"] = _y;
             Log.Warning(name, "Y Size can't be less than 1");
             Log.Info(name, "Y was set to 1");
         }
         if (_y > 8)
         {
             _y = 1;
             Config[type, name, "Size", "Y"] = _y;
             Log.Warning(name, "Y Size can't be greater than 8");
             Log.Info(name, "Y was set to 1");
         }
         CheckIngredients(_ingredient1, _ingredient1amount, 1);
         CheckIngredients(_ingredient2, _ingredient2amount, 2);
         CheckIngredients(_ingredient3, _ingredient3amount, 3);
         CheckIngredients(_ingredient4, _ingredient4amount, 4);
         CheckIngredients(_ingredient5, _ingredient5amount, 5);
         Cfg.Save();
         techType = TechTypePatcher.AddTechType(internal_name, _name, _tooltip + Cfg._tooltipsuffix);
         if (name == "Juice1")
         {
             _juice1tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Juice1));
         }
         if (name == "Juice2")
         {
             _juice2tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Juice2));
         }
         if (name == "Juice3")
         {
             _juice3tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Juice3));
         }
         if (name == "Juice4")
         {
             _juice4tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Juice4));
         }
         if (name == "Juice5")
         {
             _juice5tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Juice5));
         }
         if (name == "Juice6")
         {
             _juice6tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Juice6));
         }
         if (name == "Juice7")
         {
             _juice7tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Juice7));
         }
         if (name == "Juice8")
         {
             _juice8tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Juice8));
         }
         if (name == "Cake1")
         {
             _cake1tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Cake1));
         }
         if (name == "Cake2")
         {
             _cake2tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Cake2));
         }
         if (name == "Cake3")
         {
             _cake3tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Cake3));
         }
         if (name == "Cake4")
         {
             _cake4tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Cake4));
         }
         if (name == "Cake5")
         {
             _cake5tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Cake5));
         }
         if (name == "Cake6")
         {
             _cake6tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Cake6));
         }
         if (name == "Cake7")
         {
             _cake7tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Cake7));
         }
         if (name == "Cake8")
         {
             _cake8tt = techType;
             CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(
                                                       internal_name,
                                                       prefabpath,
                                                       techType,
                                                       GetGameObject.Cake8));
         }
         ApplyTechData();
         KnownTechPatcher.unlockedAtStart.Add(techType);
         if (type == "Cakes")
         {
             ApplySprite.Cake(techType, _sprite);
             CraftTreePatcher.customNodes.Add(new CustomCraftNode(techType, CraftScheme.Fabricator, "Survival/Cakes/" + internal_name));
             CraftDataPatcher.AddToCustomGroup(TechGroup.Survival, TechCategory.CuredFood, techType);
         }
         if (type == "Juices")
         {
             ApplySprite.Juice(techType, _sprite);
             CraftTreePatcher.customNodes.Add(new CustomCraftNode(techType, CraftScheme.Fabricator, "Survival/Juices/" + internal_name));
             CraftDataPatcher.AddToCustomGroup(TechGroup.Survival, TechCategory.Water, techType);
         }
         CraftDataPatcher.customItemSizes[key : techType] = new Vector2int(_x, _y);
         ingredients.Clear();
         Log.Debug("Finished loading " + name);
     }
     catch (Exception e)
     {
         Log.e(e);
     }
 }
Esempio n. 18
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                this.CargoCrateContainer = Resources.Load <GameObject>("Submarine/Build/Locker");

                GameObject model = this.GameObject.FindChild("cargobox01a");

                // Set tech tag
                var techTag = this.GameObject.AddComponent <TechTag>();
                techTag.type = this.TechType;

                // Add prefab identifier
                this.GameObject.AddComponent <PrefabIdentifier>().ClassId = this.ClassID;

                // Add collider
                var collider = this.GameObject.AddComponent <BoxCollider>();
                collider.size   = new Vector3(0.132f, 0.288f, 0.16f);
                collider.center = new Vector3(collider.center.x, collider.center.y - 0.01f, collider.center.z - 0.04f);

                // Set proper shaders (for crafting animation)
                Shader  marmosetUber = Shader.Find("MarmosetUBER");
                Texture normal       = AssetsHelper.Assets.LoadAsset <Texture>("Starship_cargo_normal");
                var     renderers    = this.GameObject.GetComponentsInChildren <Renderer>();
                foreach (Renderer rend in renderers)
                {
                    foreach (Material tmpMat in rend.materials)
                    {
                        tmpMat.shader = marmosetUber;
                        if (tmpMat.name.CompareTo("Starship_cargo (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal);
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                        }
                    }
                }

                // Add large world entity
                this.GameObject.AddComponent <LargeWorldEntity>().cellLevel = LargeWorldEntity.CellLevel.Near;

                // Add sky applier
                var applier = this.GameObject.AddComponent <SkyApplier>();
                applier.renderers = renderers;
                applier.anchorSky = Skies.Auto;

                // Add contructable
                var constructible = this.GameObject.AddComponent <Constructable>();
                constructible.allowedInBase           = true;
                constructible.allowedInSub            = true;
                constructible.allowedOutside          = true;
                constructible.allowedOnCeiling        = false;
                constructible.allowedOnGround         = true;
                constructible.allowedOnConstructables = true;
                constructible.controlModelState       = true;
                constructible.deconstructionAllowed   = true;
                constructible.rotationEnabled         = true;
                constructible.model    = model;
                constructible.techType = this.TechType;
                constructible.enabled  = true;

                // Add constructable bounds
                var bounds = this.GameObject.AddComponent <ConstructableBounds>();

                // Add model controler
                var cargoBoxController = this.GameObject.AddComponent <CargoBoxController>();

                // Add new TechType to the buildables
                CraftDataPatcher.customBuildables.Add(this.TechType);
                CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, this.ResourcePath, this.TechType, GetPrefab));

                // Set the custom sprite
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("cargobox01aicon")));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 19
0
        public static void Patch()
        {
            Logger.ClearCustomLog();
            Logger.Debug("Loading start...");

            var ab = AssetBundle.LoadFromFile(
                $"./QMods/{Assembly.GetExecutingAssembly().GetName().Name}/testing.assets");

            Logger.Debug("Bundle name: " + ab.name);

            var cube = ab.LoadAsset <GameObject>("Cube");

            Logger.Debug("Cube name: " + cube.name);

            Utility.AddBasicComponents(ref cube, "Cube");
            Logger.Debug("BasicComponents added!");

            var techType = TechTypePatcher.AddTechType("Cube", "Cube", "Just a funny cube");

            Logger.Debug("TechType created!");

            var constructable = cube.AddComponent <Constructable>();

            constructable.allowedInBase           = true;
            constructable.allowedOnGround         = true;
            constructable.allowedInSub            = true;
            constructable.allowedOnCeiling        = false;
            constructable.allowedOnConstructables = true;
            constructable.allowedOnWall           = true;
            constructable.allowedOutside          = true;
            constructable.techType = techType;
            var model = cube.FindChild("Sphere");

            constructable.model = model;
            var modelname = model?.name ?? "NULL";

            Logger.Debug($"Constructable added! Model: {modelname}");

            var techTag = cube.AddComponent <TechTag>();

            techTag.type = techType;
            Logger.Debug("techTag added!");

            var rb = cube.GetComponent <Rigidbody>();

            Object.DestroyImmediate(rb);
            Logger.Debug("Rigitbody killed!");

            CustomPrefabHandler.customPrefabs.Add(new CustomPrefab("Cube", "Submarine/Build/Cube", cube, techType));
            Logger.Debug("Customprefab added!");

            var techData = new TechDataHelper
            {
                _ingredients = new List <IngredientHelper>()
                {
                    new IngredientHelper(TechType.Titanium, 1)
                },
                _techType = techType
            };

            Logger.Debug("techData added!");

            CraftDataPatcher.customTechData.Add(techType, techData);
            Logger.Debug("techData added to custom list!");

            CraftDataPatcher.customBuildables.Add(techType);
            Logger.Debug("techType added to custom Buildables!");

            CraftDataPatcher.AddToCustomGroup(TechGroup.InteriorModules, TechCategory.InteriorModule, techType);
            Logger.Debug("techType added to the groups!");
        }
Esempio n. 20
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                // Move model
                GameObject model = this.GameObject.FindChild("Model");
                model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y + 0.032f, model.transform.localPosition.z);

                // Add prefab identifier
                var prefabId = this.GameObject.AddComponent <PrefabIdentifier>();
                prefabId.ClassId = this.ClassID;

                // Add large world entity
                var lwe = this.GameObject.AddComponent <LargeWorldEntity>();
                lwe.cellLevel = LargeWorldEntity.CellLevel.Near;

                // Add tech tag
                var techTag = this.GameObject.AddComponent <TechTag>();
                techTag.type = this.TechType;

                // Add collider
                var collider = this.GameObject.AddComponent <BoxCollider>();
                collider.size   = new Vector3(0.07f, 0.054f, 0.07f);
                collider.center = new Vector3(collider.center.x, collider.center.y + 0.027f, collider.center.z);

                // Set proper shaders (for crafting animation)
                Shader  marmosetUber = Shader.Find("MarmosetUBER");
                Texture normal1      = AssetsHelper.Assets.LoadAsset <Texture>("power_cell_01_normal");
                Texture spec1        = AssetsHelper.Assets.LoadAsset <Texture>("power_cell_01_spec");
                Texture illum1       = AssetsHelper.Assets.LoadAsset <Texture>("power_cell_01_illum");
                Texture normal2      = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_normal");
                Texture spec2        = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_spec");
                Texture illum2       = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_illum");
                Texture normal3      = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_indoor_normal");
                Texture illum3       = AssetsHelper.Assets.LoadAsset <Texture>("Submersible_SeaMoth_indoor_illum");
                Texture normal4      = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_storage_01_normal");
                Texture normal5      = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_storage_02_normal");
                Texture illum5       = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_storage_02_illum");
                Texture normal6      = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_power_cell_slot_01_normal");
                Texture spec6        = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_power_cell_slot_01_spec");
                Texture normal7      = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_normal");
                Texture spec7        = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_spec");
                Texture normal8      = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_hatch_01_normal");
                Texture spec8        = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_hatch_01_spec");

                var renderers = this.GameObject.GetComponentsInChildren <Renderer>();
                if (renderers.Length > 0)
                {
                    foreach (Renderer rend in renderers)
                    {
                        if (rend.materials.Length > 0)
                        {
                            foreach (Material tmpMat in rend.materials)
                            {
                                if (tmpMat.name.CompareTo("Submersible_SeaMoth_Glass (Instance)") != 0 && tmpMat.name.CompareTo("Submersible_SeaMoth_Glass_interior (Instance)") != 0)
                                {
                                    tmpMat.shader = marmosetUber;
                                    if (tmpMat.name.CompareTo("power_cell_01 (Instance)") == 0)
                                    {
                                        tmpMat.SetTexture("_BumpMap", normal1);
                                        tmpMat.SetTexture("_SpecTex", spec1);
                                        tmpMat.SetTexture("_Illum", illum1);
                                        tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                                        tmpMat.EnableKeyword("MARMO_NORMALMAP");
                                        tmpMat.EnableKeyword("MARMO_EMISSION");
                                    }
                                    else if (tmpMat.name.CompareTo("Submersible_SeaMoth (Instance)") == 0)
                                    {
                                        tmpMat.SetTexture("_BumpMap", normal2);
                                        tmpMat.SetTexture("_SpecTex", spec2);
                                        tmpMat.SetTexture("_Illum", illum2);
                                        tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                                        tmpMat.EnableKeyword("MARMO_NORMALMAP");
                                        tmpMat.EnableKeyword("MARMO_EMISSION");
                                    }
                                    else if (tmpMat.name.CompareTo("Submersible_SeaMoth_indoor (Instance)") == 0)
                                    {
                                        tmpMat.SetTexture("_BumpMap", normal3);
                                        tmpMat.SetTexture("_Illum", illum3);
                                        tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                                        tmpMat.EnableKeyword("MARMO_NORMALMAP");
                                        tmpMat.EnableKeyword("MARMO_EMISSION");
                                    }
                                    else if (tmpMat.name.CompareTo("seamoth_storage_01 (Instance)") == 0)
                                    {
                                        tmpMat.SetTexture("_BumpMap", normal4);

                                        tmpMat.EnableKeyword("MARMO_NORMALMAP");
                                    }
                                    else if (tmpMat.name.CompareTo("seamoth_storage_02 (Instance)") == 0)
                                    {
                                        tmpMat.SetTexture("_BumpMap", normal5);
                                        tmpMat.SetTexture("_Illum", illum5);
                                        tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                                        tmpMat.EnableKeyword("MARMO_NORMALMAP");
                                        tmpMat.EnableKeyword("MARMO_EMISSION");
                                    }
                                    else if (tmpMat.name.CompareTo("seamoth_power_cell_slot_01 (Instance)") == 0)
                                    {
                                        tmpMat.SetTexture("_BumpMap", normal6);
                                        tmpMat.SetTexture("_SpecTex", spec6);

                                        tmpMat.EnableKeyword("MARMO_NORMALMAP");
                                    }
                                    else if (tmpMat.name.CompareTo("seamoth_torpedo_01 (Instance)") == 0)
                                    {
                                        tmpMat.SetTexture("_BumpMap", normal7);
                                        tmpMat.SetTexture("_SpecTex", spec7);

                                        tmpMat.EnableKeyword("MARMO_NORMALMAP");
                                    }
                                    else if (tmpMat.name.CompareTo("seamoth_torpedo_01_hatch_01 (Instance)") == 0)
                                    {
                                        tmpMat.SetTexture("_BumpMap", normal8);
                                        tmpMat.SetTexture("_SpecTex", spec8);

                                        tmpMat.EnableKeyword("MARMO_NORMALMAP");
                                    }
                                }
                            }
                        }
                    }
                }

                // Add contructable
                Constructable constructable = this.GameObject.AddComponent <Constructable>();
                constructable.allowedInBase           = true;
                constructable.allowedInSub            = true;
                constructable.allowedOutside          = true;
                constructable.allowedOnCeiling        = false;
                constructable.allowedOnGround         = true;
                constructable.allowedOnConstructables = true;
                constructable.controlModelState       = true;
                constructable.deconstructionAllowed   = true;
                constructable.rotationEnabled         = true;
                constructable.model    = model;
                constructable.techType = this.TechType;
                constructable.enabled  = true;

                // Add constructable bounds
                ConstructableBounds bounds = this.GameObject.AddComponent <ConstructableBounds>();
                bounds.bounds.position = new Vector3(bounds.bounds.position.x, bounds.bounds.position.y + 0.032f, bounds.bounds.position.z);

                // Add sky applier
                SkyApplier applier = this.GameObject.GetComponent <SkyApplier>();
                if (applier == null)
                {
                    applier = this.GameObject.AddComponent <SkyApplier>();
                }
                applier.renderers = this.GameObject.GetComponentsInChildren <Renderer>();
                applier.anchorSky = Skies.Auto;

                // Add lights/model controler
                SeamothDollController controller = this.GameObject.AddComponent <SeamothDollController>();

                // Add new TechType to the buildables
                CraftDataPatcher.customBuildables.Add(this.TechType);
                CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, this.ResourcePath, this.TechType, GetPrefab));

                // Set the custom sprite
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, SpriteManager.Get(TechType.Seamoth)));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 21
0
 /// <summary>
 /// Allows you to remove an existing TechType from the game's internal group system.
 /// </summary>
 /// <param name="group">The TechGroup in which the TechType is located.</param>
 /// <param name="category">The TechCategory in which the TechType is located.</param>
 /// <param name="techType">The TechType which you want to remove.</param>
 void ICraftDataHandler.RemoveFromGroup(TechGroup group, TechCategory category, TechType techType)
 {
     CraftDataPatcher.RemoveFromCustomGroup(group, category, techType);
 }
Esempio n. 22
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                // Retrieve model node
                GameObject model = this.GameObject.FindChild("model");

                // Move model
                model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y, model.transform.localPosition.z);

                // Disable light at start
                var reactorRodLight = this.GameObject.GetComponentInChildren <Light>();
                reactorRodLight.enabled = false;

                // Add prefab identifier
                var prefabId = this.GameObject.AddComponent <PrefabIdentifier>();
                prefabId.ClassId = this.ClassID;

                // Add large world entity
                var lwe = this.GameObject.AddComponent <LargeWorldEntity>();
                lwe.cellLevel = LargeWorldEntity.CellLevel.Near;

                // Add tech tag
                var techTag = this.GameObject.AddComponent <TechTag>();
                techTag.type = this.TechType;

                // Add box collider
                var collider = this.GameObject.AddComponent <BoxCollider>();
                collider.size   = new Vector3(0.2f, 0.36f, 0.2f);
                collider.center = new Vector3(collider.center.x, collider.center.y + 0.18f, collider.center.z);

                // Set proper shaders (for crafting animation)
                Shader  shader        = Shader.Find("MarmosetUBER");
                Texture normalTexture = AssetsHelper.Assets.LoadAsset <Texture>("nuclear_reactor_rod_normal");
                Texture specTexture   = AssetsHelper.Assets.LoadAsset <Texture>("nuclear_reactor_rod_spec");
                Texture illumTexture  = AssetsHelper.Assets.LoadAsset <Texture>("nuclear_reactor_rod_illum_white");

                List <Renderer> renderers = new List <Renderer>();
                this.GameObject.GetComponentsInChildren <Renderer>(renderers);
                foreach (Renderer renderer in renderers)
                {
                    if (renderer.name.CompareTo("nuclear_reactor_rod_mesh") == 0)
                    {
                        // Associate MarmosetUBER shader
                        renderer.sharedMaterial.shader = shader;

                        // Update normal map
                        renderer.sharedMaterial.SetTexture("_BumpMap", normalTexture);

                        // Update spec map
                        renderer.sharedMaterial.SetTexture("_SpecTex", specTexture);

                        // Update emission map
                        renderer.sharedMaterial.SetTexture("_Illum", illumTexture);

                        // Increase emission map strength
                        renderer.sharedMaterial.SetColor("_GlowColor", new Color(2.5f, 2.5f, 2.5f, 1.0f));
                        renderer.sharedMaterial.SetFloat("_GlowStrength", 1.5f);

                        // Enable emission
                        renderer.sharedMaterial.EnableKeyword("MARMO_NORMALMAP");
                        renderer.sharedMaterial.EnableKeyword("MARMO_EMISSION");
                    }
                }

                // Add sky applier
                var skyapplier = this.GameObject.AddComponent <SkyApplier>();
                skyapplier.renderers = this.GameObject.GetComponentsInChildren <Renderer>();
                skyapplier.anchorSky = Skies.Auto;

                // Add contructable
                var constructible = this.GameObject.AddComponent <Lamp_C>();
                constructible.allowedInBase           = true;
                constructible.allowedInSub            = true;
                constructible.allowedOutside          = true;
                constructible.allowedOnCeiling        = true;
                constructible.allowedOnGround         = true;
                constructible.allowedOnConstructables = true;
                constructible.allowedOnWall           = true;
                constructible.controlModelState       = true;
                constructible.deconstructionAllowed   = true;
                constructible.rotationEnabled         = false;
                constructible.model    = model;
                constructible.techType = this.TechType;
                constructible.enabled  = true;

                // Add constructable bounds
                var bounds = this.GameObject.AddComponent <ConstructableBounds>();
                bounds.bounds.position = new Vector3(bounds.bounds.position.x, bounds.bounds.position.y + 0.003f, bounds.bounds.position.z);

                // Add lamp brightness controler
                var lampBrightness = this.GameObject.AddComponent <ReactorLampBrightness>();

                // Add new TechType to the buildables
                CraftDataPatcher.customBuildables.Add(this.TechType);
                CraftDataPatcher.AddToCustomGroup(TechGroup.ExteriorModules, TechCategory.ExteriorOther, this.TechType);

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, $"{DecorationItem.DefaultResourcePath}{this.ClassID}", this.TechType, this.GetPrefab));

                // Set the custom sprite
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, AssetsHelper.Assets.LoadAsset <Sprite>("reactorrod_white")));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }
Esempio n. 23
0
        public static void Patch()
        {
            Config.Load();
            var configChanged =
                Config.TryGet(ref _egg1_tooltip, "BonesharkEgg", "TooltipHere")
                | Config.TryGet(ref _egg2_tooltip, "CrabsnakeEgg", "TooltipHere")
                | Config.TryGet(ref _egg3_tooltip, "CrabsquidEgg", "TooltipHere")
                | Config.TryGet(ref _egg4_tooltip, "CrashfishEgg", "TooltipHere")
                | Config.TryGet(ref _egg5_tooltip, "GasopodEgg", "TooltipHere")
                | Config.TryGet(ref _egg6_tooltip, "JellyrayEgg", "TooltipHere")
                | Config.TryGet(ref _egg7_tooltip, "LavaLizardEgg", "TooltipHere")
                | Config.TryGet(ref _egg8_tooltip, "MesmerEgg", "TooltipHere")
                | Config.TryGet(ref _egg9_tooltip, "RabbitRayEgg", "TooltipHere")
                | Config.TryGet(ref _egg10_tooltip, "SandsharkEgg", "TooltipHere")
                | Config.TryGet(ref _egg11_tooltip, "ShockerEgg", "TooltipHere")
                | Config.TryGet(ref _egg12_tooltip, "SpadefishEgg", "TooltipHere")
                | Config.TryGet(ref _egg13_tooltip, "StalkerEgg", "TooltipHere")
                | Config.TryGet(ref _egg14_tooltip, "CutefishEgg", "TooltipHere")
                | Config.TryGet(ref _egg15_tooltip, "ReefbackEgg", "TooltipHere")
                | Config.TryGet(ref _egg16_tooltip, "JumperEgg", "TooltipHere");

            if (_egg1_tooltip == "")
            {
                _egg1_tooltip = "tooltip1";
                Config["BonesharkEgg", "TooltipHere"] = _egg1_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip1", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg2_tooltip == "")
            {
                _egg2_tooltip = "tooltip2";
                Config["CrabsnakeEgg", "TooltipHere"] = _egg2_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip2", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg3_tooltip == "")
            {
                _egg3_tooltip = "tooltip3";
                Config["CrabsquidEgg", "TooltipHere"] = _egg3_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip3", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg4_tooltip == "")
            {
                _egg4_tooltip = "tooltip4";
                Config["CrashfishEgg", "TooltipHere"] = _egg4_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip4", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg5_tooltip == "")
            {
                _egg5_tooltip = "tooltip5";
                Config["GasopodEgg", "TooltipHere"] = _egg5_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip5", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg6_tooltip == "")
            {
                _egg6_tooltip = "tooltip6";
                Config["JellyrayEgg", "TooltipHere"] = _egg6_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip6", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg7_tooltip == "")
            {
                _egg7_tooltip = "tooltip7";
                Config["LavaLizardEgg", "TooltipHere"] = _egg7_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip7", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg8_tooltip == "")
            {
                _egg8_tooltip = "tooltip8";
                Config["MesmerEgg", "TooltipHere"] = _egg8_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip8", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg9_tooltip == "")
            {
                _egg9_tooltip = "tooltip9";
                Config["RabbitRayEgg", "TooltipHere"] = _egg9_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip9", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg10_tooltip == "")
            {
                _egg10_tooltip = "tooltip10";
                Config["SandsharkEgg", "TooltipHere"] = _egg10_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip10", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg11_tooltip == "")
            {
                _egg11_tooltip = "tooltip11";
                Config["ShockerEgg", "TooltipHere"] = _egg11_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip11", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg12_tooltip == "")
            {
                _egg12_tooltip = "tooltip12";
                Config["SpadefishEgg", "TooltipHere"] = _egg12_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip12", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg13_tooltip == "")
            {
                _egg13_tooltip = "tooltip13";
                Config["StalkerEgg", "TooltipHere"] = _egg13_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip13", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg14_tooltip == "")
            {
                _egg14_tooltip = "tooltip14";
                Config["CutefishEgg", "TooltipHere"] = _egg14_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip14", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg15_tooltip == "")
            {
                _egg15_tooltip = "tooltip15";
                Config["ReefbackEgg", "TooltipHere"] = _egg15_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip15", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (_egg16_tooltip == "")
            {
                _egg16_tooltip = "tooltip16";
                Config["JumperEgg", "TooltipHere"] = _egg16_tooltip;
                Utilites.Logger.Logger.Error("TooltipHere was set to tooltip16", Utilites.Logger.LogType.Custom | Utilites.Logger.LogType.Console);
                configChanged = true;
            }
            if (configChanged)
            {
                Config.Save();
            }

            //BonesharkEgg
            Logger.Log("Started Patching BonesharkEgg");
            egg1tt = TechTypePatcher.AddTechType("Boneshark Egg", "Boneshark Egg", _egg1_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg1tt);
            KnownTechPatcher.unlockedAtStart.Add(egg1tt);

            var egg1sprite = SpriteManager.Get(TechType.BonesharkEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg1tt, egg1sprite));

            //CrabsnakeEgg
            Logger.Log("Started Patching CrabsnakeEgg");
            egg2tt = TechTypePatcher.AddTechType("Crabsnake Egg", "Crabsnake Egg", _egg2_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg2tt);
            KnownTechPatcher.unlockedAtStart.Add(egg2tt);

            var egg2sprite = SpriteManager.Get(TechType.CrabsnakeEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg2tt, egg2sprite));

            //CrabsquidEgg
            Logger.Log("Started Patching CrabsquidEgg");
            egg3tt = TechTypePatcher.AddTechType("Crabsquid Egg", "Crabsquid Egg", _egg3_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg3tt);
            KnownTechPatcher.unlockedAtStart.Add(egg3tt);

            var egg3sprite = SpriteManager.Get(TechType.CrabsquidEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg3tt, egg3sprite));

            //CrashfishEgg
            Logger.Log("Started Patching CrashfishEgg");
            egg4tt = TechTypePatcher.AddTechType("Crashfish Egg", "Crashfish Egg", _egg4_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg4tt);
            KnownTechPatcher.unlockedAtStart.Add(egg4tt);

            var egg4sprite = SpriteManager.Get(TechType.CrashEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg4tt, egg4sprite));

            //GasopodEgg
            Logger.Log("Started Patching GasopodEgg");
            egg5tt = TechTypePatcher.AddTechType("Gasopod Egg", "Gasopod Egg", _egg5_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg5tt);
            KnownTechPatcher.unlockedAtStart.Add(egg5tt);

            var egg5sprite = SpriteManager.Get(TechType.GasopodEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg5tt, egg5sprite));

            //JellyrayEgg
            Logger.Log("Started Patching JellyrayEgg");
            egg6tt = TechTypePatcher.AddTechType("Jellyray Egg", "Jellyray Egg", _egg6_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg6tt);
            KnownTechPatcher.unlockedAtStart.Add(egg6tt);

            var egg6sprite = SpriteManager.Get(TechType.JellyrayEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg6tt, egg6sprite));

            //LavaLizardEgg
            Logger.Log("Started Patching LavaLizardEgg");
            egg7tt = TechTypePatcher.AddTechType("Lavalizard Egg", "Lavalizard Egg", _egg7_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg7tt);
            KnownTechPatcher.unlockedAtStart.Add(egg7tt);

            var egg7sprite = SpriteManager.Get(TechType.LavaLizardEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg7tt, egg7sprite));

            //MesmerEgg
            Logger.Log("Started Patching MesmerEgg");
            egg8tt = TechTypePatcher.AddTechType("Mesmer Egg", "Mesmer Egg", _egg8_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg8tt);
            KnownTechPatcher.unlockedAtStart.Add(egg8tt);

            var egg8sprite = SpriteManager.Get(TechType.MesmerEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg8tt, egg8sprite));

            //RabbitRayEgg
            Logger.Log("Started Patching RabbitRayEgg");
            egg9tt = TechTypePatcher.AddTechType("Rabbitray Egg", "Rabbitray Egg", _egg9_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg9tt);
            KnownTechPatcher.unlockedAtStart.Add(egg9tt);

            var egg9sprite = SpriteManager.Get(TechType.RabbitrayEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg9tt, egg9sprite));

            //SandsharkEgg
            Logger.Log("Started Patching SandsharkEgg");
            egg10tt = TechTypePatcher.AddTechType("Sandshark Egg", "Sandshark Egg", _egg10_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg10tt);
            KnownTechPatcher.unlockedAtStart.Add(egg10tt);

            var egg10sprite = SpriteManager.Get(TechType.SandsharkEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg10tt, egg10sprite));

            //ShockerEgg
            Logger.Log("Started Patching ShockerEgg");
            egg11tt = TechTypePatcher.AddTechType("Shocker Egg", "Shocker Egg", _egg11_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg11tt);
            KnownTechPatcher.unlockedAtStart.Add(egg11tt);

            var egg11sprite = SpriteManager.Get(TechType.ShockerEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg11tt, egg11sprite));

            //SpadefishEgg
            Logger.Log("Started Patching SpadefishEgg");
            egg12tt = TechTypePatcher.AddTechType("Spadefish Egg", "Spadefish Egg", _egg12_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg12tt);
            KnownTechPatcher.unlockedAtStart.Add(egg12tt);

            var egg12sprite = SpriteManager.Get(TechType.SpadefishEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg12tt, egg12sprite));

            //StalkerEgg
            Logger.Log("Started Patching StalkerEgg");
            egg13tt = TechTypePatcher.AddTechType("Stalker Egg", "Stalker Egg", _egg13_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg13tt);
            KnownTechPatcher.unlockedAtStart.Add(egg13tt);

            var egg13sprite = SpriteManager.Get(TechType.StalkerEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg13tt, egg13sprite));

            //CutefishEgg
            Logger.Log("Started Patching CutefishEgg");
            egg14tt = TechTypePatcher.AddTechType("Cutefish Egg", "Cutefish Egg", _egg14_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg14tt);
            KnownTechPatcher.unlockedAtStart.Add(egg14tt);

            var egg14sprite = SpriteManager.Get(TechType.CutefishEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg14tt, egg14sprite));

            //ReefbackEgg
            Logger.Log("Started Patching ReefbackEgg");
            egg15tt = TechTypePatcher.AddTechType("Reefback Egg", "Reefback Egg", _egg15_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg15tt);
            KnownTechPatcher.unlockedAtStart.Add(egg15tt);

            var egg15sprite = SpriteManager.Get(TechType.ReefbackEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg15tt, egg15sprite));

            //JumperEgg
            Logger.Log("Started Patching JumperEgg");
            egg16tt = TechTypePatcher.AddTechType("Jumper Egg", "Jumper Egg", _egg16_tooltip);
            CraftDataPatcher.AddToCustomGroup(TechGroup.Resources, TechCategory.AdvancedMaterials, egg16tt);
            KnownTechPatcher.unlockedAtStart.Add(egg16tt);

            var egg16sprite = SpriteManager.Get(TechType.JumperEgg);

            CustomSpriteHandler.customSprites.Add(new CustomSprite(egg16tt, egg16sprite));
        }
Esempio n. 24
0
        public override void RegisterItem()
        {
            if (this.IsRegistered == false)
            {
                // Retrieve model node
                GameObject model = this.GameObject.FindChild("prawnsuit");

                // Move model
                model.transform.localPosition = new Vector3(model.transform.localPosition.x, model.transform.localPosition.y - 0.002f, model.transform.localPosition.z);

                // Add prefab identifier
                var prefabId = this.GameObject.AddComponent <PrefabIdentifier>();
                prefabId.ClassId = this.ClassID;

                // Add large world entity
                var lwe = this.GameObject.AddComponent <LargeWorldEntity>();
                lwe.cellLevel = LargeWorldEntity.CellLevel.Near;

                // Add tech tag
                var techTag = this.GameObject.AddComponent <TechTag>();
                techTag.type = this.TechType;

                // Add box collider
                var collider = this.GameObject.AddComponent <BoxCollider>();
                //collider.radius = 0.0375f;
                collider.size   = new Vector3(0.04f, 0.115f, 0.04f);
                collider.center = new Vector3(collider.center.x, collider.center.y + 0.0575f, collider.center.z);

                // Set proper shaders (for crafting animation)
                Shader  shader     = Shader.Find("MarmosetUBER");
                Texture normal     = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_normal");
                Texture spec       = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_spec");
                Texture colorMask  = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_colorMask");
                Texture illum      = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_illum");
                Texture normal2    = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_fp_normal");
                Texture illum2     = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_fp_illum");
                Texture normal3    = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_Arm_Propulsion_Cannon_normal");
                Texture colorMask3 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_Arm_Propulsion_Cannon_colorMask");
                Texture illum3     = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_Arm_Propulsion_Cannon_illum");
                Texture normal4    = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_grappling_arm_normal");
                Texture colorMask4 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_grappling_arm_colorMask");
                Texture illum4     = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_grappling_arm_illum");
                Texture normal5    = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_01_glass_normal");
                Texture normal6    = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_storage_01_normal");
                Texture colorMask6 = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_storage_01_colorMask");
                Texture illum6     = AssetsHelper.Assets.LoadAsset <Texture>("exosuit_storage_01_illum");
                Texture normal7    = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_torpedo_launcher_arm_normal");
                Texture colorMask7 = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_torpedo_launcher_arm_colorMask");
                Texture illum7     = AssetsHelper.Assets.LoadAsset <Texture>("Exosuit_torpedo_launcher_arm_illum");
                Texture normal8    = AssetsHelper.Assets.LoadAsset <Texture>("engine_power_cell_ion_normal");
                Texture spec8      = AssetsHelper.Assets.LoadAsset <Texture>("engine_power_cell_ion_spec");
                Texture illum8     = AssetsHelper.Assets.LoadAsset <Texture>("engine_power_cell_ion_illum");
                Texture normal9    = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_normal");
                Texture spec9      = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_torpedo_01_spec");
                Texture normal10   = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_upgrade_slots_01_normal");
                Texture spec10     = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_upgrade_slots_01_spec");
                Texture illum10    = AssetsHelper.Assets.LoadAsset <Texture>("seamoth_upgrade_slots_01_illum");
                Texture normal11   = AssetsHelper.Assets.LoadAsset <Texture>("submarine_engine_power_cells_01_normal");
                Texture spec11     = AssetsHelper.Assets.LoadAsset <Texture>("submarine_engine_power_cells_01_spec");
                Texture illum11    = AssetsHelper.Assets.LoadAsset <Texture>("submarine_engine_power_cells_01_illum");

                Renderer[] renderers = this.GameObject.GetComponentsInChildren <Renderer>();
                foreach (Renderer renderer in renderers)
                {
                    foreach (Material tmpMat in renderer.materials)
                    {
                        // Associate MarmosetUBER shader
                        if (tmpMat.name.CompareTo("exosuit_01_glass (Instance)") != 0 && tmpMat.name.CompareTo("exosuit_cabin_01_glass (Instance)") != 0)
                        {
                            tmpMat.shader = shader;
                        }

                        if (tmpMat.name.CompareTo("exosuit_01 (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal);
                            tmpMat.SetTexture("_ColorMask", colorMask);
                            tmpMat.SetTexture("_SpecTex", spec);
                            tmpMat.SetTexture("_Illum", illum);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable color mask
                            tmpMat.EnableKeyword("MARMO_VERTEX_COLOR");
                            // Enable specular
                            //tmpMat.EnableKeyword("MARMO_SPECULAR_ON");
                            tmpMat.EnableKeyword("MARMO_SPECULAR_IBL");
                            tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT");
                            tmpMat.EnableKeyword("MARMO_MIP_GLOSS");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                        else if (tmpMat.name.CompareTo("exosuit_01_fp (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal2);
                            tmpMat.SetTexture("_Illum", illum2);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                        else if (tmpMat.name.CompareTo("Exosuit_Arm_Propulsion_Cannon (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal3);
                            tmpMat.SetTexture("_ColorMask", colorMask3);
                            tmpMat.SetTexture("_Illum", illum3);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable color mask
                            tmpMat.EnableKeyword("MARMO_VERTEX_COLOR");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                        else if (tmpMat.name.CompareTo("Exosuit_grappling_arm (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal4);
                            tmpMat.SetTexture("_ColorMask", colorMask4);
                            tmpMat.SetTexture("_Illum", illum4);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable color mask
                            tmpMat.EnableKeyword("MARMO_VERTEX_COLOR");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                        else if (tmpMat.name.CompareTo("exosuit_01_glass (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal5);
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                        }
                        else if (tmpMat.name.CompareTo("exosuit_storage_01 (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal6);
                            tmpMat.SetTexture("_ColorMask", colorMask6);
                            tmpMat.SetTexture("_Illum", illum6);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable color mask
                            tmpMat.EnableKeyword("MARMO_VERTEX_COLOR");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                        else if (tmpMat.name.CompareTo("Exosuit_torpedo_launcher_arm (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal7);
                            tmpMat.SetTexture("_ColorMask", colorMask7);
                            tmpMat.SetTexture("_Illum", illum7);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable color mask
                            tmpMat.EnableKeyword("MARMO_VERTEX_COLOR");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                        else if (tmpMat.name.CompareTo("power_cell_01 (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal8);
                            tmpMat.SetTexture("_SpecTex", spec8);
                            tmpMat.SetTexture("_Illum", illum8);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable specular
                            tmpMat.EnableKeyword("MARMO_SPECULAR_IBL");
                            tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT");
                            tmpMat.EnableKeyword("MARMO_MIP_GLOSS");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                        else if (tmpMat.name.CompareTo("seamoth_torpedo_01 (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal9);
                            tmpMat.SetTexture("_SpecTex", spec9);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable specular
                            tmpMat.EnableKeyword("MARMO_SPECULAR_IBL");
                            tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT");
                            tmpMat.EnableKeyword("MARMO_MIP_GLOSS");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                        }
                        else if (tmpMat.name.CompareTo("seamoth_upgrade_slots_01 (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal10);
                            tmpMat.SetTexture("_SpecTex", spec10);
                            tmpMat.SetTexture("_Illum", illum10);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable specular
                            tmpMat.EnableKeyword("MARMO_SPECULAR_IBL");
                            tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT");
                            tmpMat.EnableKeyword("MARMO_MIP_GLOSS");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                        else if (tmpMat.name.CompareTo("submarine_engine_power_cells_01 (Instance)") == 0)
                        {
                            tmpMat.SetTexture("_BumpMap", normal11);
                            tmpMat.SetTexture("_SpecTex", spec11);
                            tmpMat.SetTexture("_Illum", illum11);
                            tmpMat.SetFloat("_EmissionLM", 0.75f); // Set always visible

                            // Enable specular
                            tmpMat.EnableKeyword("MARMO_SPECULAR_IBL");
                            tmpMat.EnableKeyword("MARMO_SPECULAR_DIRECT");
                            tmpMat.EnableKeyword("MARMO_MIP_GLOSS");
                            // Enable normal map
                            tmpMat.EnableKeyword("MARMO_NORMALMAP");
                            // Enable emission map
                            tmpMat.EnableKeyword("MARMO_EMISSION");
                        }
                    }
                }

                // Add sky applier
                var skyapplier = this.GameObject.AddComponent <SkyApplier>();
                skyapplier.renderers = renderers;
                skyapplier.anchorSky = Skies.Auto;

                // Add contructable
                var constructible = this.GameObject.AddComponent <Constructable>();
                constructible.allowedInBase           = true;
                constructible.allowedInSub            = true;
                constructible.allowedOutside          = true;
                constructible.allowedOnCeiling        = false;
                constructible.allowedOnGround         = true;
                constructible.allowedOnConstructables = true;
                constructible.controlModelState       = true;
                constructible.deconstructionAllowed   = true;
                constructible.rotationEnabled         = true;
                constructible.model    = model;
                constructible.techType = this.TechType;
                constructible.enabled  = true;

                // Add constructable bounds
                var bounds = this.GameObject.AddComponent <ConstructableBounds>();
                bounds.bounds.position = new Vector3(bounds.bounds.position.x, bounds.bounds.position.y + 0.002f, bounds.bounds.position.z);

                // Add model controler
                var exosuitDollControler = this.GameObject.AddComponent <ExosuitDollController>();

                #region Disable right arms (except hand arm)

                GameObject rightArm           = model.FindChild("ExosuitArmRight");
                GameObject rightArmRig        = rightArm.FindChild("exosuit_01_armRight 1").FindChild("ArmRig 1");
                GameObject rightTorpedoArm    = rightArmRig.FindChild("exosuit_arm_torpedoLauncher_geo 1");
                GameObject rightDrillArm      = rightArmRig.FindChild("exosuit_drill_geo 1");
                GameObject rightGrapplinArm   = rightArmRig.FindChild("exosuit_grapplingHook_geo 1");
                GameObject rightGrapplinHand  = rightArmRig.FindChild("exosuit_grapplingHook_hand_geo 1");
                GameObject rightHandArm       = rightArmRig.FindChild("exosuit_hand_geo 1");
                GameObject rightPropulsionArm = rightArmRig.FindChild("exosuit_propulsion_geo 1");

                // Disable right torpedo arm
                List <Renderer> rightTorpedoArmRenderers = new List <Renderer>();
                rightTorpedoArm.GetComponentsInChildren <Renderer>(rightTorpedoArmRenderers);
                if (!rightTorpedoArmRenderers.Contains(rightTorpedoArm.GetComponent <Renderer>()))
                {
                    rightTorpedoArmRenderers.Add(rightTorpedoArm.GetComponent <Renderer>());
                }
                foreach (Renderer rend in rightTorpedoArmRenderers)
                {
                    rend.enabled = false;
                }

                // Disable right drill arm
                rightDrillArm.GetComponent <Renderer>().enabled = false;

                // Disable right grapplin arm
                List <Renderer> rightGrapplinArmRenderers = new List <Renderer>();
                rightGrapplinHand.GetComponentsInChildren <Renderer>(rightGrapplinArmRenderers);
                if (!rightGrapplinArmRenderers.Contains(rightGrapplinHand.GetComponent <Renderer>()))
                {
                    rightGrapplinArmRenderers.Add(rightGrapplinHand.GetComponent <Renderer>());
                }
                foreach (Renderer rend in rightGrapplinArmRenderers)
                {
                    rend.enabled = false;
                }
                rightGrapplinArm.GetComponent <Renderer>().enabled = false;

                // Disable right propulsion arm
                rightPropulsionArm.GetComponent <Renderer>().enabled = false;

                #endregion

                #region Disable left arms (except hand arm)

                GameObject leftArm           = model.FindChild("ExosuitArmLeft");
                GameObject leftArmRig        = leftArm.FindChild("exosuit_01_armRight").FindChild("ArmRig");
                GameObject leftTorpedoArm    = leftArmRig.FindChild("exosuit_arm_torpedoLauncher_geo");
                GameObject leftDrillArm      = leftArmRig.FindChild("exosuit_drill_geo");
                GameObject leftGrapplinArm   = leftArmRig.FindChild("exosuit_grapplingHook_geo");
                GameObject leftGrapplinHand  = leftArmRig.FindChild("exosuit_grapplingHook_hand_geo");
                GameObject leftHandArm       = leftArmRig.FindChild("exosuit_hand_geo");
                GameObject leftPropulsionArm = leftArmRig.FindChild("exosuit_propulsion_geo");

                // Disable left torpedo arm
                List <Renderer> leftTorpedoArmRenderers = new List <Renderer>();
                leftTorpedoArm.GetComponentsInChildren <Renderer>(leftTorpedoArmRenderers);
                if (!leftTorpedoArmRenderers.Contains(leftTorpedoArm.GetComponent <Renderer>()))
                {
                    leftTorpedoArmRenderers.Add(leftTorpedoArm.GetComponent <Renderer>());
                }
                foreach (Renderer rend in leftTorpedoArmRenderers)
                {
                    rend.enabled = false;
                }

                // Disable left drill arm
                leftDrillArm.GetComponent <Renderer>().enabled = false;

                // Disable right grapplin arm
                List <Renderer> leftGrapplinArmRenderers = new List <Renderer>();
                leftGrapplinHand.GetComponentsInChildren <Renderer>(leftGrapplinArmRenderers);
                if (!leftGrapplinArmRenderers.Contains(leftGrapplinHand.GetComponent <Renderer>()))
                {
                    leftGrapplinArmRenderers.Add(leftGrapplinHand.GetComponent <Renderer>());
                }
                foreach (Renderer rend in leftGrapplinArmRenderers)
                {
                    rend.enabled = false;
                }
                leftGrapplinArm.GetComponent <Renderer>().enabled = false;

                // Disable right propulsion arm
                leftPropulsionArm.GetComponent <Renderer>().enabled = false;

                #endregion

                // Add new TechType to the buildables
                CraftDataPatcher.customBuildables.Add(this.TechType);
                CraftDataPatcher.AddToCustomGroup(TechGroup.Miscellaneous, TechCategory.Misc, this.TechType);

                // Set the buildable prefab
                CustomPrefabHandler.customPrefabs.Add(new CustomPrefab(this.ClassID, this.ResourcePath, this.TechType, this.GetPrefab));

                // Set the custom sprite
                CustomSpriteHandler.customSprites.Add(new CustomSprite(this.TechType, SpriteManager.Get(TechType.Exosuit)));

                // Associate recipe to the new TechType
                CraftDataPatcher.customTechData[this.TechType] = this.Recipe;

                this.IsRegistered = true;
            }
        }