示例#1
0
        public static void UpdateColor(InventoryGrid.Element element, float durability)
        {
            element.m_durability.SetValue(durability);
            // Might be to update items colorbar? This is from original code.
            element.m_durability.ResetColor();
            // Between 1f - 0f
            switch (durability)
            {
            case float n when(n >= 0.75f):
                // Color green
                element.m_durability.SetColor(activeColor[0]);

                break;

            case float n when(n >= 0.50f):
                // Color yellow
                element.m_durability.SetColor(activeColor[1]);

                break;

            case float n when(n >= 0.25f):
                // Color Orange
                element.m_durability.SetColor(activeColor[2]);

                break;

            case float n when(n >= 0f):
                // Color Red
                element.m_durability.SetColor(activeColor[3]);

                break;
            }
        }
示例#2
0
        public static void Draw(InventoryGrid.Element element, int quality_lvl)
        {
            string stars;

            if (quality_lvl >= 5)                                                      // Fix for modded items...
            {
                stars = $"<color=white><size=10>{quality_lvl}</size>x </color>\u2605"; // Could be ★x5 or ★x99999
                element.m_quality.alignment = TextAnchor.MiddleRight;
                element.m_quality.rectTransform.sizeDelta = new Vector2(60f, 20f);
                if (quality_lvl > 99998)
                {
                    stars = $"<color=white><size=10>MODDED</size> </color>\u2605";              // For them wack guys
                }
            }
            else
            {
                stars = Helpers.Repeat("\u2605", quality_lvl);
                element.m_quality.rectTransform.sizeDelta = new Vector2(quality_lvl * 10f, 20f);
            }

            UnityEngine.Object.Destroy(element.m_quality.GetComponent <Outline>());
            element.m_quality.text  = $"<size=12>{stars}</size>";
            element.m_quality.color = starColor;

            // Parent size = 64x64, quality size = 20x20, top-right (0,0) -> (-4f,-10f)
            element.m_quality.rectTransform.anchoredPosition = new Vector2(-4f, -6f);

            // TODO: Spawned items might brake this, as they could have 99 stars.
            // Possible fix, after x amount switch to: ★x[amount] = ★x99
        }
示例#3
0
 public static void Postfix(InventoryGrid __instance)
 {
     foreach (ItemDrop.ItemData item in __instance.m_inventory.m_inventory)
     {
         InventoryGrid.Element element = __instance.GetElement(item.m_gridPos.x, item.m_gridPos.y, __instance.m_width);
         if (element != null && item.HasMagicEffect(MagicEffectType.Indestructible))
         {
             element.m_durability.gameObject.SetActive(false);
         }
     }
 }
        private static bool Prefix(InventoryGrid __instance, ref InventoryGrid.Element __result, int x, int y, int width)
        {
            var index = y * width + x;

            if (index < 0 || index >= __instance.m_elements.Count)
            {
                EquipmentAndQuickSlots.LogError($"Tried to get element for item ({x}, {y}) in inventory ({__instance.m_inventory.m_name}) but that element is outside the bounds!");
                __result = null;
            }
            else
            {
                __result = __instance.m_elements[index];
            }

            return(false);
        }
示例#5
0
        private static void PatchInventory(ref InventoryGrid __instance, ref Player player, ItemDrop.ItemData dragItem)
        {
            if (!Main.showDurabilityColor.Value && !Main.showItemStars.Value)
            {
                return;
            }

            foreach (ItemDrop.ItemData itemData in __instance.m_inventory.GetAllItems())
            {
                InventoryGrid.Element element = __instance.GetElement(itemData.m_gridPos.x, itemData.m_gridPos.y, __instance.m_inventory.GetWidth());
                if (element.m_icon.transform.localScale == Vector3.one)
                {
                    element.m_icon.transform.localScale *= Mathf.Max(Main.iconScaleSize.Value, 0.1f);
                }
                if (itemData.m_shared.m_useDurability)
                {
                    if (itemData.m_durability <= 0f) // Item has no durability, original code should do this
                    {
                        //element.m_durability.SetValue(1f);
                        //element.m_durability.SetColor((Mathf.Sin(Time.time * 10f) > 0f) ? Color.red : new Color(0f, 0f, 0f, 0f));
                    }
                    else // Item has durability left
                    {
                        if (Main.showDurabilityColor.Value)
                        {
                            Patches.DurabilityBar.UpdateColor(element, itemData.GetDurabilityPercentage());
                        }
                    }
                }
                // Change item quality info
                if (itemData.m_shared.m_maxQuality > 1)
                {
                    if (Main.showItemStars.Value)
                    {
                        Patches.Stars.Draw(element, itemData.m_quality);
                    }
                }
            }
        }
