private bool GetVariable(void *data) { if (data == null) { Logger.Instance.LogWarning($"data is null.", nameof(retro_environment.RETRO_ENVIRONMENT_GET_VARIABLE)); return(false); } retro_variable *outVariable = (retro_variable *)data; if (outVariable->key == IntPtr.Zero) { return(false); } string key = Marshal.PtrToStringAnsi(outVariable->key); if (_wrapper.Core.GameOptions == null) { Logger.Instance.LogWarning($"Core didn't set its options. Requested key: {key}", nameof(retro_environment.RETRO_ENVIRONMENT_GET_VARIABLE)); return(false); } CoreOption coreOption = _wrapper.Core.GameOptions[key]; if (coreOption == null) { Logger.Instance.LogWarning($"Core option '{key}' not found.", nameof(retro_environment.RETRO_ENVIRONMENT_GET_VARIABLE)); return(false); } outVariable->value = (IntPtr)_wrapper.GetUnsafeString(coreOption.CurrentValue); return(true); }
public SerializableCoreOptions(CoreOptions options) { Options = new string[options.Count]; for (int i = 0; i < options.Count; ++i) { CoreOption option = options[i]; Options[i] = $"{option.Key};{option.Description};{option.CurrentValue};{string.Join("|", option.PossibleValues)};"; } }