コード例 #1
0
        public static bool SetupRequirement(
            InventoryGui __instance,
            Transform elementRoot,
            ItemDrop item,
            int amount,
            Player player)
        {
            var icon       = elementRoot.transform.Find("res_icon").GetComponent <Image>();
            var nameText   = elementRoot.transform.Find("res_name").GetComponent <Text>();
            var amountText = elementRoot.transform.Find("res_amount").GetComponent <Text>();
            var tooltip    = elementRoot.GetComponent <UITooltip>();

            if (item != null)
            {
                icon.gameObject.SetActive(true);
                nameText.gameObject.SetActive(true);
                amountText.gameObject.SetActive(true);
                if (item.m_itemData.IsMagicCraftingMaterial())
                {
                    var rarity = item.m_itemData.GetCraftingMaterialRarity();
                    icon.sprite = item.m_itemData.m_shared.m_icons[EpicLoot.GetRarityIconIndex(rarity)];
                }
                else
                {
                    icon.sprite = item.m_itemData.GetIcon();
                }
                icon.color = Color.white;

                var bgIconTransform = icon.transform.parent.Find("bgIcon");
                if (item.m_itemData.UseMagicBackground())
                {
                    if (bgIconTransform == null)
                    {
                        bgIconTransform      = Object.Instantiate(icon, icon.transform.parent, true).transform;
                        bgIconTransform.name = "bgIcon";
                        bgIconTransform.SetSiblingIndex(icon.transform.GetSiblingIndex());
                    }

                    bgIconTransform.gameObject.SetActive(true);
                    var bgIcon = bgIconTransform.GetComponent <Image>();
                    bgIcon.sprite = EpicLoot.GetMagicItemBgSprite();
                    bgIcon.color  = item.m_itemData.GetRarityColor();
                }
                else if (bgIconTransform != null)
                {
                    bgIconTransform.gameObject.SetActive(false);
                }

                tooltip.m_text = Localization.instance.Localize(item.m_itemData.m_shared.m_name);
                nameText.text  = Localization.instance.Localize(item.m_itemData.m_shared.m_name);
                if (amount <= 0)
                {
                    InventoryGui.HideRequirement(elementRoot);
                    return(false);
                }
                amountText.text  = amount.ToString();
                amountText.color = Color.white;
            }
            return(true);
        }
コード例 #2
0
        public void SetupRequirementList(InventoryGui __instance, Player player, EnchantRecipe recipe, bool canCraft)
        {
            var requirementStates = new[] { Auga.RequirementWireState.Absent, Auga.RequirementWireState.Absent, Auga.RequirementWireState.Absent, Auga.RequirementWireState.Absent };

            var index = 0;
            var cost  = GetRecipeCost(recipe, SelectedRarity);

            foreach (var product in cost)
            {
                if (SetupRequirement(__instance, __instance.m_recipeRequirementList[index].transform, product.Key, product.Value, player, true, out var haveMaterials))
                {
                    requirementStates[index] = haveMaterials ? Auga.RequirementWireState.Have : Auga.RequirementWireState.DontHave;
                    ++index;
                }
            }

            for (; index < __instance.m_recipeRequirementList.Length; ++index)
            {
                InventoryGui.HideRequirement(__instance.m_recipeRequirementList[index].transform);
            }

            if (EpicLoot.HasAuga)
            {
                Auga.API.RequirementsPanel_SetWires(AugaTabData.RequirementsPanelGO, requirementStates, canCraft);
            }
        }
