private static void OnSettingsChanged(object sender, EventArgs e) { // Adjust to new calibration zone size. for (int i = 0; i < Instance.Shifts.Count - 1;) { bool did_remove = false; for (int j = i + 1; j < Instance.Shifts.Count; j++) { if (Instance.Shifts[j].Position.GetDistance(Instance.Shifts[i].Position) < Options.Instance.calibration_mode.zone_size) { did_remove = true; Instance.Shifts.RemoveAt(i); break; } } if (!did_remove) { i++; } } // Adjust to new calibration zones count. while (Instance.Shifts.Count > Options.Instance.calibration_mode.max_zones_count) { Instance.Shifts.RemoveAt(0); } AsyncSaver.Save(Filepath, Instance.GetDeepCopy); Instance.NotifyOnChange(); }
public void AddShift(Position cursor_position, Point shift) { var indices = GetClosestShiftIndexes(cursor_position, 2); if (indices != null && indices[0].Item2 < Options.Instance.calibration_mode.zone_size) { Shifts[indices[0].Item1] = new ShiftItem(cursor_position, shift); if (indices.Count > 1 && indices[1].Item2 < Options.Instance.calibration_mode.zone_size) { Shifts.RemoveAt(indices[1].Item1); } } else if (Shifts.Count() < Options.Instance.calibration_mode.max_zones_count) { Shifts.Add(new ShiftItem(cursor_position, shift)); } else { Shifts[GetClosestPointOfHihestDensity(cursor_position)] = new ShiftItem(cursor_position, shift); } AsyncSaver.Save(Filepath, GetDeepCopy); NotifyOnChange(); }
public void OnCalibrate() { items[current_item_key].calibrations++; AsyncSaver.Save(Filepath, GetDeepCopy); }
public void OnClick() { items[current_item_key].clicks++; AsyncSaver.Save(Filepath, GetDeepCopy); }