示例#1
0
    public void SelectRobot(RobotScriptableObject activeRobot)
    {
        MenuController.activeRobot = activeRobot;
        PlayerPrefs.SetString("lastRobot", activeRobot.robotName);

        // Delete existing options
        foreach (GameObject option in options)
        {
            Destroy(option);
        }

        // Make new ones for the new robot
        foreach (Option option in activeRobot.options)
        {
            if (option.type == OptionType.String)
            {
                GameObject optionObj = Instantiate(optionPrefab, optionEntryParent);
                options.Add(optionObj);

                TextMeshProUGUI text = optionObj.GetComponentInChildren <TextMeshProUGUI>();
                text.text = option.name;

                TMP_InputField input_field = optionObj.GetComponentInChildren <TMP_InputField>();
                input_field.text = RobotOptions.GetValue(activeRobot.robotName + option.name);
                input_field.onEndEdit.AddListener(delegate
                {
                    RobotOptions.SetValue(activeRobot.robotName + option.name, input_field.text);
                });
                keyToOptionField[activeRobot.robotName + option.name] = input_field;
            }
            else if (option.type == OptionType.Boolean)
            {
                GameObject optionObj = Instantiate(optionTogglePrefab, optionEntryParent);
                options.Add(optionObj);

                Toggle toggle = optionObj.GetComponent <Toggle>();
                toggle.onValueChanged.AddListener(delegate
                {
                    RobotOptions.SetValue(activeRobot.robotName + option.name, toggle.isOn ? "True" : "False");
                });

                if (RobotOptions.GetValue(activeRobot.robotName + option.name) == "True")
                {
                    toggle.isOn = true;
                }


                TextMeshProUGUI text = optionObj.GetComponentInChildren <TextMeshProUGUI>();
                text.text = option.name;
                keyToToggleField[activeRobot.robotName + option.name] = toggle;
            }
        }
    }
示例#2
0
    public void Start()
    {
        // Load up Robot Options
        if (!alreadyInit)
        {
            RobotOptions.LoadSaved(robots);
        }
        else
        {
            FillOptionFields();
        }

        string robotNameToLoad = PlayerPrefs.GetString("lastRobot", robots[0].robotName);
        int    levelIdToLoad   = PlayerPrefs.GetInt("lastLevel", levels[0].levelId);

        // Generate level toggles
        foreach (LevelScriptableObject level in levels)
        {
            GameObject levelToggle = Instantiate(togglePrefab, togglesParent);

            Toggle toggle = levelToggle.GetComponent <Toggle>();
            toggle.onValueChanged.AddListener(delegate
            {
                SelectLevel(level);
            });
            toggle.group = togglesGroup;

            if (level.levelId == levelIdToLoad)
            {
                activeLevel = level;
                toggle.isOn = true;
            }

            TextMeshProUGUI text = levelToggle.GetComponentInChildren <TextMeshProUGUI>();
            text.text = level.levelName;
        }
        // Generate robot toggles
        foreach (RobotScriptableObject robot in robots)
        {
            GameObject robotToggle = Instantiate(togglePrefab, robotsParent);

            Toggle toggle = robotToggle.GetComponent <Toggle>();
            toggle.onValueChanged.AddListener(delegate
            {
                SelectRobot(robot);
            });
            toggle.group = robotsGroup;

            if (robot.robotName == robotNameToLoad)
            {
                activeRobot = robot;
                toggle.isOn = true;
            }


            TextMeshProUGUI text = robotToggle.GetComponentInChildren <TextMeshProUGUI>();
            text.text = robot.robotName;
        }

        alreadyInit = true;

        if (RosConnector.instance.IsConnected.WaitOne(0))
        {
            RunButton.interactable = true;
            RunButton.GetComponentInChildren <TextMeshProUGUI>().text = "Run";
        }
    }