コード例 #3
0
        public override void UpdateRecipe(InventoryGui __instance, Player player, float dt, Image bgImage)
        {
            if (SelectedRecipe >= 0 && SelectedRecipe < Recipes.Count)
            {
                var recipe   = Recipes[SelectedRecipe];
                var itemData = recipe.FromItem;

                __instance.m_recipeIcon.enabled = true;
                __instance.m_recipeIcon.sprite  = itemData.GetIcon();

                __instance.m_recipeName.enabled = true;
                __instance.m_recipeName.text    = Localization.instance.Localize(itemData.GetDecoratedName());

                __instance.m_recipeDecription.enabled = true;
                __instance.m_recipeDecription.text    = Localization.instance.Localize(ItemDrop.ItemData.GetTooltip(itemData, itemData.m_quality, true));
                __instance.m_recipeDecription.text   += "\n\n<color=red>This item will be DESTROYED as a SACRIFICE to the gods.</color>";

                bgImage.color   = recipe.FromItem.GetRarityColor();
                bgImage.enabled = recipe.FromItem.UseMagicBackground();

                __instance.m_itemCraftType.gameObject.SetActive(true);
                __instance.m_itemCraftType.text = "Destroy this item and get:";

                __instance.m_variantButton.gameObject.SetActive(false);

                SetupRequirementList(__instance, player, recipe);

                __instance.m_minStationLevelIcon.gameObject.SetActive(false);

                var isEquipped = recipe.FromItem.m_equiped;
                var canPutProductsInInventory = CanAddItems(player.GetInventory(), recipe.Products, 1);
                __instance.m_craftButton.interactable = canPutProductsInInventory && !isEquipped;
                __instance.m_craftButton.GetComponentInChildren <Text>().text = "Sacrifice";
                __instance.m_craftButton.GetComponent <UITooltip>().m_text    =
                    canPutProductsInInventory ? (isEquipped ? "Item is currently equipped" : "") : Localization.instance.Localize("$inventory_full");
            }
            else
            {
                bgImage.enabled = false;
                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);
                __instance.m_minStationLevelIcon.gameObject.SetActive(false);
                __instance.m_recipeIcon.enabled       = false;
                __instance.m_recipeName.enabled       = false;
                __instance.m_recipeDecription.enabled = false;
                foreach (var req in __instance.m_recipeRequirementList)
                {
                    InventoryGui.HideRequirement(req.transform);
                }

                __instance.m_craftButton.interactable = false;
            }
        }
コード例 #4
0
        public static void SetupRequirementList(InventoryGui __instance, Player player, DisenchantRecipe recipe)
        {
            var index = 0;

            foreach (var product in recipe.Products)
            {
                if (SetupRequirement(__instance, __instance.m_recipeRequirementList[index].transform, product.Key, product.Value, player, false))
                {
                    ++index;
                }
            }

            for (; index < __instance.m_recipeRequirementList.Length; ++index)
            {
                InventoryGui.HideRequirement(__instance.m_recipeRequirementList[index].transform);
            }
        }
コード例 #5
0
        private static bool Prefix(Transform elementRoot, Piece.Requirement req, Player player, bool craft, int quality, ref bool __result)
        {
            Image     component  = elementRoot.transform.Find("res_icon").GetComponent <Image>();
            Text      component2 = elementRoot.transform.Find("res_name").GetComponent <Text>();
            Text      component3 = elementRoot.transform.Find("res_amount").GetComponent <Text>();
            UITooltip component4 = elementRoot.GetComponent <UITooltip>();

            if (req.m_resItem != null)
            {
                component.gameObject.SetActive(true);
                component2.gameObject.SetActive(true);
                component3.gameObject.SetActive(true);
                component.sprite  = req.m_resItem.m_itemData.GetIcon();
                component.color   = Color.white;
                component4.m_text = Localization.instance.Localize(req.m_resItem.m_itemData.m_shared.m_name);
                component2.text   = Localization.instance.Localize(req.m_resItem.m_itemData.m_shared.m_name);
                int num    = player.GetInventory().CountItems(req.m_resItem.m_itemData.m_shared.m_name);
                int amount = req.GetAmount(quality);

                if (amount <= 0)
                {
                    InventoryGui.HideRequirement(elementRoot);
                    __result = false;
                    return(false);
                }
                component3.text = num + "/" + amount.ToString();

                if (num < amount)
                {
                    component3.color = ((Mathf.Sin(Time.time * 10f) > 0f) ? Color.red : Color.white);
                }
                else
                {
                    component3.color = Color.white;
                }

                component3.fontSize = 14;
                if (component3.text.Length > 5)
                {
                    component3.fontSize -= component3.text.Length - 5;
                }
            }

            __result = true;
            return(false);
        }
