Ejemplo n.º 1
0
        internal static void Configure(ModComponent modComponent)
        {
            ModCookableComponent modCookableComponent = modComponent.TryCast <ModCookableComponent>();

            if (modCookableComponent is null || !modCookableComponent.Cooking)
            {
                return;
            }

            Cookable cookable = ModComponentUtils.ComponentUtils.GetOrCreateComponent <Cookable>(modCookableComponent);

            cookable.m_CookableType               = ModComponentUtils.EnumUtils.TranslateEnumValue <Cookable.CookableType, CookableType>(modCookableComponent.type);
            cookable.m_CookTimeMinutes            = modCookableComponent.CookingMinutes;
            cookable.m_ReadyTimeMinutes           = modCookableComponent.BurntMinutes;
            cookable.m_NumUnitsRequired           = modCookableComponent.CookingUnitsRequired;
            cookable.m_PotableWaterRequiredLiters = modCookableComponent.CookingWaterRequired;
            cookable.m_WarmUpNearFireRange        = 1.5f;

            cookable.m_CookAudio     = ModComponentUtils.ModUtils.DefaultIfEmpty(modCookableComponent.CookingAudio, GetDefaultCookAudio(modCookableComponent));
            cookable.m_PutInPotAudio = ModComponentUtils.ModUtils.DefaultIfEmpty(modCookableComponent.StartCookingAudio, GetDefaultStartCookingAudio(modCookableComponent));

            Cookable template = ModComponentUtils.ComponentUtils.GetComponent <Cookable>(Resources.Load <GameObject>("GEAR_PinnacleCanPeaches"));

            cookable.m_MeshPotStyle       = template?.m_MeshPotStyle;
            cookable.m_MeshCanStyle       = template?.m_MeshCanStyle;
            cookable.m_LiquidMeshRenderer = template?.m_LiquidMeshRenderer;

            // either just heat or convert, but not both
            if (modCookableComponent.CookingResult is null)
            {
                // no conversion, just heating
                FoodItem foodItem = ModComponentUtils.ComponentUtils.GetComponent <FoodItem>(modCookableComponent);
                if (foodItem != null)
                {
                    foodItem.m_HeatedWhenCooked = true;
                }
            }
            else
            {
                // no heating, but instead convert the item when cooking completes
                GearItem cookedGearItem = modCookableComponent.CookingResult.GetComponent <GearItem>();
                if (cookedGearItem is null)
                {
                    // not mapped yet, do it now
                    AutoMapper.MapModComponent(modCookableComponent.CookingResult);
                    cookedGearItem = modCookableComponent.CookingResult.GetComponent <GearItem>();
                }

                cookable.m_CookedPrefab = cookedGearItem ?? throw new ArgumentException("CookingResult does not map to GearItem for prefab " + modCookableComponent.name);
            }
        }
Ejemplo n.º 2
0
        private static string GetDefaultStartCookingAudio(ModCookableComponent modCookableComponent)
        {
            switch (modCookableComponent.type)
            {
            case CookableType.Grub:
                return("Play_AddSlopToPot");

            case CookableType.Meat:
                return("Play_AddMeatPan");

            default:
                return("Play_AddWaterToPot");
            }
        }
Ejemplo n.º 3
0
        private static string GetDefaultCookAudio(ModCookableComponent modCookableComponent)
        {
            switch (modCookableComponent.type)
            {
            case CookableType.Grub:
                return("Play_BoilingLiquidThickHeavy");

            case CookableType.Meat:
                return("Play_FryingHeavy");

            default:
                return("Play_BoilingLiquidLight");
            }
        }
        private static string GetDefaultCookAudio(ModCookableComponent modCookableComponent)
        {
            if (CookableType.Grub == modCookableComponent.type)
            {
                return("Play_BoilingLiquidThickHeavy");
            }

            if (CookableType.Meat == modCookableComponent.type)
            {
                return("Play_FryingHeavy");
            }

            return("Play_BoilingLiquidLight");
        }
        private static string GetDefaultStartCookingAudio(ModCookableComponent modCookableComponent)
        {
            if (CookableType.Grub == modCookableComponent.type)
            {
                return("Play_AddSlopToPot");
            }

            if (CookableType.Meat == modCookableComponent.type)
            {
                return("Play_AddMeatPan");
            }

            return("Play_AddWaterToPot");
        }
Ejemplo n.º 6
0
 private static void InitializeCookableComponent(ModCookableComponent modCookable, ProxyObject dict, string className = "ModCookableComponent")
 {
     InitializeBaseComponent(modCookable, dict, className);
     modCookable.BurntMinutes      = dict[className]["BurntMinutes"];
     modCookable.Cooking           = dict[className]["Cooking"];
     modCookable.CookingAudio      = dict[className]["CookingAudio"];
     modCookable.StartCookingAudio = dict[className]["StartCookingAudio"];
     modCookable.CookingMinutes    = dict[className]["CookingMinutes"];
     if (string.IsNullOrEmpty(dict[className]["CookingResult"]))
     {
         modCookable.CookingResult = null;
     }
     else
     {
         modCookable.CookingResult = Resources.Load(dict[className]["CookingResult"]).Cast <GameObject>();
     }
     modCookable.CookingUnitsRequired = dict[className]["CookingUnitsRequired"];
     modCookable.CookingWaterRequired = dict[className]["CookingWaterRequired"];
     modCookable.type = EnumUtils.ParseEnum <CookableType>(dict[className]["Type"]);
 }
