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); } }
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"); } }
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"); }
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"]); }
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 }