コード例 #6
0
        static bool Prefix(ref bool __result, Transform elementRoot, Piece.Requirement req, Player player, bool craft, int quality)
        {
            Image     icon       = elementRoot.transform.Find("res_icon").GetComponent <Image>();
            Text      nameText   = elementRoot.transform.Find("res_name").GetComponent <Text>();
            Text      amountText = elementRoot.transform.Find("res_amount").GetComponent <Text>();
            UITooltip tooltip    = elementRoot.GetComponent <UITooltip>();

            if (req.m_resItem != null)
            {
                icon.gameObject.SetActive(true);
                nameText.gameObject.SetActive(true);
                amountText.gameObject.SetActive(true);
                icon.sprite    = req.m_resItem.m_itemData.GetIcon();
                icon.color     = Color.white;
                tooltip.m_text = Localization.instance.Localize(req.m_resItem.m_itemData.m_shared.m_name);
                nameText.text  = Localization.instance.Localize(req.m_resItem.m_itemData.m_shared.m_name);
                int num    = ImprovedBuildHud.GetAvailableItems(req.m_resItem.m_itemData.m_shared.m_name);
                int amount = req.GetAmount(quality);
                if (amount <= 0)
                {
                    InventoryGui.HideRequirement(elementRoot);
                    __result = false;
                    return(false);
                }

                amountText.supportRichText    = true;
                amountText.horizontalOverflow = HorizontalWrapMode.Overflow;
                var inventoryAmount = string.Format(ImprovedBuildHudConfig.InventoryAmountFormat.Value, num);
                if (!string.IsNullOrEmpty(ImprovedBuildHudConfig.InventoryAmountColor.Value))
                {
                    inventoryAmount = $"<color={ImprovedBuildHudConfig.InventoryAmountColor.Value}>{inventoryAmount}</color>";
                }
                amountText.text = $"{amount} {inventoryAmount}";

                if (num < amount)
                {
                    amountText.color = (double)Mathf.Sin(Time.time * 10f) > 0.0 ? Color.red : Color.white;
                }
                else
                {
                    amountText.color = Color.white;
                }
            }
            __result = true;
            return(false);
        }
コード例 #7
0
        public void SetupRequirementList(InventoryGui __instance, Player player, AugmentRecipe recipe)
        {
            var index = 0;
            var cost  = GetRecipeCost(recipe);

            foreach (var product in cost)
            {
                if (SetupRequirement(__instance, __instance.m_recipeRequirementList[index].transform, product.Key, product.Value, player, true))
                {
                    ++index;
                }
            }

            for (; index < __instance.m_recipeRequirementList.Length; ++index)
            {
                InventoryGui.HideRequirement(__instance.m_recipeRequirementList[index].transform);
            }
        }
コード例 #8
0
        public override void UpdateRecipe(InventoryGui __instance, Player player, float dt, Image bgImage)
        {
            if (SelectedRecipe >= 0 && SelectedRecipe < Recipes.Count)
            {
                var recipe          = Recipes[SelectedRecipe];
                var itemData        = recipe.FromItem;
                var magicItem       = itemData.GetMagicItem();
                var rarity          = itemData.GetRarity();
                var rarityColorARGB = EpicLoot.GetRarityColorARGB(rarity);

                __instance.m_recipeIcon.enabled = true;
                __instance.m_recipeIcon.sprite  = itemData.GetIcon();

                __instance.m_recipeName.enabled = true;
                __instance.m_recipeName.text    = Localization.instance.Localize(itemData.GetDecoratedName());

                __instance.m_recipeDecription.enabled = true;

                __instance.m_recipeDecription.text = "Replace one magical effect. Once an effect has been augmented, the others are locked.";

                if (magicItem.HasBeenAugmented())
                {
                    recipe.EffectIndex = magicItem.AugmentedEffectIndex;
                }
                GenerateAugmentSelectors(recipe, __instance);

                bgImage.color   = rarityColorARGB;
                bgImage.enabled = true;

                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);

                SetupRequirementList(__instance, player, recipe);

                __instance.m_minStationLevelIcon.gameObject.SetActive(false);

                var canCraft                = Player.m_localPlayer.HaveRequirements(GetRecipeRequirementArray(recipe), false, 1);
                var hasSelectedEffect       = recipe.EffectIndex >= 0;
                var hasAnyAvailableEnchants = GetAvailableAugments(recipe, recipe.FromItem, recipe.FromItem.GetMagicItem(), recipe.FromItem.GetRarity()).Count > 0;
                __instance.m_craftButton.interactable = canCraft && hasSelectedEffect && hasAnyAvailableEnchants;
                __instance.m_craftButton.GetComponentInChildren <Text>().text = "Augment";
                __instance.m_craftButton.GetComponent <UITooltip>().m_text    =
                    hasSelectedEffect ?
                    (canCraft ?
                     (hasAnyAvailableEnchants ?
                      ""
                                : "No available effects")
                            : Localization.instance.Localize("$msg_missingrequirement"))
                        : "Select an effect to augment";
            }
            else
            {
                bgImage.enabled = false;
                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);
                __instance.m_minStationLevelIcon.gameObject.SetActive(false);
                __instance.m_recipeIcon.enabled       = false;
                __instance.m_recipeName.enabled       = false;
                __instance.m_recipeDecription.enabled = false;
                foreach (var toggle in EffectSelectors)
                {
                    toggle.gameObject.SetActive(false);
                }
                foreach (var req in __instance.m_recipeRequirementList)
                {
                    InventoryGui.HideRequirement(req.transform);
                }

                __instance.m_craftButton.interactable = false;
            }
        }
