Example #1
0
        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);
        }
Example #2
0
    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);
    }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
 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);
        }
Example #8
0
        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);
        }
Example #9
0
        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));
        }
Example #10
0
        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);
        }
Example #11
0
 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);
 }
Example #12
0
    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();
        }
    }
Example #13
0
        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);
        }
Example #15
0
    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);
    }
Example #16
0
 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();
        }
    }
Example #18
0
    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);
        }
    }
Example #19
0
        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;
        }
    }