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; } } }
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"; } }