コード例 #9
0
        private static bool Prefix(Transform elementRoot, Piece.Requirement req, Player player, bool craft, int quality, ref bool __result)
        {
            if (!Configuration.Current.Hud.IsEnabled && !Configuration.Current.CraftFromChest.IsEnabled || !Configuration.Current.Hud.showRequiredItems && !Configuration.Current.CraftFromChest.IsEnabled)
            {
                return(true);
            }

            Image     component  = elementRoot.transform.Find("res_icon").GetComponent <Image>();
            Text      component2 = elementRoot.transform.Find("res_name").GetComponent <Text>();
            Text      component3 = elementRoot.transform.Find("res_amount").GetComponent <Text>();
            UITooltip component4 = elementRoot.GetComponent <UITooltip>();

            if (req.m_resItem != null)
            {
                component.gameObject.SetActive(true);
                component2.gameObject.SetActive(true);
                component3.gameObject.SetActive(true);
                component.sprite  = req.m_resItem.m_itemData.GetIcon();
                component.color   = Color.white;
                component4.m_text = Localization.instance.Localize(req.m_resItem.m_itemData.m_shared.m_name);
                component2.text   = Localization.instance.Localize(req.m_resItem.m_itemData.m_shared.m_name);
                int num    = player.GetInventory().CountItems(req.m_resItem.m_itemData.m_shared.m_name);
                int amount = req.GetAmount(quality);

                if (amount <= 0)
                {
                    InventoryGui.HideRequirement(elementRoot);
                    __result = false;
                    return(false);
                }

                if (Configuration.Current.CraftFromChest.IsEnabled)
                {
                    Stopwatch delta;

                    GameObject pos = player.GetCurrentCraftingStation()?.gameObject;
                    if (!pos || !Configuration.Current.CraftFromChest.checkFromWorkbench)
                    {
                        pos   = player.gameObject;
                        delta = Inventory_NearbyChests_Cache.delta;
                    }
                    else
                    {
                        delta = GameObjectAssistant.GetStopwatch(pos);
                    }

                    int lookupInterval = Helper.Clamp(Configuration.Current.CraftFromChest.lookupInterval, 1, 10) * 1000;
                    if (!delta.IsRunning || delta.ElapsedMilliseconds > lookupInterval)
                    {
                        Inventory_NearbyChests_Cache.chests = InventoryAssistant.GetNearbyChests(pos, Helper.Clamp(Configuration.Current.CraftFromChest.range, 1, 50));
                        delta.Restart();
                    }
                    num += InventoryAssistant.GetItemAmountInItemList(InventoryAssistant.GetNearbyChestItemsByContainerList(Inventory_NearbyChests_Cache.chests), req.m_resItem.m_itemData);
                }

                component3.text = num + "/" + amount.ToString();

                if (num < amount)
                {
                    component3.color = ((Mathf.Sin(Time.time * 10f) > 0f) ? Color.red : Color.white);
                }
                else
                {
                    component3.color = Color.white;
                }

                component3.fontSize = 14;
                if (component3.text.Length > 5)
                {
                    component3.fontSize -= component3.text.Length - 5;
                }
            }

            __result = true;
            return(false);
        }
