private static void Postfix(InventoryGrid __instance)
        {
            if (__instance.name == "QuickSlotGrid")
            {
                for (var i = 0; i < EquipmentAndQuickSlots.QuickSlotCount; ++i)
                {
                    var element     = __instance.m_elements[i];
                    var bindingText = element.m_go.transform.Find("binding").GetComponent <Text>();
                    bindingText.enabled            = true;
                    bindingText.horizontalOverflow = HorizontalWrapMode.Overflow;
                    bindingText.text = EquipmentAndQuickSlots.GetBindingLabel(i);
                }
            }
            else if (__instance.name == "EquipmentSlotGrid")
            {
                var       horizontalSpacing = __instance.m_elementSpace + 10;
                var       verticalSpacing   = __instance.m_elementSpace + 10;
                string[]  equipNames        = { "Head", "Chest", "Legs", "Shoulders", "Utility" };
                Vector2[] equipPositions    =
                {
                    new Vector2(),                                           // Head
                    new Vector2(0, -verticalSpacing),                        // Chest
                    new Vector2(0, -2 * verticalSpacing),                    // Legs
                    new Vector2(horizontalSpacing, -0.5f * verticalSpacing), // Shoulders
                    new Vector2(horizontalSpacing, -1.5f * verticalSpacing), // Utility 1
                    //new Vector2(horizontalSpacing, -2 * verticalSpacing), // Utility 2
                };

                for (var i = 0; i < EquipmentAndQuickSlots.EquipSlotCount; ++i)
                {
                    var element     = __instance.m_elements[i];
                    var bindingText = element.m_go.transform.Find("binding").GetComponent <Text>();
                    bindingText.enabled            = true;
                    bindingText.horizontalOverflow = HorizontalWrapMode.Overflow;
                    bindingText.text = equipNames[i];
                    bindingText.rectTransform.anchoredPosition = new Vector2(32, 5);

                    var offset = new Vector2(-20, 79);
                    element.m_go.RectTransform().anchoredPosition = offset + equipPositions[i];
                }
            }
        }
