Skip to content

Commit ad21c11

Browse files
authored
enhancement: Add target context menu item (#2465)
* Add target context menu item. Co-authored-by: Arufonsu <github.com/Arufonsu> * Hide target name in context menu when triggered from target window * Move MouseInputEnabled to initialization * Panda review * whitespace horror
1 parent 63b641f commit ad21c11

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Intersect.Client.Core/Interface/Game/TargetContextMenu.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ namespace Intersect.Client.Interface.Game;
1919
/// </summary>
2020
public sealed partial class TargetContextMenu : Framework.Gwen.Control.Menu
2121
{
22+
private readonly MenuItem _targetNameMenuItem;
2223
private readonly MenuItem _tradeMenuItem;
2324
private readonly MenuItem _partyMenuItem;
2425
private readonly MenuItem _friendMenuItem;
@@ -35,6 +36,10 @@ public TargetContextMenu(Canvas gameCanvas) : base(gameCanvas, nameof(TargetCont
3536

3637
_me = Globals.Me;
3738

39+
_targetNameMenuItem = AddItem(string.Empty);
40+
_targetNameMenuItem.MouseInputEnabled = false;
41+
AddDivider();
42+
3843
_tradeMenuItem = AddItem(Strings.EntityContextMenu.Trade);
3944
_tradeMenuItem.Clicked += tradeRequest_Clicked;
4045

@@ -60,6 +65,8 @@ public void ToggleHidden(object? target)
6065
return;
6166
}
6267

68+
bool shouldShowTargetNameMenuItem = false;
69+
6370
float posX, posY, newX, newY;
6471

6572
switch (target)
@@ -84,12 +91,19 @@ public void ToggleHidden(object? target)
8491
posY = InputHandler.MousePosition.Y;
8592
newX = posX;
8693
newY = posY;
94+
95+
shouldShowTargetNameMenuItem = true;
8796
break;
8897

8998
default:
9099
return;
91100
}
92101

102+
if (_entity == null)
103+
{
104+
return;
105+
}
106+
93107
if (Canvas is { } canvas)
94108
{
95109
if (newX + Width >= canvas.Width)
@@ -103,8 +117,10 @@ public void ToggleHidden(object? target)
103117
}
104118
}
105119

120+
106121
if (IsHidden)
107122
{
123+
TryShowTargetButton(shouldShowTargetNameMenuItem);
108124
TryShowGuildButton();
109125
SizeToChildren();
110126
Open(Pos.None);
@@ -116,6 +132,30 @@ public void ToggleHidden(object? target)
116132
}
117133
}
118134

135+
private void TryShowTargetButton(bool shouldShow)
136+
{
137+
_targetNameMenuItem.SetText(shouldShow ? _entity.Name : string.Empty);
138+
139+
if (shouldShow)
140+
{
141+
var indexOf = Children.IndexOf(_targetNameMenuItem);
142+
143+
if (indexOf > 0)
144+
{
145+
Children.RemoveAt(indexOf);
146+
}
147+
148+
if (indexOf != 0)
149+
{
150+
Children.Insert(0, _targetNameMenuItem);
151+
}
152+
}
153+
else
154+
{
155+
Children.Remove(_targetNameMenuItem);
156+
}
157+
}
158+
119159
void invite_Clicked(Base sender, ClickedEventArgs arguments)
120160
{
121161
if (_me == null || _entity is not Player || _entity == _me)

0 commit comments

Comments
 (0)