예제 #1
0
        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);
                }
            }
        }