コード例 #10
0
        public override void UpdateRecipe(InventoryGui __instance, Player player, float dt, Image bgImage)
        {
            __instance.m_craftButton.GetComponentInChildren <Text>().text = Localization.instance.Localize("$mod_epicloot_sacrifice");

            if (SelectedRecipe >= 0 && SelectedRecipe < Recipes.Count)
            {
                var recipe   = Recipes[SelectedRecipe];
                var itemData = recipe.FromItem;

                var canPutProductsInInventory = CanAddItems(player.GetInventory(), recipe.Products, 1);
                var isEquipped = recipe.FromItem.m_equiped;
                var canCraft   = canPutProductsInInventory && !isEquipped;
                var tooltip    = Localization.instance.Localize(canPutProductsInInventory ? (isEquipped ? "$mod_epicloot_sacrifice_equipped" : "") : "$inventory_full");

                SetupRequirementList(__instance, player, recipe);

                __instance.m_craftButton.interactable = canCraft;
                __instance.m_craftButton.GetComponent <UITooltip>().m_text = tooltip;

                var isStack = itemData.m_stack > 1;
                DisenchantAllButton.interactable = isStack;
                DisenchantAllButton.gameObject.SetActive(__instance.m_craftButton.gameObject.activeSelf);

                bgImage.color   = recipe.FromItem.GetRarityColor();
                bgImage.enabled = recipe.FromItem.UseMagicBackground();

                if (EpicLoot.HasAuga)
                {
                    AugaTabData.ItemInfoGO.SetActive(true);
                    AugaTabData.RequirementsPanelGO.SetActive(true);

                    Auga.API.ComplexTooltip_SetItem(AugaTabData.ItemInfoGO, itemData, itemData.m_quality, itemData.m_variant);
                    Auga.API.ComplexTooltip_SetTopic(AugaTabData.ItemInfoGO, Localization.instance.Localize(itemData.GetDecoratedName()));
                    __instance.m_itemCraftType.text = Localization.instance.Localize($"\n\n<color={Auga.API.RedText}>$mod_epicloot_sacrifice_warning</color>");

                    var requirementStates = new[] { Auga.RequirementWireState.Absent, Auga.RequirementWireState.Absent, Auga.RequirementWireState.Absent, Auga.RequirementWireState.Absent };
                    for (var i = 0; i < recipe.Products.Count; ++i)
                    {
                        requirementStates[i] = Auga.RequirementWireState.Have;
                    }

                    Auga.API.RequirementsPanel_SetWires(AugaTabData.RequirementsPanelGO, requirementStates, canCraft);
                }
                else
                {
                    __instance.m_recipeIcon.enabled = true;
                    __instance.m_recipeIcon.sprite  = itemData.GetIcon();

                    __instance.m_recipeName.enabled = true;
                    __instance.m_recipeName.text    = Localization.instance.Localize(itemData.GetDecoratedName());

                    __instance.m_recipeDecription.enabled = true;
                    __instance.m_recipeDecription.text    = Localization.instance.Localize(ItemDrop.ItemData.GetTooltip(itemData, itemData.m_quality, true));
                    __instance.m_recipeDecription.text   += Localization.instance.Localize("\n\n<color=red>$mod_epicloot_sacrifice_warning</color>");

                    __instance.m_itemCraftType.gameObject.SetActive(true);
                    __instance.m_itemCraftType.text = Localization.instance.Localize("$mod_epicloot_sacrifice_explanation");

                    __instance.m_variantButton.gameObject.SetActive(false);

                    __instance.m_minStationLevelIcon.gameObject.SetActive(false);
                }
            }
            else
            {
                if (EpicLoot.HasAuga)
                {
                    AugaTabData.ItemInfoGO.SetActive(false);
                    AugaTabData.RequirementsPanelGO.SetActive(false);
                }

                bgImage.enabled = false;
                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);
                __instance.m_minStationLevelIcon.gameObject.SetActive(false);
                __instance.m_recipeIcon.enabled       = false;
                __instance.m_recipeName.enabled       = false;
                __instance.m_recipeDecription.enabled = false;
                foreach (var req in __instance.m_recipeRequirementList)
                {
                    InventoryGui.HideRequirement(req.transform);
                }

                __instance.m_craftButton.interactable = false;
                DisenchantAllButton.interactable      = false;
            }
        }
