Пример #1
0
    private static void Hover <G, C, D>(C currentChild, InteriorFields <G, C> fields, int index, Dictionary <C, D> buildData, Action <C> assignCurrentChild) where C : IConvertible where D : BlueprintData
    {
        //print(String.Format("Hover over group {0} index {1}", fields.CurrentGroup, index));
        C whatToBuild = fields.Map[fields.CurrentGroup][index];

        Hover(currentChild, whatToBuild, fields, buildData, assignCurrentChild);
    }
Пример #2
0
    private void SelectThing <G, C>(InteriorFields <G, C> fields, Action <bool> toggleOff, Action <C> plan) where C : IConvertible
    {
        C whatToBuild = (C)Enum.Parse(typeof(C), UnityEngine.EventSystems.EventSystem.current.currentSelectedGameObject.name);

        if (toggleOff != null)
        {
            fields.GroupDetailPanel.gameObject.SetActive(false);
            toggleOff(false);
        }

        plan(whatToBuild);

        if (toggleOff != null)
        {
            //code smell! :(
            PlayerInput.Instance.FPSController.FreezeLook = false;
        }
    }
Пример #3
0
    private static void Hover <G, C, D>(C currentChild, C whatToBuild, InteriorFields <G, C> fields, Dictionary <C, D> buildData, Action <C> assignCurrentChild) where C : IConvertible where D : BlueprintData
    {
        //avoid filling every frame that we're hovered
        if (Convert.ToInt32(whatToBuild) != Convert.ToInt32(currentChild))
        {
            if (buildData.ContainsKey(whatToBuild))
            {
                assignCurrentChild(whatToBuild);

                BlueprintData data = buildData[whatToBuild];

                fields.DetailHeader.text      = whatToBuild.ToString();
                fields.DetailDescription.text = data.Description;
                int i = 0;
                foreach (RectTransform text in fields.DetailMaterialsParent)
                {
                    if (i == 0)
                    {
                        //noop;
                    }
                    else
                    {
                        int  actualIndex = i - 1;
                        bool active      = actualIndex < data.Requirements.Count;
                        text.gameObject.SetActive(active);
                        if (active)
                        {
                            text.GetComponent <Text>().text = data.Requirements[actualIndex].ToString();
                            text.GetChild(0).GetComponent <Image>().sprite = data.Requirements[actualIndex].Type.Sprite();
                        }
                    }

                    i++;
                }

                fields.DetailPower.transform.parent.gameObject.SetActive(data.PowerSteady.HasValue || data.PowerMin.HasValue);

                if (data.PowerSteady.HasValue)
                {
                    fields.DetailPower.text = data.PowerSteady.Value > 0 ? "+" + data.PowerSteady.Value : data.PowerSteady.Value.ToString();
                }
                else if (data.PowerMin.HasValue && data.PowerMin.Value >= 0)
                {
                    fields.DetailPower.text = String.Format("+[{0}-{1}]", data.PowerMin.Value, data.PowerMax.Value);
                }

                fields.DetailPowerStorage.transform.parent.gameObject.SetActive(data.EnergyStorage.HasValue);
                if (data.EnergyStorage.HasValue)
                {
                    fields.DetailPower.text = data.EnergyStorage.ToString();
                }

                fields.DetailTypedStorage.transform.parent.gameObject.SetActive(data.StorageType != Matter.Unspecified);
                if (data.StorageType != Matter.Unspecified)
                {
                    fields.DetailStorage.transform.parent.gameObject.SetActive(false);
                    fields.DetailTypedStorage.text = data.Storage.Value.ToString();
                    if (data.StorageType == Matter.Methane)
                    {
                        fields.DetailTypedStorageSprite.sprite = GuiBridge.Instance.Icons.MiscIcons[(int)MiscIcon.Molecule];
                    }
                    else
                    {
                        fields.DetailTypedStorageSprite.sprite = data.StorageType.Sprite();
                    }
                }
                else
                {
                    fields.DetailStorage.transform.parent.gameObject.SetActive(data.Storage.HasValue);
                    if (data.Storage.HasValue)
                    {
                        fields.DetailStorage.text = data.Storage.Value.ToString();
                    }
                }

                if (data.IO == null)
                {
                    foreach (Text io in fields.DetailIO)
                    {
                        io.transform.parent.gameObject.SetActive(false);
                    }
                }
                else
                {
                    i = 0;
                    foreach (KeyValuePair <Matter, float> entry in data.IO)
                    {
                        fields.DetailIO[i].transform.parent.gameObject.SetActive(true);
                        fields.DetailIO[i].text = entry.Value > 0 ? "+" + entry.Value : entry.Value.ToString();
                        fields.DetailIO[i].transform.parent.GetChild(0).GetComponent <Image>().sprite = entry.Key.Sprite();
                        i++;
                    }
                    for (int j = i; j < fields.DetailIO.Length; j++)
                    {
                        fields.DetailIO[i].transform.parent.gameObject.SetActive(false);
                    }
                }
            }
        }
    }