Ejemplo n.º 7
0
        public static void InitializeComponents(ref GameObject prefab, ProxyObject dict)
        {
            if (ComponentUtils.GetModComponent(prefab) != null || dict is null)
            {
                return;
            }

            #region Mod Components
            if (JsonUtils.ContainsKey(dict, "ModBedComponent"))
            {
                ModBedComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBedComponent>(prefab);
                InitializeBedComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModBodyHarvestComponent"))
            {
                ModBodyHarvestComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBodyHarvestComponent>(prefab);
                InitializeBodyHarvestComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModCharcoalComponent"))
            {
                ModCharcoalComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCharcoalComponent>(prefab);
                InitializeCharcoalComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModClothingComponent"))
            {
                ModClothingComponent newComponent = ComponentUtils.GetOrCreateComponent <ModClothingComponent>(prefab);
                InitializeClothingComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModCollectibleComponent"))
            {
                ModCollectibleComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCollectibleComponent>(prefab);
                InitializeCollectibleComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModCookableComponent"))
            {
                ModCookableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCookableComponent>(prefab);
                InitializeCookableComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModCookingPotComponent"))
            {
                ModCookingPotComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCookingPotComponent>(prefab);
                InitializeCookingPotComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModExplosiveComponent"))
            {
                ModExplosiveComponent newComponent = ComponentUtils.GetOrCreateComponent <ModExplosiveComponent>(prefab);
                InitializeExplosiveComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModFirstAidComponent"))
            {
                ModFirstAidComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFirstAidComponent>(prefab);
                InitializeFirstAidComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModFoodComponent"))
            {
                ModFoodComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFoodComponent>(prefab);
                InitializeFoodComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModGenericComponent"))
            {
                ModGenericComponent newComponent = ComponentUtils.GetOrCreateComponent <ModGenericComponent>(prefab);
                InitializeGenericComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModGenericEquippableComponent"))
            {
                ModGenericEquippableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModGenericEquippableComponent>(prefab);
                InitializeGenericEquippableComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModLiquidComponent"))
            {
                ModLiquidComponent newComponent = ComponentUtils.GetOrCreateComponent <ModLiquidComponent>(prefab);
                InitializeLiquidComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModPowderComponent"))
            {
                ModPowderComponent newComponent = ComponentUtils.GetOrCreateComponent <ModPowderComponent>(prefab);
                InitializePowderComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModPurificationComponent"))
            {
                ModPurificationComponent newComponent = ComponentUtils.GetOrCreateComponent <ModPurificationComponent>(prefab);
                InitializePurificationComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModRandomItemComponent"))
            {
                ModRandomItemComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRandomItemComponent>(prefab);
                InitializeRandomItemComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModRandomWeightedItemComponent"))
            {
                ModRandomWeightedItemComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRandomWeightedItemComponent>(prefab);
                InitializeRandomWeightedItemComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModResearchComponent"))
            {
                ModResearchComponent newComponent = ComponentUtils.GetOrCreateComponent <ModResearchComponent>(prefab);
                InitializeResearchComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModRifleComponent"))
            {
                ModRifleComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRifleComponent>(prefab);
                InitializeRifleComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModToolComponent"))
            {
                ModToolComponent newComponent = ComponentUtils.GetOrCreateComponent <ModToolComponent>(prefab);
                InitializeToolComponent(newComponent, dict);
            }
            #endregion

            #region Behaviour Components
            if (JsonUtils.ContainsKey(dict, "ModAccelerantComponent"))
            {
                ModAccelerantComponent newComponent = ComponentUtils.GetOrCreateComponent <ModAccelerantComponent>(prefab);
                InitializeAccelerantComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModBurnableComponent"))
            {
                ModBurnableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBurnableComponent>(prefab);
                InitializeBurnableComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModFireStarterComponent"))
            {
                ModFireStarterComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFireStarterComponent>(prefab);
                InitializeFireStarterComponent(newComponent, dict);
            }
            else if (JsonUtils.ContainsKey(dict, "ModTinderComponent"))
            {
                ModTinderComponent newComponent = ComponentUtils.GetOrCreateComponent <ModTinderComponent>(prefab);
                InitializeTinderComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModCarryingCapacityComponent"))
            {
                ModCarryingCapacityComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCarryingCapacityComponent>(prefab);
                InitializeCarryingCapacityComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModEvolveComponent"))
            {
                ModEvolveComponent newComponent = ComponentUtils.GetOrCreateComponent <ModEvolveComponent>(prefab);
                InitializeEvolveComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModHarvestableComponent"))
            {
                ModHarvestableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModHarvestableComponent>(prefab);
                InitializeHarvestableComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModMillableComponent"))
            {
                ModMillableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModMillableComponent>(prefab);
                InitializeMillableComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModRepairableComponent"))
            {
                ModRepairableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRepairableComponent>(prefab);
                InitializeRepairableComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModScentComponent"))
            {
                ModScentComponent newComponent = ComponentUtils.GetOrCreateComponent <ModScentComponent>(prefab);
                InitializeScentComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModSharpenableComponent"))
            {
                ModSharpenableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModSharpenableComponent>(prefab);
                InitializeSharpenableComponent(newComponent, dict);
            }
            if (JsonUtils.ContainsKey(dict, "ModStackableComponent"))
            {
                ModStackableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModStackableComponent>(prefab);
                InitializeStackableComponent(newComponent, dict);
            }
            #endregion

            #region Modifications
            if (JsonUtils.ContainsKey(dict, "ChangeLayer"))
            {
                ChangeLayer newComponent = ComponentUtils.GetOrCreateComponent <ChangeLayer>(prefab);
                InitializeChangeLayer(newComponent, dict);
            }
            #endregion
        }