private void contextMenuStripFilters_Closing(object sender, ToolStripDropDownClosingEventArgs e) { ActorFilter filterTag = (ActorFilter)contextMenuStripFilters.Tag; if (filterTag != null) { e.Cancel = (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked); if (!e.Cancel) { filterTag.HasDescriptionOverride = toolStripMenuItemOverrideName.Checked; filterTag.UseMatchType = toolStripMenuItemMatchType.Checked; filterTag.UseMatchNpcId = toolStripMenuItemMatchId.Checked; filterTag.Description = toolStripTextBoxNameOverrride.Text; uint.TryParse(toolStripTextBoxMatchId.Text, out filterTag.MatchNpcId); filterTag.Mode = (GameData.OverlaySettings.DisplayMode)toolStripComboBoxLabelMode.SelectedItem; filterTag.MatchType = (MemoryLayout.ActorType)toolStripComboBoxMatchType.SelectedItem; foreach (ListViewItem lvi in listViewPresetEdit.Items) { if (lvi.Tag == filterTag) { UpdateFilterItem(lvi); UpdateOverlaySettings(); break; } } } } }
private void CreateFilterItem(ActorFilter filterOb) { if (activePreset != null) { if (!filterOb.UseMatchNpcId) { filterOb.Description = ""; } activePreset.Filters.Add(filterOb); ListViewItem lvi = new ListViewItem(filterOb.Description); lvi.Tag = filterOb; lvi.SubItems.Add(""); lvi.SubItems.Add(""); lvi.SubItems.Add(""); lvi.SubItems.Add(""); UpdateFilterItem(lvi); UpdateOverlaySettings(); listViewPresetEdit.Items.Add(lvi); } labelFilterHint.Visible = (activePreset != null) && (activePreset.Filters.Count == 0); }
private void contextMenuStripFilters_Opened(object sender, EventArgs e) { bool bHasFilter = (activePreset != null) && (listViewPresetEdit.SelectedItems.Count == 1); if (bHasFilter) { ActorFilter filterTag = (ActorFilter)listViewPresetEdit.SelectedItems[0].Tag; contextMenuStripFilters.Tag = filterTag; toolStripMenuItemOverrideName.Checked = filterTag.HasDescriptionOverride; toolStripMenuItemMatchType.Checked = filterTag.UseMatchType; toolStripMenuItemMatchId.Checked = filterTag.UseMatchNpcId; toolStripTextBoxNameOverrride.Text = string.IsNullOrEmpty(filterTag.Description) ? "??" : filterTag.Description; toolStripTextBoxMatchId.Text = filterTag.MatchNpcId.ToString(); toolStripComboBoxLabelMode.Items.Clear(); foreach (GameData.OverlaySettings.DisplayMode v in Enum.GetValues(typeof(GameData.OverlaySettings.DisplayMode))) { toolStripComboBoxLabelMode.Items.Add(v); } toolStripComboBoxLabelMode.SelectedItem = filterTag.Mode; toolStripComboBoxMatchType.Items.Clear(); foreach (MemoryLayout.ActorType v in Enum.GetValues(typeof(MemoryLayout.ActorType))) { toolStripComboBoxMatchType.Items.Add(v); } toolStripComboBoxMatchType.SelectedItem = filterTag.MatchType; } }
public bool LoadFromJson(JsonParser.ObjectValue jsonOb) { bool hasLoaded = false; try { Name = jsonOb["name"]; ShowOnlyMatching = (JsonParser.BoolValue)jsonOb["onlyMatching"]; version = jsonOb.entries.ContainsKey("ver") ? (JsonParser.IntValue)jsonOb["ver"] : 1; JsonParser.ArrayValue arrFilters = (JsonParser.ArrayValue)jsonOb["filters"]; foreach (JsonParser.Value v in arrFilters.entries) { JsonParser.ObjectValue filterJsonOb = (JsonParser.ObjectValue)v; ActorFilter filterOb = new ActorFilter(); bool loadedFilter = filterOb.LoadFromJson(filterJsonOb); if (loadedFilter) { Filters.Add(filterOb); } } hasLoaded = true; } catch (Exception ex) { Logger.WriteLine("Failed to load preset '" + jsonOb + "', exception:" + ex); } return(hasLoaded); }
private void listViewPresetEdit_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) { if (activePreset != null && listViewPresetEdit.SelectedItems.Count == 1) { ActorFilter filterTag = (ActorFilter)listViewPresetEdit.SelectedItems[0].Tag; activePreset.Filters.Remove(filterTag); UpdatePresetFilters(); } } }
private void toolStripMenuItemAddFilter_Click(object sender, EventArgs e) { ActorFilter filterOb = new ActorFilter(); filterOb.Description = "??"; filterOb.Pen = Pens.Gray; filterOb.Mode = GameData.OverlaySettings.DisplayMode.WhenClose; filterOb.MatchType = MemoryLayout.ActorType.Player; filterOb.MatchNpcId = 0; filterOb.UseMatchType = true; filterOb.UseMatchNpcId = false; CreateFilterItem(filterOb); contextMenuStripFilters.Close(); }
private void toolStripMenuItemSelectColor_Click(object sender, EventArgs e) { ActorFilter filterTag = (ActorFilter)contextMenuStripFilters.Tag; colorDialog1.Color = filterTag.Pen.Color; DialogResult dr = colorDialog1.ShowDialog(); if (dr == DialogResult.OK) { filterTag.Pen = new Pen(colorDialog1.Color); } contextMenuStripFilters.Close(); }
private void listViewPresetEdit_DragDrop(object sender, DragEventArgs e) { GameData.ActorItem actor = (GameData.ActorItem)e.Data.GetData(typeof(GameData.ActorItem)); Logger.WriteLine("Filter edit, drop: " + actor); ActorFilter filterOb = new ActorFilter(); filterOb.Description = actor.ShowName; filterOb.Pen = Pens.Gray; filterOb.Mode = GameData.OverlaySettings.DisplayMode.WhenClose; filterOb.MatchType = actor.Type; filterOb.MatchNpcId = actor.NpcId; filterOb.UseMatchType = true; filterOb.UseMatchNpcId = (actor.Type != MemoryLayout.ActorType.Player); CreateFilterItem(filterOb); }
private void UpdateFilterItem(ListViewItem lvi) { ActorFilter filterOb = (ActorFilter)lvi.Tag; lvi.SubItems[0].Text = filterOb.UseMatchNpcId ? filterOb.Description : "(multiple)"; lvi.SubItems[1].Text = filterOb.MatchType.ToString(); lvi.SubItems[2].Text = filterOb.UseMatchNpcId ? "set" : ""; // 3: color switch (filterOb.Mode) { case GameData.OverlaySettings.DisplayMode.WhenClose: lvi.SubItems[4].Text = "Close"; break; case GameData.OverlaySettings.DisplayMode.WhenLookingAt: lvi.SubItems[4].Text = "Look at"; break; case GameData.OverlaySettings.DisplayMode.WhenCloseAndLookingAt: lvi.SubItems[4].Text = "Close & Look at"; break; default: lvi.SubItems[4].Text = filterOb.Mode.ToString(); break; } }
private void listViewPresetEdit_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) { if (e.ColumnIndex != 3) { e.DrawDefault = true; return; } bool isSelected = ((e.ItemState & ListViewItemStates.Selected) == ListViewItemStates.Selected); if (isSelected) { e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds); } ActorFilter filterOb = (ActorFilter)e.Item.Tag; Rectangle rowBounds = e.SubItem.Bounds; int boxSize = rowBounds.Height - 4; Rectangle boxBounds = new Rectangle(rowBounds.Left + ((rowBounds.Width - boxSize) / 2), rowBounds.Top + 2, boxSize, boxSize); e.Graphics.FillRectangle(filterOb.Pen.Brush, boxBounds); e.Graphics.DrawRectangle(Pens.Black, boxBounds); }