Пример #1
0
        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;
                        }
                    }
                }
            }
        }
Пример #2
0
        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);
        }
Пример #3
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;
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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();
                }
            }
        }
Пример #6
0
        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();
        }
Пример #7
0
        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();
        }
Пример #8
0
        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);
        }
Пример #9
0
        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;
            }
        }
Пример #10
0
        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);
        }