コード例 #11
0
        public override void UpdateRecipe(InventoryGui __instance, Player player, float dt, Image bgImage)
        {
            __instance.m_craftButton.GetComponentInChildren <Text>().text = Localization.instance.Localize("$mod_epicloot_enchant");

            if (SelectedRecipe >= 0 && SelectedRecipe < Recipes.Count)
            {
                var recipe          = Recipes[SelectedRecipe];
                var itemData        = recipe.FromItem;
                var rarityColor     = EpicLoot.GetRarityColor(SelectedRarity);
                var rarityColorARGB = EpicLoot.GetRarityColorARGB(SelectedRarity);

                var isCrafting = __instance.m_craftTimer >= 0.0f;
                for (var index = 0; index < RarityButtons.Count; index++)
                {
                    var rarityButton     = RarityButtons[index];
                    var rarity           = (ItemRarity)index;
                    var canEnchantRarity = CanEnchantRarity(player, rarity);
                    rarityButton.gameObject.SetActive(!isCrafting && canEnchantRarity);
                    rarityButton.interactable = SelectedRarity != rarity;

                    if (!EpicLoot.HasAuga)
                    {
                        var outline = rarityButton.transform.Find("EnchantOutline").GetComponent <Image>();
                        outline.enabled = !rarityButton.interactable;
                    }
                }

                bgImage.color   = rarityColorARGB;
                bgImage.enabled = true;

                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);

                __instance.m_minStationLevelIcon.gameObject.SetActive(false);

                var canCraft = Player.m_localPlayer.HaveRequirements(GetRecipeRequirementArray(recipe, SelectedRarity), false, 1);
                __instance.m_craftButton.interactable = canCraft;
                __instance.m_craftButton.GetComponent <UITooltip>().m_text = canCraft ? "" : Localization.instance.Localize("$msg_missingrequirement");

                SetupRequirementList(__instance, player, recipe, canCraft);

                if (EpicLoot.HasAuga)
                {
                    AugaTabData.ItemInfoGO.SetActive(true);
                    AugaTabData.RequirementsPanelGO.SetActive(true);

                    Auga.API.ComplexTooltip_ClearTextBoxes(AugaTabData.ItemInfoGO);
                    Auga.API.ComplexTooltip_SetItemNoTextBoxes(AugaTabData.ItemInfoGO, itemData, itemData.m_quality, itemData.m_variant);
                    Auga.API.ComplexTooltip_SetTopic(AugaTabData.ItemInfoGO, Localization.instance.Localize(itemData.GetDecoratedName()));
                    __instance.m_itemCraftType.text = "";

                    var textbox = Auga.API.ComplexTooltip_AddTwoColumnTextBox(AugaTabData.ItemInfoGO);
                    Auga.API.TooltipTextBox_AddLine(textbox, GenerateEnchantTooltip(recipe));
                }
                else
                {
                    __instance.m_recipeIcon.enabled = true;
                    __instance.m_recipeIcon.sprite  = itemData.GetIcon();

                    __instance.m_recipeName.enabled = true;
                    __instance.m_recipeName.text    = Localization.instance.Localize(itemData.GetDecoratedName(rarityColor));

                    __instance.m_recipeDecription.enabled = true;
                    __instance.m_recipeDecription.text    = Localization.instance.Localize(GenerateEnchantTooltip(recipe));
                }
            }
            else
            {
                if (EpicLoot.HasAuga)
                {
                    AugaTabData.ItemInfoGO.SetActive(false);
                    AugaTabData.RequirementsPanelGO.SetActive(false);
                }

                bgImage.enabled = false;
                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);
                __instance.m_minStationLevelIcon.gameObject.SetActive(false);
                __instance.m_recipeIcon.enabled       = false;
                __instance.m_recipeName.enabled       = false;
                __instance.m_recipeDecription.enabled = false;
                foreach (var rarityButton in RarityButtons)
                {
                    rarityButton.gameObject.SetActive(false);
                }
                foreach (var req in __instance.m_recipeRequirementList)
                {
                    InventoryGui.HideRequirement(req.transform);
                }

                __instance.m_craftButton.interactable = false;
            }
        }
コード例 #12
0
        public override void UpdateRecipe(InventoryGui __instance, Player player, float dt, Image bgImage)
        {
            if (SelectedRecipe >= 0 && SelectedRecipe < Recipes.Count)
            {
                var recipe          = Recipes[SelectedRecipe];
                var itemData        = recipe.FromItem;
                var rarityColor     = EpicLoot.GetRarityColor(SelectedRarity);
                var rarityColorARGB = EpicLoot.GetRarityColorARGB(SelectedRarity);

                for (var index = 0; index < RarityButtons.Count; index++)
                {
                    var rarityButton     = RarityButtons[index];
                    var rarity           = (ItemRarity)index;
                    var canEnchantRarity = CanEnchantRarity(player, rarity);
                    rarityButton.gameObject.SetActive(canEnchantRarity);
                    rarityButton.interactable = SelectedRarity != rarity;

                    var outline = rarityButton.transform.Find("EnchantOutline").GetComponent <Image>();
                    outline.enabled = !rarityButton.interactable;
                }

                __instance.m_recipeIcon.enabled = true;
                __instance.m_recipeIcon.sprite  = itemData.GetIcon();

                __instance.m_recipeName.enabled = true;
                __instance.m_recipeName.text    = Localization.instance.Localize(itemData.GetDecoratedName(rarityColor));

                __instance.m_recipeDecription.enabled = true;
                __instance.m_recipeDecription.text    = Localization.instance.Localize(GenerateEnchantTooltip(recipe));

                bgImage.color   = rarityColorARGB;
                bgImage.enabled = true;

                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);

                SetupRequirementList(__instance, player, recipe);

                __instance.m_minStationLevelIcon.gameObject.SetActive(false);

                var canCraft = Player.m_localPlayer.HaveRequirements(GetRecipeRequirementArray(recipe, SelectedRarity), false, 1);
                __instance.m_craftButton.interactable = canCraft;
                __instance.m_craftButton.GetComponentInChildren <Text>().text = "Enchant";
                __instance.m_craftButton.GetComponent <UITooltip>().m_text    = canCraft ? "" : Localization.instance.Localize("$msg_missingrequirement");
            }
            else
            {
                bgImage.enabled = false;
                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);
                __instance.m_minStationLevelIcon.gameObject.SetActive(false);
                __instance.m_recipeIcon.enabled       = false;
                __instance.m_recipeName.enabled       = false;
                __instance.m_recipeDecription.enabled = false;
                foreach (var rarityButton in RarityButtons)
                {
                    rarityButton.gameObject.SetActive(false);
                }
                foreach (var req in __instance.m_recipeRequirementList)
                {
                    InventoryGui.HideRequirement(req.transform);
                }

                __instance.m_craftButton.interactable = false;
            }
        }