Exemple #2
0
        private static void Postfix(InventoryGrid __instance, Player player, ItemDrop.ItemData dragItem)
        {
            if (__instance.name == "QuickSlotGrid")
            {
                for (int i = 0; i < EquipmentAndQuickSlots.QuickSlotCount; ++i)
                {
                    var element     = __instance.m_elements[i];
                    var bindingText = element.m_go.transform.Find("binding").GetComponent <Text>();
                    bindingText.enabled            = true;
                    bindingText.horizontalOverflow = HorizontalWrapMode.Overflow;
                    bindingText.text = EquipmentAndQuickSlots.GetBindingLabel(i);
                }
            }
            else if (__instance.name == "EquipmentSlotGrid")
            {
                float     horizontalSpacing = __instance.m_elementSpace + 10;
                float     verticalSpacing   = __instance.m_elementSpace + 10;
                string[]  equipNames        = { "Head", "Chest", "Legs", "Shoulders", "Utility 1", "Utility 2" };
                Vector2[] equipPositions    =
                {
                    new Vector2(),                                        // Head
                    new Vector2(0, -verticalSpacing),                     // Chest
                    new Vector2(0, -2 * verticalSpacing),                 // Legs
                    new Vector2(horizontalSpacing, 0),                    // Shoulders
                    new Vector2(horizontalSpacing, -1 * verticalSpacing), // Utility 1
                    new Vector2(horizontalSpacing, -2 * verticalSpacing), // Utility 2
                };

                for (int i = 0; i < EquipmentAndQuickSlots.EquipSlotCount; ++i)
                {
                    var element     = __instance.m_elements[i];
                    var bindingText = element.m_go.transform.Find("binding").GetComponent <Text>();
                    bindingText.enabled            = true;
                    bindingText.horizontalOverflow = HorizontalWrapMode.Overflow;
                    bindingText.text = equipNames[i];
                    bindingText.rectTransform.anchoredPosition = new Vector2(32, 5);

                    Vector2 offset = new Vector2();// Vector2(692, -20);
                    (element.m_go.transform as RectTransform).anchoredPosition = offset + equipPositions[i];
                }
            }
        }
        private static void Postfix(InventoryGrid __instance, Player player, ItemDrop.ItemData dragItem, List <InventoryGrid.Element> ___m_elements)
        {
            if (__instance.name != "PlayerGrid")
            {
                return;
            }

            if (EquipmentAndQuickSlots.QuickSlotsEnabled.Value)
            {
                var quickSlotBkg = GetOrCreateBackground(__instance, "QuickSlotBkg");
                quickSlotBkg.anchoredPosition = new Vector2(480, -173);
                quickSlotBkg.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 240);
                quickSlotBkg.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 90);
            }
            else
            {
                var existingBkg = __instance.transform.parent.Find("QuickSlotBkg");
                if (existingBkg != null)
                {
                    GameObject.Destroy(existingBkg.gameObject);
                }
            }

            if (EquipmentAndQuickSlots.EquipmentSlotsEnabled.Value)
            {
                var equipmentBkg = GetOrCreateBackground(__instance, "EquipmentBkg");
                equipmentBkg.anchoredPosition = new Vector2(485, 10);
                equipmentBkg.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 210);
                equipmentBkg.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 260);
            }
            else
            {
                var existingBkg = __instance.transform.parent.Find("EquipmentBkg");
                if (existingBkg != null)
                {
                    GameObject.Destroy(existingBkg.gameObject);
                }
            }

            float horizontalSpacing = __instance.m_elementSpace + 10;
            float verticalSpacing   = __instance.m_elementSpace + 10;

            string[]  equipNames     = { "Head", "Chest", "Legs", "Shoulders", "Utility" };
            Vector2[] equipPositions =
            {
                new Vector2(),                                           // Head
                new Vector2(0, -verticalSpacing),                        // Chest
                new Vector2(0, -2 * verticalSpacing),                    // Legs
                new Vector2(horizontalSpacing, -0.5f * verticalSpacing), // Shoulders
                new Vector2(horizontalSpacing, -1.5f * verticalSpacing), // Utility
            };

            var y = EquipmentAndQuickSlots.GetBonusInventoryRowIndex();

            for (int i = 0; i < EquipmentAndQuickSlots.EquipSlotCount; ++i)
            {
                var x       = i;
                var element = GetElement(___m_elements, x, y);

                if (!EquipmentAndQuickSlots.EquipmentSlotsEnabled.Value)
                {
                    element.m_go.SetActive(false);
                    continue;
                }
                else
                {
                    element.m_go.SetActive(true);
                }

                var bindingText = element.m_go.transform.Find("binding").GetComponent <Text>();
                bindingText.enabled            = true;
                bindingText.horizontalOverflow = HorizontalWrapMode.Overflow;
                bindingText.text = equipNames[i];
                bindingText.rectTransform.anchoredPosition = new Vector2(32, 5);

                Vector2 offset = new Vector2(692, -20);
                (element.m_go.transform as RectTransform).anchoredPosition = offset + equipPositions[i];
            }

            for (int i = 0; i < EquipmentAndQuickSlots.QuickUseSlotCount; ++i)
            {
                var x       = EquipmentAndQuickSlots.QuickUseSlotIndexStart + i;
                var element = GetElement(___m_elements, x, y);
                if (EquipmentAndQuickSlots.QuickSlotsEnabled.Value)
                {
                    element.m_go.SetActive(true);
                    var bindingText = element.m_go.transform.Find("binding").GetComponent <Text>();
                    bindingText.enabled            = true;
                    bindingText.horizontalOverflow = HorizontalWrapMode.Overflow;
                    bindingText.text = EquipmentAndQuickSlots.GetBindingLabel(i);

                    Vector2 offset   = new Vector2(310, 0);
                    Vector2 position = (Vector2) new Vector3((float)x * __instance.m_elementSpace, (float)y * -__instance.m_elementSpace);
                    (element.m_go.transform as RectTransform).anchoredPosition = offset + position;
                }
                else
                {
                    element.m_go.SetActive(false);
                }
            }
        }
            public static bool Prefix(HotkeyBar __instance, Player player)
            {
                if (__instance.name != "QuickSlotsHotkeyBar")
                {
                    return(true);
                }

                if (player == null || player.IsDead())
                {
                    foreach (var element in __instance.m_elements)
                    {
                        Object.Destroy(element.m_go);
                    }

                    __instance.m_elements.Clear();
                }
                else
                {
                    player.GetQuickSlotInventory().GetBoundItems(__instance.m_items);
                    __instance.m_items.Sort((x, y) => x.m_gridPos.x.CompareTo(y.m_gridPos.x));
                    const int showElementCount = EquipmentAndQuickSlots.QuickSlotCount;
                    if (__instance.m_elements.Count != showElementCount)
                    {
                        foreach (var element in __instance.m_elements)
                        {
                            Object.Destroy(element.m_go);
                        }

                        __instance.m_elements.Clear();
                        for (var index = 0; index < showElementCount; ++index)
                        {
                            var elementData = new HotkeyBar.ElementData()
                            {
                                m_go = Object.Instantiate(__instance.m_elementPrefab, __instance.transform)
                            };
                            elementData.m_go.transform.localPosition = new Vector3(index * __instance.m_elementSpace, 0.0f, 0.0f);
                            elementData.m_icon       = elementData.m_go.transform.transform.Find("icon").GetComponent <Image>();
                            elementData.m_durability = elementData.m_go.transform.Find("durability").GetComponent <GuiBar>();
                            elementData.m_amount     = elementData.m_go.transform.Find("amount").GetComponent <Text>();
                            elementData.m_equiped    = elementData.m_go.transform.Find("equiped").gameObject;
                            elementData.m_queued     = elementData.m_go.transform.Find("queued").gameObject;
                            elementData.m_selection  = elementData.m_go.transform.Find("selected").gameObject;

                            var bindingText = elementData.m_go.transform.Find("binding").GetComponent <Text>();
                            bindingText.enabled            = true;
                            bindingText.horizontalOverflow = HorizontalWrapMode.Overflow;
                            bindingText.text = EquipmentAndQuickSlots.GetBindingLabel(index);

                            __instance.m_elements.Add(elementData);
                        }
                    }

                    foreach (var element in __instance.m_elements)
                    {
                        element.m_used = false;
                    }

                    var isGamepadActive = ZInput.IsGamepadActive();
                    foreach (var itemData in __instance.m_items)
                    {
                        var element = __instance.m_elements[itemData.m_gridPos.x];
                        element.m_used = true;
                        element.m_icon.gameObject.SetActive(true);
                        element.m_icon.sprite = itemData.GetIcon();
                        element.m_durability.gameObject.SetActive(itemData.m_shared.m_useDurability);
                        if (itemData.m_shared.m_useDurability)
                        {
                            if (itemData.m_durability <= 0.0)
                            {
                                element.m_durability.SetValue(1f);
                                element.m_durability.SetColor((double)Mathf.Sin(Time.time * 10f) > 0.0 ? Color.red : new Color(0.0f, 0.0f, 0.0f, 0.0f));
                            }
                            else
                            {
                                element.m_durability.SetValue(itemData.GetDurabilityPercentage());
                                element.m_durability.ResetColor();
                            }
                        }

                        element.m_equiped.SetActive(itemData.m_equiped);
                        element.m_queued.SetActive(player.IsItemQueued(itemData));
                        if (itemData.m_shared.m_maxStackSize > 1)
                        {
                            element.m_amount.gameObject.SetActive(true);
                            element.m_amount.text = itemData.m_stack.ToString() + "/" + itemData.m_shared.m_maxStackSize.ToString();
                        }
                        else
                        {
                            element.m_amount.gameObject.SetActive(false);
                        }
                    }

                    for (var index = 0; index < __instance.m_elements.Count; ++index)
                    {
                        var element = __instance.m_elements[index];
                        element.m_selection.SetActive(isGamepadActive && index == __instance.m_selected);
                        if (!element.m_used)
                        {
                            element.m_icon.gameObject.SetActive(false);
                            element.m_durability.gameObject.SetActive(false);
                            element.m_equiped.SetActive(false);
                            element.m_queued.SetActive(false);
                            element.m_amount.gameObject.SetActive(false);
                        }
                    }
                }

                return(false);
            }
        public static bool Prefix(HotkeyBar __instance, Player player, List <HotkeyBar.ElementData> ___m_elements, List <ItemDrop.ItemData> ___m_items, int ___m_selected)
        {
            if (!EquipmentAndQuickSlots.QuickSlotsEnabled.Value)
            {
                return(true);
            }

            if (player == null || player.IsDead())
            {
                foreach (HotkeyBar.ElementData element in ___m_elements)
                {
                    UnityEngine.Object.Destroy((UnityEngine.Object)element.m_go);
                }
                ___m_elements.Clear();
            }
            else
            {
                player.GetInventory().GetBoundItems(___m_items);
                ___m_items.Sort((Comparison <ItemDrop.ItemData>)((a, b) => a.m_gridPos.y == b.m_gridPos.y ? a.m_gridPos.x.CompareTo(b.m_gridPos.x) : a.m_gridPos.y.CompareTo(b.m_gridPos.y)));
                int num = player.GetInventory().m_width + EquipmentAndQuickSlots.QuickUseSlotCount;
                if (___m_elements.Count != num)
                {
                    foreach (HotkeyBar.ElementData element in ___m_elements)
                    {
                        UnityEngine.Object.Destroy((UnityEngine.Object)element.m_go);
                    }
                    ___m_elements.Clear();
                    for (int index = 0; index < num; ++index)
                    {
                        var parent = __instance.transform;
                        if (index >= 8)
                        {
                            parent = __instance.transform.parent.Find("healthpanel");
                        }
                        HotkeyBar.ElementData elementData = new HotkeyBar.ElementData()
                        {
                            m_go = UnityEngine.Object.Instantiate <GameObject>(__instance.m_elementPrefab, parent)
                        };

                        if (index < 8)
                        {
                            elementData.m_go.transform.localPosition = new Vector3(index * __instance.m_elementSpace, 0.0f, 0.0f);
                            elementData.m_go.transform.Find("binding").GetComponent <Text>().text = (index + 1).ToString();
                        }
                        else
                        {
                            var offset         = new Vector2(100, -150);
                            var quickSlotIndex = index - 8;
                            elementData.m_go.transform.localPosition    = new Vector3(offset.x, offset.y - quickSlotIndex * __instance.m_elementSpace, 0.0f);
                            elementData.m_go.transform.localEulerAngles = new Vector3(0, 0, -90);
                            string label       = EquipmentAndQuickSlots.GetBindingLabel(quickSlotIndex);
                            var    bindingText = elementData.m_go.transform.Find("binding").GetComponent <Text>();
                            bindingText.text = label;
                            bindingText.horizontalOverflow = HorizontalWrapMode.Overflow;
                        }
                        elementData.m_icon       = elementData.m_go.transform.transform.Find("icon").GetComponent <Image>();
                        elementData.m_durability = elementData.m_go.transform.Find("durability").GetComponent <GuiBar>();
                        elementData.m_amount     = elementData.m_go.transform.Find("amount").GetComponent <Text>();
                        elementData.m_equiped    = elementData.m_go.transform.Find("equiped").gameObject;
                        elementData.m_queued     = elementData.m_go.transform.Find("queued").gameObject;
                        elementData.m_selection  = elementData.m_go.transform.Find("selected").gameObject;
                        ___m_elements.Add(elementData);
                    }
                }

                foreach (HotkeyBar.ElementData element in ___m_elements)
                {
                    element.m_used = false;
                }

                bool isGamepadActive = ZInput.IsGamepadActive();
                for (int index = 0; index < ___m_items.Count; ++index)
                {
                    ItemDrop.ItemData     itemData = ___m_items[index];
                    HotkeyBar.ElementData element  = GetElementForItem(___m_elements, itemData);
                    element.m_used = true;
                    element.m_icon.gameObject.SetActive(true);
                    element.m_icon.sprite = itemData.GetIcon();
                    element.m_durability.gameObject.SetActive(itemData.m_shared.m_useDurability);
                    if (itemData.m_shared.m_useDurability)
                    {
                        if (itemData.m_durability <= 0.0f)
                        {
                            element.m_durability.SetValue(1.0f);
                            element.m_durability.SetColor(Mathf.Sin(Time.time * 10.0f) > 0.0f ? Color.red : new Color(0.0f, 0.0f, 0.0f, 0.0f));
                        }
                        else
                        {
                            element.m_durability.SetValue(itemData.GetDurabilityPercentage());
                            element.m_durability.ResetColor();
                        }
                    }
                    element.m_equiped.SetActive(itemData.m_equiped);
                    element.m_queued.SetActive(player.IsItemQueued(itemData));
                    if (itemData.m_shared.m_maxStackSize > 1)
                    {
                        element.m_amount.gameObject.SetActive(true);
                        element.m_amount.text = $"{itemData.m_stack}/{itemData.m_shared.m_maxStackSize}";
                    }
                    else
                    {
                        element.m_amount.gameObject.SetActive(false);
                    }
                }

                for (int index = 0; index < ___m_elements.Count; ++index)
                {
                    HotkeyBar.ElementData element = ___m_elements[index];
                    element.m_selection.SetActive(isGamepadActive && index == ___m_selected);
                    if (!element.m_used)
                    {
                        element.m_icon.gameObject.SetActive(false);
                        element.m_durability.gameObject.SetActive(false);
                        element.m_equiped.SetActive(false);
                        element.m_queued.SetActive(false);
                        element.m_amount.gameObject.SetActive(false);
                    }
                }
            }

            return(false);
        }