public Dialog_SensorSettings(ISensorSettingsProvider sensor) { this.sensor = sensor; settings = sensor.Settings.Clone(); originalSettings = settings.Clone(); absorbInputAroundWindow = false; doCloseX = true; doCloseButton = true; draggable = true; }
public override void PostClose() { base.PostClose(); // assign modified fields to all selected sensors foreach (var obj in Find.Selector.SelectedObjects.Union(new[] { sensor })) { if (obj is ISensorSettingsProvider s) { var selectedSettingsCopy = s.Settings.Clone(); if (SensorSettings.AssignModifiedFields(originalSettings, settings, selectedSettingsCopy)) { s.OnSettingsChanged(selectedSettingsCopy); } } } }
public override void ExposeData() { base.ExposeData(); Scribe_Deep.Look(ref slice, "slice"); Scribe_Collections.Look(ref trackedPawns, false, "trackedPawns", LookMode.Reference); Scribe_Values.Look(ref lastTriggeredTick, "lastTriggered"); Scribe_Deep.Look(ref settings, "settings"); Scribe_Deep.Look(ref pendingSettings, "pendingSettings"); if (Scribe.mode == LoadSaveMode.PostLoadInit) { if (trackedPawns == null) { trackedPawns = new List <Pawn>(); } trackedPawns.RemoveAll(p => p == null); if (settings == null) { settings = new SensorSettings(); } } }
public void OnSettingsChanged(SensorSettings s) { pendingSettings = s; this.UpdateSwitchDesignation(); }
public void DoSwitch() { settings = pendingSettings?.Clone() ?? new SensorSettings(); pendingSettings = null; }