public void PrepForClose() { windowDragTimer.Stop(); windowDragTimer.Elapsed -= WindowDragTimer_Elapsed; windowDragTimer = null; ValueEditors.ValueChanged -= ValueEditors_ValueChanged; ValueEditors.Clean(STR_PersistentEffectsEditorKey); frmPersistentEffectPropertyEditor?.Close(); frmPersistentEffectPropertyEditor = null; }
public FrmPropertyList() { InitializeComponent(); windowDragTimer = new System.Timers.Timer(); windowDragTimer.Interval = 20; windowDragTimer.Elapsed += WindowDragTimer_Elapsed; ValueEditors.Register(STR_PersistentEffectsEditorKey); foreach (IValueEditor valueEditor in ValueEditors.GetAll(STR_PersistentEffectsEditorKey)) { //Talespire.Log.Debug($"valueEditor ({valueEditor.GetType().Name}).Initialize(this);"); valueEditor.Initialize(this); } if (frmPersistentEffectPropertyEditor == null) { //Talespire.Log.Debug($"frmPersistentEffectPropertyEditor = new FrmPersistentEffectPropertyEditor();"); frmPersistentEffectPropertyEditor = new FrmPersistentEffectPropertyEditor(); } //Talespire.Log.Debug($"ValueEditors.ValueChanged += ValueEditors_ValueChanged;"); ValueEditors.ValueChanged += ValueEditors_ValueChanged; }
private void lstProperties_SelectedIndexChanged(object sender, EventArgs e) { try { EffectProperty effectProperty = lstProperties.SelectedItem as EffectProperty; if (effectProperty != null) { Talespire.Log.Warning($"{effectProperty.Name} selected!"); WindowHelper.FocusTaleSpire(); } frmPersistentEffectPropertyEditor.Controls.Clear(); UserControl valueEditor = ValueEditors.Get(STR_PersistentEffectsEditorKey, effectProperty.Type) as UserControl; if (valueEditor != null) { // TODO: Set the control's state based on the actual value. frmPersistentEffectPropertyEditor.Controls.Add(valueEditor); frmPersistentEffectPropertyEditor.Height = valueEditor.Height + 8; if (valueEditor is IScriptEditor scriptEditor) { //Talespire.Log.Warning($"Instance = \"{Instance}\""); if (effectProperty.Paths.StartsWith("<") && effectProperty.Paths.EndsWith(">")) { // Could be a script! //Talespire.Log.Debug($"Could be a script!"); Type scriptType = KnownScripts.GetType(effectProperty.Paths.Substring(1, effectProperty.Paths.Length - 2)); if (scriptType != null) { //Talespire.Log.Debug($"scriptType found {scriptType.FullName}"); UnityEngine.Component script = Instance.GetComponent(scriptType.FullName); scriptEditor.InitializeInstance(script as MonoBehaviour); } else { //Talespire.Log.Debug($"{effectProperty.Paths} is not a Script!"); } } } if (valueEditor is IValueEditor iValueEditor) { iValueEditor.EditingProperty(effectProperty.Name, effectProperty.Paths); //Talespire.Log.Warning($"effectProperty.Paths = \"{effectProperty.Paths}\""); PropertyModDetails propertyModDetails = BasePropertyChanger.GetPropertyModDetails(Instance, effectProperty.Paths); //Talespire.Log.Warning($"iValueEditor.SetValue(\"{propertyModDetails.GetValue()}\");"); object newValue = propertyModDetails.GetValue(); if (newValue == null) { BasePropertyChanger propertyChanger = iValueEditor.GetPropertyChanger(); newValue = propertyChanger.TryGetValue(Instance, effectProperty.Paths); } iValueEditor.SetValue(newValue); } else { Talespire.Log.Error($"valueEditor is NOT an IValueEditor!!!"); } } else { Talespire.Log.Error($"value editor NOT found!!!"); } frmPersistentEffectPropertyEditor.Show(); } catch (Exception ex) { Talespire.Log.Exception(ex, nameof(lstProperties_SelectedIndexChanged)); } }