コード例 #13
0
        public static bool SetupRequirement(
            InventoryGui __instance,
            Transform elementRoot,
            ItemDrop item,
            int amount,
            Player player,
            bool showOutOfMaterials,
            out bool haveMaterials)
        {
            haveMaterials = false;
            var icon       = elementRoot.transform.Find("res_icon").GetComponent <Image>();
            var nameText   = elementRoot.transform.Find("res_name").GetComponent <Text>();
            var amountText = elementRoot.transform.Find("res_amount").GetComponent <Text>();
            var tooltip    = elementRoot.GetComponent <UITooltip>();

            if (item != null)
            {
                icon.gameObject.SetActive(true);
                nameText.gameObject.SetActive(true);
                amountText.gameObject.SetActive(true);
                if (item.m_itemData.IsMagicCraftingMaterial())
                {
                    var rarity = item.m_itemData.GetCraftingMaterialRarity();
                    icon.sprite = item.m_itemData.m_shared.m_icons[EpicLoot.GetRarityIconIndex(rarity)];
                }
                else
                {
                    icon.sprite = item.m_itemData.GetIcon();
                }
                icon.color = Color.white;

                var bgIconTransform = (RectTransform)icon.transform.parent.Find("bgIcon");
                if (item.m_itemData.UseMagicBackground())
                {
                    if (bgIconTransform == null)
                    {
                        bgIconTransform      = (RectTransform)Object.Instantiate(icon, icon.transform.parent, true).transform;
                        bgIconTransform.name = "bgIcon";
                        bgIconTransform.SetSiblingIndex(icon.transform.GetSiblingIndex());
                        bgIconTransform.anchorMin        = Vector2.zero;
                        bgIconTransform.anchorMax        = new Vector2(1, 1);
                        bgIconTransform.sizeDelta        = Vector2.zero;
                        bgIconTransform.pivot            = new Vector2(0.5f, 0.5f);
                        bgIconTransform.anchoredPosition = Vector2.zero;
                    }

                    bgIconTransform.gameObject.SetActive(true);
                    var bgIcon = bgIconTransform.GetComponent <Image>();
                    bgIcon.sprite = EpicLoot.GetMagicItemBgSprite();
                    bgIcon.color  = item.m_itemData.GetRarityColor();
                }
                else if (bgIconTransform != null)
                {
                    bgIconTransform.gameObject.SetActive(false);
                }

                tooltip.m_text = Localization.instance.Localize(item.m_itemData.m_shared.m_name);
                nameText.text  = Localization.instance.Localize(item.m_itemData.m_shared.m_name);
                if (amount <= 0)
                {
                    InventoryGui.HideRequirement(elementRoot);
                    return(false);
                }
                amountText.text = amount.ToString();

                haveMaterials = player.HaveRequirements(new [] { new Piece.Requirement()
                                                                 {
                                                                     m_resItem = item, m_amount = amount
                                                                 } }, false, 1);
                if (showOutOfMaterials && !haveMaterials)
                {
                    amountText.color = Mathf.Sin(Time.time * 10.0f) > 0.0f ? Color.red : Color.white;
                }
                else
                {
                    amountText.color = Color.white;
                }
            }
            else
            {
                var bgIconTransform = icon.transform.parent.Find("bgIcon");
                if (bgIconTransform != null)
                {
                    bgIconTransform.gameObject.SetActive(false);
                }
            }
            return(true);
        }
