private void OptionsMenuBuilder_Config_OnFinishedLoading(object sender, ConfigFileEventArgs e) { T oldConfig = JsonConvert.DeserializeObject <T>(jsonConfig); T currentConfig = e.Instance as T; foreach (ModOptionAttributeMetadata <T> modOptionMetadata in ModOptionAttributesMetadata.Values) { if (modOptionMetadata.MemberInfoMetadata.MemberType != MemberType.Field && modOptionMetadata.MemberInfoMetadata.MemberType != MemberType.Property) { continue; } if (!modOptionMetadata.MemberInfoMetadata.GetValue(oldConfig) .Equals(modOptionMetadata.MemberInfoMetadata.GetValue(currentConfig))) { if (!Registered) { // if we haven't marked the options menu as being registered yet, its too soon to fire the events, // so run a coroutine that waits until the first frame where Registered == true // before routing the events UWE.CoroutineHost.StartCoroutine(DeferredInvokeOnChangeEventsRoutine(modOptionMetadata, sender)); } else { // otherwise, route the events immediately InvokeOnChangeEvents(modOptionMetadata, sender); } } } }
private void OptionsMenuBuilder_Config_OnFinishedLoading(object sender, ConfigFileEventArgs e) { T oldConfig = JsonConvert.DeserializeObject <T>(jsonConfig); T currentConfig = e.Instance as T; foreach (ModOptionAttributeMetadata <T> modOptionMetadata in ModOptionAttributesMetadata.Values) { if (modOptionMetadata.MemberInfoMetadata.MemberType != MemberType.Field && modOptionMetadata.MemberInfoMetadata.MemberType != MemberType.Property) { continue; } if (!modOptionMetadata.MemberInfoMetadata.GetValue(oldConfig) .Equals(modOptionMetadata.MemberInfoMetadata.GetValue(currentConfig))) { invokeOnChangeEvents(modOptionMetadata, sender); } } }
public void OptionsMenuBuilder_Config_OnStartedLoading(object sender, ConfigFileEventArgs e) { jsonConfig = JsonConvert.SerializeObject(e.Instance as T); }