示例#6
0
    // Token: 0x0600052C RID: 1324 RVA: 0x0002B704 File Offset: 0x00029904
    private void UpdateGui(Player player, ItemDrop.ItemData dragItem)
    {
        RectTransform rectTransform = base.transform as RectTransform;
        int           width         = this.m_inventory.GetWidth();
        int           height        = this.m_inventory.GetHeight();

        if (this.m_selected.x >= width - 1)
        {
            this.m_selected.x = width - 1;
        }
        if (this.m_selected.y >= height - 1)
        {
            this.m_selected.y = height - 1;
        }
        if (this.m_width != width || this.m_height != height)
        {
            this.m_width  = width;
            this.m_height = height;
            foreach (InventoryGrid.Element element in this.m_elements)
            {
                UnityEngine.Object.Destroy(element.m_go);
            }
            this.m_elements.Clear();
            Vector2 widgetSize = this.GetWidgetSize();
            Vector2 a          = new Vector2(rectTransform.rect.width / 2f, 0f) - new Vector2(widgetSize.x, 0f) * 0.5f;
            for (int i = 0; i < height; i++)
            {
                for (int j = 0; j < width; j++)
                {
                    Vector2    b          = new Vector3((float)j * this.m_elementSpace, (float)i * -this.m_elementSpace);
                    GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(this.m_elementPrefab, this.m_gridRoot);
                    (gameObject.transform as RectTransform).anchoredPosition = a + b;
                    UIInputHandler componentInChildren = gameObject.GetComponentInChildren <UIInputHandler>();
                    componentInChildren.m_onRightDown = (Action <UIInputHandler>)Delegate.Combine(componentInChildren.m_onRightDown, new Action <UIInputHandler>(this.OnRightClick));
                    componentInChildren.m_onLeftDown  = (Action <UIInputHandler>)Delegate.Combine(componentInChildren.m_onLeftDown, new Action <UIInputHandler>(this.OnLeftClick));
                    Text component = gameObject.transform.Find("binding").GetComponent <Text>();
                    if (player && i == 0)
                    {
                        component.text = (j + 1).ToString();
                    }
                    else
                    {
                        component.enabled = false;
                    }
                    InventoryGrid.Element element2 = new InventoryGrid.Element();
                    element2.m_pos        = new Vector2i(j, i);
                    element2.m_go         = gameObject;
                    element2.m_icon       = gameObject.transform.Find("icon").GetComponent <Image>();
                    element2.m_amount     = gameObject.transform.Find("amount").GetComponent <Text>();
                    element2.m_quality    = gameObject.transform.Find("quality").GetComponent <Text>();
                    element2.m_equiped    = gameObject.transform.Find("equiped").GetComponent <Image>();
                    element2.m_queued     = gameObject.transform.Find("queued").GetComponent <Image>();
                    element2.m_noteleport = gameObject.transform.Find("noteleport").GetComponent <Image>();
                    element2.m_selected   = gameObject.transform.Find("selected").gameObject;
                    element2.m_tooltip    = gameObject.GetComponent <UITooltip>();
                    element2.m_durability = gameObject.transform.Find("durability").GetComponent <GuiBar>();
                    this.m_elements.Add(element2);
                }
            }
        }
        foreach (InventoryGrid.Element element3 in this.m_elements)
        {
            element3.m_used = false;
        }
        bool flag = this.m_uiGroup.IsActive() && ZInput.IsGamepadActive();

        foreach (ItemDrop.ItemData itemData in this.m_inventory.GetAllItems())
        {
            InventoryGrid.Element element4 = this.GetElement(itemData.m_gridPos.x, itemData.m_gridPos.y, width);
            element4.m_used         = true;
            element4.m_icon.enabled = true;
            element4.m_icon.sprite  = itemData.GetIcon();
            element4.m_icon.color   = ((itemData == dragItem) ? Color.grey : Color.white);
            element4.m_durability.gameObject.SetActive(itemData.m_shared.m_useDurability);
            if (itemData.m_shared.m_useDurability)
            {
                if (itemData.m_durability <= 0f)
                {
                    element4.m_durability.SetValue(1f);
                    element4.m_durability.SetColor((Mathf.Sin(Time.time * 10f) > 0f) ? Color.red : new Color(0f, 0f, 0f, 0f));
                }
                else
                {
                    element4.m_durability.SetValue(itemData.GetDurabilityPercentage());
                    element4.m_durability.ResetColor();
                }
            }
            element4.m_equiped.enabled    = (player && itemData.m_equiped);
            element4.m_queued.enabled     = (player && player.IsItemQueued(itemData));
            element4.m_noteleport.enabled = !itemData.m_shared.m_teleportable;
            if (dragItem == null)
            {
                this.CreateItemTooltip(itemData, element4.m_tooltip);
            }
            element4.m_quality.enabled = (itemData.m_shared.m_maxQuality > 1);
            if (itemData.m_shared.m_maxQuality > 1)
            {
                element4.m_quality.text = itemData.m_quality.ToString();
            }
            element4.m_amount.enabled = (itemData.m_shared.m_maxStackSize > 1);
            if (itemData.m_shared.m_maxStackSize > 1)
            {
                element4.m_amount.text = itemData.m_stack.ToString() + "/" + itemData.m_shared.m_maxStackSize.ToString();
            }
        }
        foreach (InventoryGrid.Element element5 in this.m_elements)
        {
            element5.m_selected.SetActive(flag && element5.m_pos == this.m_selected);
            if (!element5.m_used)
            {
                element5.m_durability.gameObject.SetActive(false);
                element5.m_icon.enabled       = false;
                element5.m_amount.enabled     = false;
                element5.m_quality.enabled    = false;
                element5.m_equiped.enabled    = false;
                element5.m_queued.enabled     = false;
                element5.m_noteleport.enabled = false;
                element5.m_tooltip.m_text     = "";
                element5.m_tooltip.m_topic    = "";
            }
        }
        float size = (float)height * this.m_elementSpace;

        this.m_gridRoot.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, size);
    }