private static List <OptionBehaviour> GetGameOptions(float lowestY) { List <OptionBehaviour> options = new List <OptionBehaviour>(); /*EssentialsPlugin.Logger.LogInfo($"toggles {Object.FindObjectsOfType<ToggleOption>().Count}"); * EssentialsPlugin.Logger.LogInfo($"numbers {Object.FindObjectsOfType<NumberOption>().Count}"); * EssentialsPlugin.Logger.LogInfo($"strings {Object.FindObjectsOfType<StringOption>().Count}"); * EssentialsPlugin.Logger.LogInfo($"keyvalues {Object.FindObjectsOfType<KeyValueOption>().Count}");*/ ToggleOption toggleOption = Object.FindObjectsOfType <ToggleOption>().FirstOrDefault(); NumberOption numberOption = Object.FindObjectsOfType <NumberOption>().FirstOrDefault(); StringOption stringOption = Object.FindObjectsOfType <StringOption>().FirstOrDefault(); //KeyValueOption kvOption = Object.FindObjectsOfType<KeyValueOption>().FirstOrDefault(); int i = 0; foreach (CustomOption option in Options) { if (option.GameSetting != null) { option.GameSetting.gameObject.SetActive(option.MenuVisible); options.Add(option.GameSetting); continue; } if (option.Type == CustomOptionType.Toggle && AmongUsClient.Instance?.AmHost == true) { if (toggleOption == null) { continue; } ToggleOption toggle = Object.Instantiate(toggleOption, toggleOption.transform.parent);//.DontDestroy(); if (!option.OnGameOptionCreated(toggle)) { toggle.Destroy(); continue; } options.Add(toggle); if (Debug) { EssentialsPlugin.Logger.LogInfo($"Option \"{option.Name}\" was created"); } } else if (option.Type == CustomOptionType.Number) { if (numberOption == null) { continue; } NumberOption number = Object.Instantiate(numberOption, numberOption.transform.parent);//.DontDestroy(); if (!option.OnGameOptionCreated(number)) { number.Destroy(); continue; } options.Add(number); if (Debug) { EssentialsPlugin.Logger.LogInfo($"Option \"{option.Name}\" was created"); } } else if (option.Type == CustomOptionType.String || option.Type == CustomOptionType.Toggle && AmongUsClient.Instance?.AmHost != true) { //if (option is IKeyValueOption) //{ // //if (kvOption == null) continue; // Transform parent = kvOption?.transform?.parent ?? toggleOption?.transform?.parent ?? numberOption?.transform?.parent ?? stringOption?.transform?.parent; // if (parent == null) continue; // KeyValueOption kv = kvOption == null ? new KeyValueOption().DontDestroy() : Object.Instantiate(kvOption); // if (kv == null) continue; // kv.transform.SetParent(/*kvOption.transform.*/parent); // option.OnGameOptionCreated(kv); // options.Add(kv); // if (Debug)EssentialsPlugin.Logger.LogInfo($"Option \"{option.Name}\" was created"); //} if (stringOption == null) { continue; } StringOption str = Object.Instantiate(stringOption, stringOption.transform.parent);//.DontDestroy(); if (!option.OnGameOptionCreated(str)) { str.Destroy(); continue; } options.Add(str); if (Debug) { EssentialsPlugin.Logger.LogInfo($"Option \"{option.Name}\" was created"); } } if (!option.GameSetting) { continue; } if (option.MenuVisible) { option.GameSetting.transform.localPosition = new Vector3(option.GameSetting.transform.localPosition.x, lowestY - ++i * 0.5F, option.GameSetting.transform.localPosition.z); } option.GameSetting.gameObject.SetActive(option.MenuVisible); } return(options); }