public GameObject CreatePrefab() { var entity = EntityTemplates.CreateLooseEntity( id: Id, name: NameWithLink, desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("kukumelon_kanim"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.RECTANGLE, width: 0.8f, height: 0.7f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, caloriesPerUnit: 2000000f, quality: 6, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: TUNING.FOOD.SPOIL_TIME.SLOW, can_rot: true); var food = EntityTemplates.ExtendEntityToFood(entity, foodInfo); new Recipe(Id, 1f, 0, null, RecipeDescription, 25) .SetFabricator(CookingStationConfig.ID, 100f) .AddIngredient(new Recipe.Ingredient(PalmeraBerryConfig.Id, 1f)); return(food); }
public static GameObject ExtendEntityToFood(GameObject template, EdiblesManager.FoodInfo foodInfo) { template.AddOrGet <EntitySplitter>(); if (foodInfo.CanRot) { Rottable.Def def = template.AddOrGetDef <Rottable.Def>(); def.rotTemperature = foodInfo.RotTemperature; def.spoilTime = foodInfo.SpoilTime; def.staleTime = foodInfo.StaleTime; CreateAndRegisterCompostableFromPrefab(template); } KPrefabID component = template.GetComponent <KPrefabID>(); component.AddTag(GameTags.PedestalDisplayable, false); if (foodInfo.CaloriesPerUnit > 0f) { Edible edible = template.AddOrGet <Edible>(); edible.FoodInfo = foodInfo; component.instantiateFn += delegate(GameObject go) { go.GetComponent <Edible>().FoodInfo = foodInfo; }; GameTags.DisplayAsCalories.Add(component.PrefabTag); } else { component.AddTag(GameTags.CookingIngredient, false); template.AddOrGet <HasSortOrder>(); } return(template); }
public GameObject CreatePrefab() { var looseEntity = EntityTemplates.CreateLooseEntity( id: Id, name: Name, desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("cactusflower_kanim"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.RECTANGLE, width: 0.6f, height: 0.4f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, caloriesPerUnit: 1200000f, quality: TUNING.FOOD.FOOD_QUALITY_GOOD, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: 3600f, can_rot: true); var foodEntity = EntityTemplates.ExtendEntityToFood( template: looseEntity, foodInfo: foodInfo); return(foodEntity); }
public GameObject CreatePrefab() { var entity = EntityTemplates.CreateLooseEntity( id: Id, name: UI.FormatAsLink(Name, Id), desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("filaments_kanim"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.RECTANGLE, width: 0.70f, height: 0.80f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, dlcId: DlcManager.VANILLA_ID, caloriesPerUnit: 1000f, quality: TUNING.FOOD.FOOD_QUALITY_MEDIOCRE, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: TUNING.FOOD.SPOIL_TIME.SLOW, can_rot: true); var foodEntity = EntityTemplates.ExtendEntityToFood(entity, foodInfo); return(foodEntity); }
public GameObject CreatePrefab() { var entity = EntityTemplates.CreateLooseEntity( id: Id, name: NameWithLink, desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("kukumelon_kanim"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.RECTANGLE, width: 0.8f, height: 0.7f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, caloriesPerUnit: 2000000f, quality: 6, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: TUNING.FOOD.SPOIL_TIME.SLOW, can_rot: true); var food = EntityTemplates.ExtendEntityToFood(entity, foodInfo); new Recipe(Id, 1f, 0, null, RecipeDescription, 25) .SetFabricator(CookingStationConfig.ID, 100f) .AddIngredient(new Recipe.Ingredient(PalmeraBerryConfig.Id, 1f)); ComplexRecipe.RecipeElement[] ingredients = { new ComplexRecipe.RecipeElement(PalmeraBerryConfig.Id, 1f) }; ComplexRecipe.RecipeElement[] results = { new ComplexRecipe.RecipeElement(SteamedPalmeraBerryConfig.Id, 1f) }; FriedMushroomConfig.recipe = new ComplexRecipe(ComplexRecipeManager.MakeRecipeID(CookingStationConfig.ID, ingredients, results), ingredients, results) { time = 100f, description = RecipeDescription, useResultAsDescription = true, fabricators = new List <Tag> { CookingStationConfig.ID }, sortOrder = 120 }; return(food); }
public void GetAmounts(EdiblesManager.FoodInfo food_info, bool doExtras, out float available, out float total, out float reserved) { available = WorldInventory.Instance.GetAmount(Resource); total = ((!doExtras) ? 0f : WorldInventory.Instance.GetTotalAmount(Resource)); reserved = ((!doExtras) ? 0f : MaterialNeeds.Instance.GetAmount(Resource)); if (food_info != null) { available *= food_info.CaloriesPerUnit; total *= food_info.CaloriesPerUnit; reserved *= food_info.CaloriesPerUnit; } }
public GameObject CreatePrefab() { var entity = EntityTemplates.CreateLooseEntity( id: Id, name: Name, desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("lavacake"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.RECTANGLE, width: 0.8f, height: 0.4f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, caloriesPerUnit: 4000000f, quality: 6, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: TUNING.FOOD.SPOIL_TIME.SLOW, can_rot: true); var food = EntityTemplates.ExtendEntityToFood( template: entity, foodInfo: foodInfo); ComplexRecipe.RecipeElement[] ingredients = { new ComplexRecipe.RecipeElement(MagmaFernConfig.SeedId, 2f) }; ComplexRecipe.RecipeElement[] results = { new ComplexRecipe.RecipeElement(Id, 1f) }; Recipe = new ComplexRecipe(ComplexRecipeManager.MakeRecipeID(CookingStationConfig.ID, ingredients, results), ingredients, results) { time = TUNING.FOOD.RECIPES.STANDARD_COOK_TIME, description = RecipeDescription, nameDisplay = ComplexRecipe.RecipeNameDisplay.Result, fabricators = new List <Tag> { GourmetCookingStationConfig.ID }, sortOrder = 120 }; return(food); }
public GameObject CreatePrefab() { var looseEntity = EntityTemplates.CreateLooseEntity( id: Id, name: Name, desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("cactusfleshgrilled_kanim"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.RECTANGLE, width: 0.8f, height: 0.4f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, caloriesPerUnit: 2800000f, quality: TUNING.FOOD.FOOD_QUALITY_MEDIOCRE, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: 2400f, can_rot: true); var foodEntity = EntityTemplates.ExtendEntityToFood( template: looseEntity, foodInfo: foodInfo); var input = new[] { new ComplexRecipe.RecipeElement(CactusFleshConfig.Id, 2f) }; var output = new[] { new ComplexRecipe.RecipeElement(Id, 1f) }; var recipeId = ComplexRecipeManager.MakeRecipeID( fabricator: CookingStationConfig.ID, inputs: input, outputs: output); Recipe = new ComplexRecipe(recipeId, input, output) { time = TUNING.FOOD.RECIPES.STANDARD_COOK_TIME, description = RecipeDescription, nameDisplay = ComplexRecipe.RecipeNameDisplay.Result, fabricators = new List <Tag> { CookingStationConfig.ID }, sortOrder = 2, requiredTech = null }; return(foodEntity); }
public static void AddToDiet(List <Diet.Info> dietInfos, EdiblesManager.FoodInfo foodInfo, Tag poopTag, float dailyCalories, float howManyKgOfPoopForDailyCalories = 0f, string diseaseId = "", float diseasePerKg = 0.0f) { var caloriesInKgOfFood = foodInfo.CaloriesPerUnit; var kgOfFoodToSatisfyCalories = dailyCalories / caloriesInKgOfFood; var conversionRatio = 1f / (kgOfFoodToSatisfyCalories / howManyKgOfPoopForDailyCalories); dietInfos.Add(string.IsNullOrEmpty(diseaseId) ? new Diet.Info(new HashSet <Tag>(new[] { new Tag(foodInfo.Id) }), poopTag, caloriesInKgOfFood, conversionRatio) : new Diet.Info(new HashSet <Tag>(new[] { new Tag(foodInfo.Id) }), poopTag, caloriesInKgOfFood, conversionRatio, diseaseId, diseasePerKg)); }
public GameObject CreatePrefab() { var entity = EntityTemplates.CreateLooseEntity( id: Id, name: UI.FormatAsLink(Name, Id), desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("macedonia_kanim"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.CIRCLE, width: 0.30f, height: 0.30f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, dlcId: DlcManager.VANILLA_ID, caloriesPerUnit: 1400000f, quality: TUNING.FOOD.FOOD_QUALITY_AMAZING, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: TUNING.FOOD.SPOIL_TIME.SLOW, can_rot: true); var food = EntityTemplates.ExtendEntityToFood(entity, foodInfo); var input = new[] { new ComplexRecipe.RecipeElement(NectarConfig.Id, 1f), new ComplexRecipe.RecipeElement(PrickleFruitConfig.ID, 1f) }; var output = new[] { new ComplexRecipe.RecipeElement(MacedoniaConfig.Id, 1f) }; var fabricatorId = CookingStationConfig.ID; var recipeId = ComplexRecipeManager.MakeRecipeID(fabricatorId, input, output); Recipe = new ComplexRecipe(recipeId, input, output, 0) { time = 100f, description = RecipeDescription, nameDisplay = ComplexRecipe.RecipeNameDisplay.Result, fabricators = new List <Tag> { fabricatorId }, sortOrder = 120 }; return(food); }
protected override void OnPrefabInit() { base.OnPrefabInit(); if (foodInfo == null) { if (FoodID == null) { Debug.LogError("No food FoodID"); } foodInfo = Game.Instance.ediblesManager.GetFoodInfo(FoodID); } GetComponent <KPrefabID>().AddTag(GameTags.Edible, false); Subscribe(748399584, OnCraftDelegate); Subscribe(1272413801, OnCraftDelegate); workerStatusItem = Db.Get().DuplicantStatusItems.Eating; synchronizeAnims = false; Components.Edibles.Add(this); }
private void GetAmounts(bool doExtras, out float available, out float total, out float reserved) { available = 0f; total = 0f; reserved = 0f; HashSet <Tag> resources = null; if (WorldInventory.Instance.TryGetDiscoveredResourcesFromTag(ResourceCategoryTag, out resources)) { ListPool <Tag, ResourceCategoryHeader> .PooledList pooledList = ListPool <Tag, ResourceCategoryHeader> .Allocate(); foreach (Tag item in resources) { EdiblesManager.FoodInfo foodInfo = null; if (Measure == GameUtil.MeasureUnit.kcal) { foodInfo = Game.Instance.ediblesManager.GetFoodInfo(item.Name); if (foodInfo == null) { pooledList.Add(item); continue; } } anyDiscovered = true; ResourceEntry value = null; if (!ResourcesDiscovered.TryGetValue(item, out value)) { value = NewResourceEntry(item, Measure); ResourcesDiscovered.Add(item, value); } value.GetAmounts(foodInfo, doExtras, out float available2, out float total2, out float reserved2); available += available2; total += total2; reserved += reserved2; } foreach (Tag item2 in pooledList) { resources.Remove(item2); } pooledList.Recycle(); } }
public GameObject CreatePrefab() { var entity = EntityTemplates.CreateLooseEntity( id: Id, name: UI.FormatAsLink(Name, Id), desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("palmeraberry_kanim"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.RECTANGLE, width: 0.77f, height: 0.48f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, dlcId: DlcManager.VANILLA_ID, caloriesPerUnit: 0.0f, quality: TUNING.FOOD.FOOD_QUALITY_AWFUL, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: TUNING.FOOD.SPOIL_TIME.SLOW, can_rot: true); var foodEntity = EntityTemplates.ExtendEntityToFood(entity, foodInfo); var sublimates = foodEntity.AddOrGet <Sublimates>(); sublimates.spawnFXHash = SpawnFXHashes.OxygenEmissionBubbles; sublimates.info = new Sublimates.Info( rate: 0.001f, min_amount: 0f, max_destination_mass: 1.8f, mass_power: 0.0f, element: SimHashes.Hydrogen); return(foodEntity); }
public GameObject CreatePrefab() { var entity = EntityTemplates.CreateLooseEntity( id: Id, name: UI.FormatAsLink(Name, Id), desc: Description, mass: 1f, unitMass: false, anim: Assets.GetAnim("kukumelon_kanim"), initialAnim: "object", sceneLayer: Grid.SceneLayer.Front, collisionShape: EntityTemplates.CollisionShape.RECTANGLE, width: 0.8f, height: 0.7f, isPickupable: true); var foodInfo = new EdiblesManager.FoodInfo( id: Id, dlcId: DlcManager.VANILLA_ID, caloriesPerUnit: 2000000f, quality: 6, preserveTemperatue: 255.15f, rotTemperature: 277.15f, spoilTime: TUNING.FOOD.SPOIL_TIME.SLOW, can_rot: true); var food = EntityTemplates.ExtendEntityToFood(entity, foodInfo); Recipe = AddComplexRecipe( input: new[] { new ComplexRecipe.RecipeElement(PalmeraBerryConfig.Id, 1f) }, output: new[] { new ComplexRecipe.RecipeElement(SteamedPalmeraBerryConfig.Id, 1f) }, fabricatorId: GourmetCookingStationConfig.ID, productionTime: 100f, recipeDescription: RecipeDescription, nameDisplayType: ComplexRecipe.RecipeNameDisplay.Result, sortOrder: 120 ); return(food); }
private string OnRationsTooltip() { rationsDict.Clear(); float calories = RationTracker.Get().CountRations(rationsDict, true); RationsText.text = GameUtil.GetFormattedCalories(calories, GameUtil.TimeSlice.None, true); RationsTooltip.ClearMultiStringTooltip(); RationsTooltip.AddMultiStringTooltip(string.Format(UI.TOOLTIPS.METERSCREEN_MEALHISTORY, GameUtil.GetFormattedCalories(calories, GameUtil.TimeSlice.None, true)), ToolTipStyle_Header); RationsTooltip.AddMultiStringTooltip(string.Empty, ToolTipStyle_Property); IOrderedEnumerable <KeyValuePair <string, float> > source = rationsDict.OrderByDescending(delegate(KeyValuePair <string, float> x) { EdiblesManager.FoodInfo foodInfo2 = Game.Instance.ediblesManager.GetFoodInfo(x.Key); return(x.Value * (foodInfo2?.CaloriesPerUnit ?? (-1f))); }); Dictionary <string, float> dictionary = source.ToDictionary((KeyValuePair <string, float> t) => t.Key, (KeyValuePair <string, float> t) => t.Value); foreach (KeyValuePair <string, float> item in dictionary) { EdiblesManager.FoodInfo foodInfo = Game.Instance.ediblesManager.GetFoodInfo(item.Key); RationsTooltip.AddMultiStringTooltip((foodInfo == null) ? string.Format(UI.TOOLTIPS.METERSCREEN_INVALID_FOOD_TYPE, item.Key) : $"{foodInfo.Name}: {GameUtil.GetFormattedCalories(item.Value * foodInfo.CaloriesPerUnit, GameUtil.TimeSlice.None, true)}", ToolTipStyle_Property); } return(string.Empty); }
private void GetAmounts(bool doExtras, out float available, out float total, out float reserved) { EdiblesManager.FoodInfo food_info = (Measure != GameUtil.MeasureUnit.kcal) ? null : Game.Instance.ediblesManager.GetFoodInfo(Resource.Name); GetAmounts(food_info, doExtras, out available, out total, out reserved); }
private void on_load_consumable_info(IAssignableIdentity minion, GameObject widget_go) { TableRow widgetRow = GetWidgetRow(widget_go); TableColumn widgetColumn = GetWidgetColumn(widget_go); IConsumableUIItem consumable_info = (widgetColumn as ConsumableInfoTableColumn).consumable_info; EdiblesManager.FoodInfo foodInfo = consumable_info as EdiblesManager.FoodInfo; MultiToggle component = widget_go.GetComponent <MultiToggle>(); if (!widgetColumn.isRevealed) { widget_go.SetActive(false); } else { if (!widget_go.activeSelf) { widget_go.SetActive(true); } switch (widgetRow.rowType) { case TableRow.RowType.Header: { GameObject prefab = Assets.GetPrefab(consumable_info.ConsumableId.ToTag()); if ((UnityEngine.Object)prefab == (UnityEngine.Object)null) { return; } KBatchedAnimController component2 = prefab.GetComponent <KBatchedAnimController>(); Image image2 = widget_go.GetComponent <HierarchyReferences>().GetReference("PortraitImage") as Image; if (component2.AnimFiles.Length > 0) { Sprite sprite = image2.sprite = Def.GetUISpriteFromMultiObjectAnim(component2.AnimFiles[0], "ui", false, string.Empty); } image2.color = Color.white; image2.material = ((!(WorldInventory.Instance.GetAmount(consumable_info.ConsumableId.ToTag()) > 0f)) ? Assets.UIPrefabs.TableScreenWidgets.DesaturatedUIMaterial : Assets.UIPrefabs.TableScreenWidgets.DefaultUIMaterial); break; } case TableRow.RowType.Default: switch (get_value_consumable_info(minion, widget_go)) { case ResultValues.False: component.ChangeState(0); break; case ResultValues.True: component.ChangeState(1); break; case ResultValues.ConditionalGroup: component.ChangeState(2); break; } break; case TableRow.RowType.Minion: case TableRow.RowType.StoredMinon: switch (get_value_consumable_info(minion, widget_go)) { case ResultValues.False: component.ChangeState(0); break; case ResultValues.True: component.ChangeState(1); break; case ResultValues.ConditionalGroup: component.ChangeState(2); break; } if (foodInfo != null && (UnityEngine.Object)(minion as MinionIdentity) != (UnityEngine.Object)null) { Image image = widget_go.GetComponent <HierarchyReferences>().GetReference("BGImage") as Image; Color color2 = image.color = new Color(0.721568644f, 0.443137258f, 0.5803922f, Mathf.Max((float)foodInfo.Quality - Db.Get().Attributes.FoodExpectation.Lookup(minion as MinionIdentity).GetTotalValue() + 1f, 0f) * 0.25f); } break; } refresh_scrollers(); } }
private void SetPanels(GameObject target) { MinionIdentity component = target.GetComponent <MinionIdentity>(); Amounts amounts = target.GetAmounts(); PrimaryElement component2 = target.GetComponent <PrimaryElement>(); BuildingComplete component3 = target.GetComponent <BuildingComplete>(); BuildingUnderConstruction component4 = target.GetComponent <BuildingUnderConstruction>(); CellSelectionObject component5 = target.GetComponent <CellSelectionObject>(); InfoDescription component6 = target.GetComponent <InfoDescription>(); Edible component7 = target.GetComponent <Edible>(); attributeLabels.ForEach(delegate(LocText x) { UnityEngine.Object.Destroy(x.gameObject); }); attributeLabels.Clear(); vitalsPanel.gameObject.SetActive(amounts != null); string text = string.Empty; string text2 = string.Empty; if (amounts != null) { vitalsContainer.selectedEntity = selectedTarget; Uprootable component8 = selectedTarget.gameObject.GetComponent <Uprootable>(); if ((UnityEngine.Object)component8 != (UnityEngine.Object)null) { vitalsPanel.gameObject.SetActive((UnityEngine.Object)component8.GetPlanterStorage != (UnityEngine.Object)null); } WiltCondition component9 = selectedTarget.gameObject.GetComponent <WiltCondition>(); if ((UnityEngine.Object)component9 != (UnityEngine.Object)null) { vitalsPanel.gameObject.SetActive(true); } } if ((bool)component) { text = string.Empty; } else if ((bool)component6) { text = component6.description; } else if ((UnityEngine.Object)component3 != (UnityEngine.Object)null) { text = component3.Def.Effect; text2 = component3.Def.Desc; } else if ((UnityEngine.Object)component4 != (UnityEngine.Object)null) { text = component4.Def.Effect; text2 = component4.Def.Desc; } else if ((UnityEngine.Object)component7 != (UnityEngine.Object)null) { EdiblesManager.FoodInfo foodInfo = component7.FoodInfo; text += string.Format(UI.GAMEOBJECTEFFECTS.CALORIES, GameUtil.GetFormattedCalories(foodInfo.CaloriesPerUnit, GameUtil.TimeSlice.None, true)); } else if ((UnityEngine.Object)component5 != (UnityEngine.Object)null) { text = component5.element.FullDescription(false); } else if ((UnityEngine.Object)component2 != (UnityEngine.Object)null) { Element element = ElementLoader.FindElementByHash(component2.ElementID); text = ((element == null) ? string.Empty : element.FullDescription(false)); } List <Descriptor> gameObjectEffects = GameUtil.GetGameObjectEffects(target, true); bool flag = gameObjectEffects.Count > 0; descriptionContainer.gameObject.SetActive(flag); descriptionContainer.descriptors.gameObject.SetActive(flag); if (flag) { descriptionContainer.descriptors.SetDescriptors(gameObjectEffects); } descriptionContainer.description.text = text; descriptionContainer.flavour.text = text2; infoPanel.gameObject.SetActive((UnityEngine.Object)component == (UnityEngine.Object)null); descriptionContainer.gameObject.SetActive(infoPanel.activeSelf); descriptionContainer.flavour.gameObject.SetActive(text2 != string.Empty && text2 != "\n"); if (vitalsPanel.gameObject.activeSelf && amounts.Count == 0) { vitalsPanel.gameObject.SetActive(false); } }
public GameObject CreatePrefab() { var placedEntity = EntityTemplates.CreatePlacedEntity( id: Id, name: Name, desc: Description, mass: 1f, anim: Assets.GetAnim("magmafern"), initialAnim: "idle_empty", sceneLayer: Grid.SceneLayer.BuildingFront, width: 1, height: 1, decor: TUNING.DECOR.BONUS.TIER2, defaultTemperature: DefaultTemperature); EntityTemplates.ExtendEntityToBasicPlant( template: placedEntity, temperature_lethal_low: TemperatureLethalLow, temperature_warning_low: TemperatureWarningLow, temperature_warning_high: TemperatureWarningHigh, temperature_lethal_high: TemperatureLethalHigh, safe_elements: new[] { SimHashes.Magma }, pressure_sensitive: false, crop_id: SeedId); EntityTemplates.ExtendPlantToFertilizable( template: placedEntity, fertilizers: new[] { new PlantElementAbsorber.ConsumeInfo() { tag = ElementLoader.FindElementByHash(SimHashes.Obsidian).tag, massConsumptionRate = FertilizationRate } }) ; EntityTemplates.ExtendPlantToIrrigated( template: placedEntity, info: new PlantElementAbsorber.ConsumeInfo() { tag = ElementLoader.FindElementByHash(SimHashes.Magma).tag, massConsumptionRate = IrrigationRate }); placedEntity.AddOrGet <StandardCropPlant>(); var seed = EntityTemplates.CreateAndRegisterSeedForPlant( plant: placedEntity, productionType: SeedProducer.ProductionType.DigOnly, id: SeedId, name: SeedName, desc: SeedDescription, anim: Assets.GetAnim("seed_magmafern"), initialAnim: "object", numberOfSeeds: 1, additionalTags: new List <Tag>() { GameTags.CropSeed }, planterDirection: SingleEntityReceptacle.ReceptacleDirection.Top, replantGroundTag: new Tag(), sortOrder: 2, domesticatedDescription: DomesticatedDescription, collisionShape: EntityTemplates.CollisionShape.CIRCLE, width: 0.2f, height: 0.2f, ignoreDefaultSeedTag: true); var foodInfo = new EdiblesManager.FoodInfo( SeedId, caloriesPerUnit: 0.0f, quality: 0, preserveTemperatue: PreserveTemperature, rotTemperature: RotTemperature, spoilTime: TUNING.FOOD.SPOIL_TIME.SLOW, can_rot: true); EntityTemplates.ExtendEntityToFood( template: seed, foodInfo: foodInfo); EntityTemplates.CreateAndRegisterPreviewForPlant( seed: seed, id: "MagmaFern_preview", anim: Assets.GetAnim("magmafern"), initialAnim: "place", width: 1, height: 1); SoundEventVolumeCache.instance.AddVolume("magmafern", "MagmaFern_grow", TUNING.NOISE_POLLUTION.CREATURES.TIER3); SoundEventVolumeCache.instance.AddVolume("magmafern", "MagmaFern_harvest", TUNING.NOISE_POLLUTION.CREATURES.TIER3); return(placedEntity); }
private void SetAnimator() { GameObject prefab = Assets.GetPrefab(info.id.ToTag()); EdiblesManager.FoodInfo foodInfo = Game.Instance.ediblesManager.GetFoodInfo(info.id); int num = (ElementLoader.FindElementByName(info.id) != null) ? 1 : ((foodInfo == null) ? ((int)info.quantity) : ((int)(info.quantity % foodInfo.CaloriesPerUnit))); if ((UnityEngine.Object)prefab != (UnityEngine.Object)null) { for (int i = 0; i < num; i++) { GameObject gameObject = Util.KInstantiateUI(contentBody, contentBody.transform.parent.gameObject, false); gameObject.SetActive(true); Image component = gameObject.GetComponent <Image>(); Tuple <Sprite, Color> uISprite = Def.GetUISprite(prefab, "ui", false); component.sprite = uISprite.first; component.color = uISprite.second; entryIcons.Add(gameObject); if (num > 1) { int num2 = 0; int num3 = 0; int num4; if (num % 2 == 1) { num4 = Mathf.CeilToInt((float)(num / 2)); num2 = num4 - i; num3 = ((num2 > 0) ? 1 : (-1)); num2 = Mathf.Abs(num2); } else { num4 = num / 2 - 1; if (i <= num4) { num2 = Mathf.Abs(num4 - i); num3 = -1; } else { num2 = Mathf.Abs(num4 + 1 - i); num3 = 1; } } int num5 = 0; if (num % 2 == 0) { num5 = ((i > num4) ? 6 : (-6)); gameObject.transform.SetPosition(gameObject.transform.position += new Vector3((float)num5, 0f, 0f)); } gameObject.transform.localScale = new Vector3(1f - (float)num2 * 0.1f, 1f - (float)num2 * 0.1f, 1f); gameObject.transform.Rotate(0f, 0f, 3f * (float)num2 * (float)num3); gameObject.transform.SetPosition(gameObject.transform.position + new Vector3(25f * (float)num2 * (float)num3, 5f * (float)num2) + new Vector3((float)num5, 0f, 0f)); gameObject.GetComponent <Canvas>().sortingOrder = num - num2; } } } else { GameObject gameObject2 = Util.KInstantiateUI(contentBody, contentBody.transform.parent.gameObject, false); gameObject2.SetActive(true); Image component2 = gameObject2.GetComponent <Image>(); component2.sprite = Def.GetUISpriteFromMultiObjectAnim(ElementLoader.GetElement(info.id.ToTag()).substance.anim, "ui", false, string.Empty); component2.color = ElementLoader.GetElement(info.id.ToTag()).substance.uiColour; entryIcons.Add(gameObject2); } }
private void on_tooltip_consumable_info(IAssignableIdentity minion, GameObject widget_go, ToolTip tooltip) { tooltip.ClearMultiStringTooltip(); ConsumableInfoTableColumn consumableInfoTableColumn = GetWidgetColumn(widget_go) as ConsumableInfoTableColumn; TableRow widgetRow = GetWidgetRow(widget_go); EdiblesManager.FoodInfo foodInfo = consumableInfoTableColumn.consumable_info as EdiblesManager.FoodInfo; int num = 0; if (foodInfo != null) { int num2 = foodInfo.Quality; MinionIdentity minionIdentity = minion as MinionIdentity; if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { AttributeInstance attributeInstance = minionIdentity.GetAttributes().Get(Db.Get().Attributes.FoodExpectation); num2 += Mathf.RoundToInt(attributeInstance.GetTotalValue()); } string effectForFoodQuality = Edible.GetEffectForFoodQuality(num2); Effect effect = Db.Get().effects.Get(effectForFoodQuality); foreach (AttributeModifier selfModifier in effect.SelfModifiers) { if (selfModifier.AttributeId == Db.Get().Attributes.QualityOfLife.Id) { num += Mathf.RoundToInt(selfModifier.Value); } } } switch (widgetRow.rowType) { case TableRow.RowType.Header: tooltip.AddMultiStringTooltip(consumableInfoTableColumn.consumable_info.ConsumableName, null); if (foodInfo != null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_AVAILABLE, GameUtil.GetFormattedCalories(WorldInventory.Instance.GetAmount(consumableInfoTableColumn.consumable_info.ConsumableId.ToTag()) * foodInfo.CaloriesPerUnit, GameUtil.TimeSlice.None, true)), null); tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_QUALITY, GameUtil.AddPositiveSign(num.ToString(), num > 0)), null); tooltip.AddMultiStringTooltip("\n" + foodInfo.Description, null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_AVAILABLE, GameUtil.GetFormattedUnits(WorldInventory.Instance.GetAmount(consumableInfoTableColumn.consumable_info.ConsumableId.ToTag()), GameUtil.TimeSlice.None, true)), null); } break; case TableRow.RowType.Default: if (consumableInfoTableColumn.get_value_action(minion, widget_go) == ResultValues.True) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.NEW_MINIONS_FOOD_PERMISSION_ON, consumableInfoTableColumn.consumable_info.ConsumableName), null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.NEW_MINIONS_FOOD_PERMISSION_OFF, consumableInfoTableColumn.consumable_info.ConsumableName), null); } break; case TableRow.RowType.Minion: case TableRow.RowType.StoredMinon: if (minion != null) { if (consumableInfoTableColumn.get_value_action(minion, widget_go) == ResultValues.True) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_PERMISSION_ON, minion.GetProperName(), consumableInfoTableColumn.consumable_info.ConsumableName), null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_PERMISSION_OFF, minion.GetProperName(), consumableInfoTableColumn.consumable_info.ConsumableName), null); } if (foodInfo != null && (UnityEngine.Object)(minion as MinionIdentity) != (UnityEngine.Object)null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_QUALITY_VS_EXPECTATION, GameUtil.AddPositiveSign(num.ToString(), num > 0), minion.GetProperName()), null); } else if ((UnityEngine.Object)(minion as StoredMinionIdentity) != (UnityEngine.Object)null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.CANNOT_ADJUST_PERMISSIONS, (minion as StoredMinionIdentity).GetStorageReason()), null); } } break; } }