From d0ac69697e50de4b6704e2551457de02ce62ede3 Mon Sep 17 00:00:00 2001 From: Anna Date: Sun, 27 Jun 2021 19:49:22 -0400 Subject: [PATCH] feat(housing): add submenu and add to bookmarks function --- RoleplayersToolbox/RoleplayersToolbox.csproj | 2 +- .../Tools/Housing/BookmarksUi.cs | 14 ++++++------- .../Tools/Housing/HousingTool.cs | 21 ++++++++++++++++++- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/RoleplayersToolbox/RoleplayersToolbox.csproj b/RoleplayersToolbox/RoleplayersToolbox.csproj index 4a4ff6c..6de6deb 100755 --- a/RoleplayersToolbox/RoleplayersToolbox.csproj +++ b/RoleplayersToolbox/RoleplayersToolbox.csproj @@ -55,6 +55,6 @@ - + diff --git a/RoleplayersToolbox/Tools/Housing/BookmarksUi.cs b/RoleplayersToolbox/Tools/Housing/BookmarksUi.cs index b36b0ce..2b9821d 100755 --- a/RoleplayersToolbox/Tools/Housing/BookmarksUi.cs +++ b/RoleplayersToolbox/Tools/Housing/BookmarksUi.cs @@ -9,7 +9,7 @@ namespace RoleplayersToolbox.Tools.Housing { private Plugin Plugin { get; } private HousingTool Tool { get; } private HousingConfig Config { get; } - private (Bookmark editing, int index)? _editing; + internal (Bookmark editing, int index)? Editing; internal bool ShouldDraw; @@ -32,7 +32,7 @@ namespace RoleplayersToolbox.Tools.Housing { } if (Util.IconButton(FontAwesomeIcon.Plus)) { - this._editing = (new Bookmark(string.Empty), -1); + this.Editing = (new Bookmark(string.Empty), -1); } var toDelete = -1; @@ -69,7 +69,7 @@ namespace RoleplayersToolbox.Tools.Housing { ImGui.SameLine(); if (Util.IconButton(FontAwesomeIcon.PencilAlt, hash)) { - this._editing = (bookmark.Clone(), i); + this.Editing = (bookmark.Clone(), i); } Util.Tooltip("Edit"); @@ -100,7 +100,7 @@ namespace RoleplayersToolbox.Tools.Housing { } private void AddEditWindow() { - if (this._editing == null) { + if (this.Editing == null) { return; } @@ -109,7 +109,7 @@ namespace RoleplayersToolbox.Tools.Housing { return; } - var (bookmark, index) = this._editing.Value; + var (bookmark, index) = this.Editing.Value; ImGui.InputText("Name", ref bookmark.Name, 255); @@ -165,13 +165,13 @@ namespace RoleplayersToolbox.Tools.Housing { } this.Plugin.SaveConfig(); - this._editing = null; + this.Editing = null; } ImGui.SameLine(); if (ImGui.Button("Cancel")) { - this._editing = null; + this.Editing = null; } ImGui.End(); diff --git a/RoleplayersToolbox/Tools/Housing/HousingTool.cs b/RoleplayersToolbox/Tools/Housing/HousingTool.cs index 57daf3d..2ca953a 100755 --- a/RoleplayersToolbox/Tools/Housing/HousingTool.cs +++ b/RoleplayersToolbox/Tools/Housing/HousingTool.cs @@ -224,7 +224,10 @@ namespace RoleplayersToolbox.Tools.Housing { return; } - args.Items.Add(new NormalContextMenuItem("Select as Destination", this.SelectDestination)); + args.Items.Add(new NormalContextSubMenuItem("Roleplayer's Toolbox", args => { + args.Items.Add(new NormalContextMenuItem("Select as Destination", this.SelectDestination)); + args.Items.Add(new NormalContextMenuItem("Add Bookmark", this.AddBookmark)); + })); } private void SelectDestination(ContextMenuItemSelectedArgs args) { @@ -237,6 +240,22 @@ namespace RoleplayersToolbox.Tools.Housing { this.Destination = InfoExtractor.Extract(listing.Description.TextValue, listing.World.Value.DataCenter.Row, this.Plugin.Interface.Data, this.Info); } + private void AddBookmark(ContextMenuItemSelectedArgs args) { + var listing = this.Plugin.Common.Functions.PartyFinder.CurrentListings.Values.FirstOrDefault(listing => listing.ContentIdLower == args.ContentIdLower); + if (listing == null) { + return; + } + + var dest = InfoExtractor.Extract(listing.Description.TextValue, listing.World.Value.DataCenter.Row, this.Plugin.Interface.Data, this.Info); + this.BookmarksUi.Editing = (new Bookmark(string.Empty) { + WorldId = dest.World?.RowId ?? 0, + Area = dest.Area ?? 0, + Ward = dest.Ward ?? 0, + Plot = dest.Plot ?? 0, + }, -1); + this.BookmarksUi.ShouldDraw = true; + } + private void OnFramework(Framework framework) { this.ClearIfNear(); this.HighlightSelectString();