コード例 #14
0
        public override void UpdateRecipe(InventoryGui __instance, Player player, float dt, Image bgImage)
        {
            __instance.m_craftButton.GetComponentInChildren <Text>().text = Localization.instance.Localize("$mod_epicloot_augment");

            if (SelectedRecipe >= 0 && SelectedRecipe < Recipes.Count)
            {
                var recipe          = Recipes[SelectedRecipe];
                var itemData        = recipe.FromItem;
                var rarity          = itemData.GetRarity();
                var rarityColorARGB = EpicLoot.GetRarityColorARGB(rarity);

                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);

                __instance.m_minStationLevelIcon.gameObject.SetActive(false);

                var canCraft                = Player.m_localPlayer.HaveRequirements(GetRecipeRequirementArray(recipe), false, 1) || player.NoCostCheat();
                var hasSelectedEffect       = recipe.EffectIndex >= 0;
                var hasAnyAvailableEnchants = GetAvailableAugments(recipe, recipe.FromItem, recipe.FromItem.GetMagicItem(), recipe.FromItem.GetRarity()).Count > 0;
                __instance.m_craftButton.interactable = canCraft && hasSelectedEffect && hasAnyAvailableEnchants;
                __instance.m_craftButton.GetComponent <UITooltip>().m_text =
                    hasSelectedEffect ?
                    (canCraft ?
                     (hasAnyAvailableEnchants ?
                      ""
                                : Localization.instance.Localize("$mod_epicloot_augment_noeffects"))
                            : Localization.instance.Localize("$msg_missingrequirement"))
                        : Localization.instance.Localize("$mod_epicloot_augment_selecteffect");

                SetupRequirementList(__instance, player, recipe, canCraft);

                if (EpicLoot.HasAuga)
                {
                    AugaTabData.ItemInfoGO.SetActive(true);
                    AugaTabData.RequirementsPanelGO.SetActive(true);

                    EpicLoot.AugaTooltipNoTextBoxes = true;
                    Auga.API.ComplexTooltip_SetItemNoTextBoxes(AugaTabData.ItemInfoGO, itemData, itemData.m_quality, itemData.m_variant);
                    Auga.API.ComplexTooltip_SetTopic(AugaTabData.ItemInfoGO, Localization.instance.Localize(itemData.GetDecoratedName()));
                    Auga.API.ComplexTooltip_SetDescription(AugaTabData.ItemInfoGO, Localization.instance.Localize("$mod_epicloot_augment_explain"));
                    EpicLoot.AugaTooltipNoTextBoxes = false;
                    __instance.m_itemCraftType.text = "";
                }
                else
                {
                    __instance.m_recipeIcon.enabled = true;
                    __instance.m_recipeIcon.sprite  = itemData.GetIcon();

                    __instance.m_recipeName.enabled = true;
                    __instance.m_recipeName.text    = Localization.instance.Localize(itemData.GetDecoratedName());

                    __instance.m_recipeDecription.enabled = true;
                    __instance.m_recipeDecription.text    = Localization.instance.Localize("$mod_epicloot_augment_explain");
                }

                bgImage.color   = rarityColorARGB;
                bgImage.enabled = true;

                GenerateAugmentSelectors(recipe, __instance);
            }
            else
            {
                if (EpicLoot.HasAuga)
                {
                    AugaTabData.ItemInfoGO.SetActive(false);
                    AugaTabData.RequirementsPanelGO.SetActive(false);
                }

                bgImage.enabled = false;
                __instance.m_itemCraftType.gameObject.SetActive(false);
                __instance.m_variantButton.gameObject.SetActive(false);
                __instance.m_minStationLevelIcon.gameObject.SetActive(false);
                __instance.m_recipeIcon.enabled       = false;
                __instance.m_recipeName.enabled       = false;
                __instance.m_recipeDecription.enabled = false;

                if (!EpicLoot.HasAuga)
                {
                    foreach (var toggle in EffectSelectors)
                    {
                        toggle.gameObject.SetActive(false);
                    }
                }

                foreach (var req in __instance.m_recipeRequirementList)
                {
                    InventoryGui.HideRequirement(req.transform);
                }

                __instance.m_craftButton.interactable = false;
            }
        }