示例#1
0
    public void SetFilterFocus(IItemFilter filterEntity)
    {
        filterHighlight.SetActive(false);
        this.filterEntity = filterEntity;
        if (filterEntity != null)
        {
            itemId = filterEntity.GetFilterItem();
            string[] filterNames = filterEntity.GetFilterNames();
            for (int i = 0; i < filterStateList.Count; i++)
            {
                filterToggleGroup.UnregisterToggle(filterStateList[i]);
                Destroy(filterStateList[i].gameObject);
            }
            filterStateList.Clear();
            if (filterNames.Length > 1)
            {
                for (int i = 0; i < filterNames.Length; i++)
                {
                    GameObject filterStateButton = Instantiate(filterOutputTogglePrefab, filterStatePanel.transform, false);
                    Toggle     toggle            = filterStateButton.GetComponent <Toggle>();
                    filterStateList.Add(toggle);
                    filterStateButton.transform.GetChild(0).GetComponent <TextMeshProUGUI>().text = filterNames[i];
                    toggle.group = filterToggleGroup;
                    if (filterEntity.GetFilter() == filterNames[i])
                    {
                        toggle.isOn = true;
                    }
                    else
                    {
                        toggle.isOn = false;
                    }
                }
                for (int i = 0; i < filterStateList.Count; i++)
                {
                    filterStateList[i].onValueChanged.AddListener(delegate { OnClickToggle(); });
                }
            }
            else
            {
                GameObject toggleOnOff = Instantiate(filterOutputTogglePrefab, filterStatePanel.transform, false);
                Toggle     temp        = toggleOnOff.GetComponent <Toggle>();
                filterStateList.Add(temp);
                toggleOnOff.transform.GetChild(0).GetComponent <TextMeshProUGUI>().text = "Enabled";
                temp.group = filterToggleGroup;
                string filterString = filterEntity.GetFilter();
                if (filterString == "Enabled")
                {
                    temp.isOn = true;
                }
                else
                {
                    temp.isOn = false;
                }
                temp.onValueChanged.AddListener(delegate { OnClickToggle(); });
            }
            if (itemId != -1)
            {
                for (int i = 0; i < filterItemList.Count; i++)
                {
                    if (filterItemList[i].GetComponent <InventorySlot>().item.id == itemId)
                    {
                        filterHighlight.SetActive(true);
                        filterHighlight.transform.SetParent(filterItemList[i].transform, false);
                        filterHighlight.transform.position = filterItemList[i].transform.position;
                    }
                }
            }

            GetComponent <MenuSlideOut>().TogglePanel(MenuSlideOut.PanelState.panelOut);
        }
        else
        {
            GetComponent <MenuSlideOut>().TogglePanel(MenuSlideOut.PanelState.panelIn);
        }
    }