Skip to content

Commit 1f1c919

Browse files
committed
stash fixes for 373+ issues
1 parent 58170f4 commit 1f1c919

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+920
-446
lines changed

Intersect.Client.Core/Interface/Debugging/DebugWindow.cs

Lines changed: 51 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@ internal sealed partial class DebugWindow : Window
2121
private readonly GameFont? _defaultFont;
2222
private bool _wasParentDrawDebugOutlinesEnabled;
2323
private bool _drawDebugOutlinesEnabled;
24+
private ComponentStateFilters _componentStateFilters = ComponentStateFilters.IncludeMouseInputDisabled;
2425

2526
public DebugWindow(Base parent) : base(parent, Strings.Debug.Title, false, nameof(DebugWindow))
2627
{
2728
_generators = [];
29+
2830
DisableResizing();
2931
MinimumSize = new Point(320, 320);
3032
Size = new Point(400, 600);
@@ -39,6 +41,7 @@ public DebugWindow(Base parent) : base(parent, Strings.Debug.Title, false, nameo
3941
TabInfo = Tabs.AddPage(Strings.Debug.TabLabelInfo, nameof(TabInfo));
4042
CheckboxDrawDebugOutlines = CreateInfoCheckboxDrawDebugOutlines(TabInfo.Page);
4143
CheckboxEnableLayoutHotReloading = CreateInfoCheckboxEnableLayoutHotReloading(TabInfo.Page);
44+
CheckboxIncludeTextNodesInHover = CreateInfoCheckboxIncludeTextNodesInHover(TabInfo.Page);
4245
ButtonShutdownServer = CreateInfoButtonShutdownServer(TabInfo.Page);
4346
ButtonShutdownServerAndExit = CreateInfoButtonShutdownServerAndExit(TabInfo.Page);
4447
TableDebugStats = CreateInfoTableDebugStats(TabInfo.Page);
@@ -144,6 +147,8 @@ private Button CreateAssetsButtonReloadAsset(Table table, SearchableTree assetLi
144147

145148
private LabeledCheckBox CheckboxEnableLayoutHotReloading { get; }
146149

150+
private LabeledCheckBox CheckboxIncludeTextNodesInHover { get; }
151+
147152
private Button ButtonShutdownServer { get; }
148153

149154
private Button ButtonShutdownServerAndExit { get; }
@@ -237,14 +242,39 @@ private LabeledCheckBox CreateInfoCheckboxEnableLayoutHotReloading(Base parent)
237242
TextColorOverride = Color.Yellow,
238243
};
239244

240-
checkbox.CheckChanged += (sender, args) => Globals.ContentManager.ContentWatcher.Enabled = checkbox.IsChecked;
245+
checkbox.CheckChanged += (_, _) => Globals.ContentManager.ContentWatcher.Enabled = checkbox.IsChecked;
241246

242247
checkbox.SetToolTipText(Strings.Internals.ExperimentalFeatureTooltip);
243248
checkbox.TooltipFont = Skin.DefaultFont;
244249

245250
return checkbox;
246251
}
247252

253+
private LabeledCheckBox CreateInfoCheckboxIncludeTextNodesInHover(Base parent)
254+
{
255+
var checkbox = new LabeledCheckBox(parent, nameof(CheckboxIncludeTextNodesInHover))
256+
{
257+
Dock = Pos.Top,
258+
Font = _defaultFont,
259+
IsChecked = _componentStateFilters.HasFlag(ComponentStateFilters.IncludeText),
260+
Text = Strings.Debug.IncludeTextNodesInHover,
261+
};
262+
263+
checkbox.CheckChanged += (_, _) =>
264+
{
265+
if (_componentStateFilters.HasFlag(ComponentStateFilters.IncludeText))
266+
{
267+
_componentStateFilters &= ~ComponentStateFilters.IncludeText;
268+
}
269+
else
270+
{
271+
_componentStateFilters |= ComponentStateFilters.IncludeText;
272+
}
273+
};
274+
275+
return checkbox;
276+
}
277+
248278
private Button CreateInfoButtonShutdownServer(Base parent)
249279
{
250280
var button = new Button(parent, nameof(ButtonShutdownServer))
@@ -255,7 +285,7 @@ private Button CreateInfoButtonShutdownServer(Base parent)
255285
Text = Strings.Debug.ShutdownServer,
256286
};
257287

258-
button.Clicked += (sender, args) =>
288+
button.Clicked += (_, _) =>
259289
{
260290
// TODO: Implement
261291
};
@@ -273,7 +303,7 @@ private Button CreateInfoButtonShutdownServerAndExit(Base parent)
273303
Text = Strings.Debug.ShutdownServerAndExit,
274304
};
275305

276-
button.Clicked += (sender, args) =>
306+
button.Clicked += (_, _) =>
277307
{
278308
// TODO: Implement
279309
};
@@ -399,12 +429,13 @@ private Table CreateInfoTableDebugStats(Base parent)
399429
table.AddRow(Strings.Internals.Color, name: "ColorRow").Listen(controlUnderCursorProvider, 4);
400430
table.AddRow(Strings.Internals.ColorOverride, name: "ColorOverrideRow").Listen(controlUnderCursorProvider, 5);
401431
table.AddRow(Strings.Internals.InnerBounds, name: "InnerBoundsRow").Listen(controlUnderCursorProvider, 6);
402-
table.AddRow(Strings.Internals.Margin, name: "MarginRow").Listen(controlUnderCursorProvider, 7);
403-
table.AddRow(Strings.Internals.Padding, name: "PaddingRow").Listen(controlUnderCursorProvider, 8);
404-
table.AddRow(Strings.Internals.Dock, name: "Dock").Listen(controlUnderCursorProvider, 9);
405-
table.AddRow(Strings.Internals.Alignment, name: "Alignment").Listen(controlUnderCursorProvider, 10);
406-
table.AddRow(Strings.Internals.TextAlign, name: "TextAlign").Listen(controlUnderCursorProvider, 11);
407-
table.AddRow(Strings.Internals.TextPadding, name: "TextPadding").Listen(controlUnderCursorProvider, 12);
432+
table.AddRow(Strings.Internals.OuterBounds, name: "OuterBounds").Listen(controlUnderCursorProvider, 7);
433+
table.AddRow(Strings.Internals.Margin, name: "MarginRow").Listen(controlUnderCursorProvider, 8);
434+
table.AddRow(Strings.Internals.Padding, name: "PaddingRow").Listen(controlUnderCursorProvider, 9);
435+
table.AddRow(Strings.Internals.Dock, name: "Dock").Listen(controlUnderCursorProvider, 10);
436+
table.AddRow(Strings.Internals.Alignment, name: "Alignment").Listen(controlUnderCursorProvider, 11);
437+
table.AddRow(Strings.Internals.Alignment, name: "Alignment").Listen(controlUnderCursorProvider, 11);
438+
table.AddRow(Strings.Internals.TextAlign, name: "TextAlign").Listen(controlUnderCursorProvider, 12);
408439
table.AddRow(Strings.Internals.Font, name: "Font").Listen(controlUnderCursorProvider, 13);
409440
table.AddRow(Strings.Internals.AutoSizeToContents, name: "AutoSizeToContents").Listen(controlUnderCursorProvider, 14);
410441
_generators.Add(controlUnderCursorProvider.Generator);
@@ -425,9 +456,9 @@ private Table CreateInfoTableDebugStats(Base parent)
425456

426457
private partial class ControlUnderCursorProvider : ITableDataProvider
427458
{
428-
private readonly Base _owner;
459+
private readonly DebugWindow _owner;
429460

430-
public ControlUnderCursorProvider(Base owner)
461+
public ControlUnderCursorProvider(DebugWindow owner)
431462
{
432463
_owner = owner;
433464
Generator = new CancellableGenerator<Base?>(CreateControlUnderCursorGenerator);
@@ -465,8 +496,7 @@ private async Task WaitForOwnerVisible(CancellationToken cancellationToken)
465496
cancellationToken.ThrowIfCancellationRequested();
466497
}
467498

468-
private static Base? CreateValue(Task _) =>
469-
Interface.FindComponentUnderCursor(ComponentStateFilters.IncludeMouseInputDisabled);
499+
private Base? CreateValue(Task _) => Interface.FindComponentUnderCursor(_owner._componentStateFilters);
470500

471501
private void HandleValue(Base? component)
472502
{
@@ -515,29 +545,29 @@ private void HandleValue(Base? component)
515545
);
516546
DataChanged?.Invoke(
517547
this,
518-
new TableDataChangedEventArgs(7, 1, default, component?.Margin.ToString() ?? string.Empty)
548+
new TableDataChangedEventArgs(7, 1, default, component?.OuterBounds.ToString() ?? string.Empty)
519549
);
520550
DataChanged?.Invoke(
521551
this,
522-
new TableDataChangedEventArgs(8, 1, default, component?.Padding.ToString() ?? string.Empty)
552+
new TableDataChangedEventArgs(8, 1, default, component?.Margin.ToString() ?? string.Empty)
523553
);
524554
DataChanged?.Invoke(
525555
this,
526-
new TableDataChangedEventArgs(9, 1, default, component?.Dock.ToString() ?? string.Empty)
556+
new TableDataChangedEventArgs(9, 1, default, component?.Padding.ToString() ?? string.Empty)
527557
);
528558
DataChanged?.Invoke(
529559
this,
530-
new TableDataChangedEventArgs(10, 1, default, string.Join(", ", component?.Alignment ?? []))
560+
new TableDataChangedEventArgs(10, 1, default, component?.Dock.ToString() ?? string.Empty)
531561
);
532-
533-
var label = component as Label;
534562
DataChanged?.Invoke(
535563
this,
536-
new TableDataChangedEventArgs(11, 1, default, label?.TextAlign.ToString() ?? string.Empty)
564+
new TableDataChangedEventArgs(11, 1, default, string.Join(", ", component?.Alignment ?? []))
537565
);
566+
567+
var label = component as Label;
538568
DataChanged?.Invoke(
539569
this,
540-
new TableDataChangedEventArgs(12, 1, default, label?.TextPadding.ToString() ?? string.Empty)
570+
new TableDataChangedEventArgs(12, 1, default, label?.TextAlign.ToString() ?? string.Empty)
541571
);
542572
DataChanged?.Invoke(
543573
this,

Intersect.Client.Core/Interface/Game/Hotbar/HotBar.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ public HotBarWindow(Canvas gameCanvas)
2222
{
2323
HotbarWindow = new ImagePanel(gameCanvas, "HotbarWindow")
2424
{
25-
AlignmentDistance = new Padding { Top = 4, Right = 4 },
25+
AlignmentPadding = new Padding { Top = 4, Right = 4 },
2626
Alignment = [Alignments.Top, Alignments.Right],
27+
Padding = Padding.Four,
2728
RestrictToParent = true,
2829
TextureFilename = "hotbar.png",
2930
TextureNinePatchMargin = Margin.Three,
@@ -36,7 +37,7 @@ public HotBarWindow(Canvas gameCanvas)
3637
}
3738

3839
InitHotbarItems();
39-
HotbarWindow.LoadJsonUi(GameContentManager.UI.InGame, Graphics.Renderer.GetResolutionString());
40+
// HotbarWindow.LoadJsonUi(GameContentManager.UI.InGame, Graphics.Renderer.GetResolutionString());
4041

4142
HotbarWindow.SizeToChildren();
4243
}

Intersect.Client.Core/Interface/Game/Hotbar/HotbarItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public HotbarItem(int hotbarSlotIndex, Base hotbarWindow)
6565
Y = 4 + row * 40,
6666
Width = 36,
6767
Height = 36,
68-
TextureFilename = "hotbaritem.png",
6968
Margin = Margin.Four,
69+
TextureFilename = "hotbaritem.png",
7070
};
7171

7272
// Content Panel is layered on top of the container (shows the Item or Spell Icon).
Lines changed: 66 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using Intersect.Client.Core;
22
using Intersect.Client.Framework.File_Management;
3+
using Intersect.Client.Framework.Graphics;
4+
using Intersect.Client.Framework.Gwen;
35
using Intersect.Client.Framework.Gwen.Control;
46
using Intersect.Client.Framework.Gwen.Control.EventArguments;
57
using Intersect.Client.Localization;
@@ -8,32 +10,62 @@
810

911
namespace Intersect.Client.Interface.Menu;
1012

11-
public partial class CreditsWindow : ImagePanel, IMainMenuWindow
13+
public partial class CreditsWindow : Window, IMainMenuWindow
1214
{
13-
private readonly MainMenu _mainMenu;
14-
private readonly RichLabel _richLabel;
15+
private readonly GameFont? _defaultFont;
1516

16-
public CreditsWindow(Canvas parent, MainMenu mainMenu) : base(parent, "CreditsWindow")
17+
private readonly MainMenu _mainMenu;
18+
private readonly RichLabel _credits;
19+
private readonly Button _backButton;
20+
private readonly ScrollControl _creditsScroller;
21+
22+
public CreditsWindow(Canvas parent, MainMenu mainMenu) : base(
23+
parent,
24+
title: Strings.Credits.Title,
25+
modal: false,
26+
name: nameof(CreditsWindow)
27+
)
1728
{
1829
_mainMenu = mainMenu;
1930

20-
_ = new Label(this, "CreditsHeader")
31+
Alignment = [Alignments.Center];
32+
MinimumSize = new Point(x: 640, y: 400);
33+
IsResizable = false;
34+
IsClosable = false;
35+
36+
Titlebar.MouseInputEnabled = false;
37+
38+
TitleLabel.FontSize = 14;
39+
TitleLabel.TextColorOverride = Color.White;
40+
41+
_defaultFont = GameContentManager.Current.GetFont(name: TitleLabel.FontName, 12);
42+
43+
_creditsScroller = new ScrollControl(this, nameof(_creditsScroller))
2144
{
22-
Text = Strings.Credits.Title,
45+
Dock = Pos.Fill,
2346
};
47+
_creditsScroller.EnableScroll(false, true);
2448

25-
var creditsContent = new ScrollControl(this, "CreditsScrollview");
26-
creditsContent.EnableScroll(false, true);
27-
28-
_richLabel = new RichLabel(creditsContent, "CreditsLabel");
49+
_credits = new RichLabel(_creditsScroller, nameof(_credits))
50+
{
51+
Dock = Pos.Fill,
52+
Font = _defaultFont,
53+
Padding = new Padding(16),
54+
};
2955

30-
var btnBack = new Button(this, "BackButton")
56+
_backButton = new Button(this, nameof(_backButton))
3157
{
58+
Alignment = [Alignments.CenterH],
59+
AutoSizeToContents = true,
60+
Dock = Pos.Bottom | Pos.CenterH,
61+
Font = _defaultFont,
62+
Margin = new Margin(0, 8),
63+
Padding = new Padding(8, 4),
3264
Text = Strings.Credits.Back,
3365
};
34-
btnBack.Clicked += BackBtn_Clicked;
66+
_backButton.Clicked += BackBtn_Clicked;
3567

36-
LoadJsonUi(GameContentManager.UI.Menu, Graphics.Renderer?.GetResolutionString());
68+
// LoadJsonUi(GameContentManager.UI.Menu, Graphics.Renderer?.GetResolutionString());
3769
}
3870

3971
private void BackBtn_Clicked(Base sender, MouseButtonState arguments)
@@ -42,10 +74,19 @@ private void BackBtn_Clicked(Base sender, MouseButtonState arguments)
4274
_mainMenu.Show();
4375
}
4476

45-
public override void Show()
77+
protected override void RecurseLayout(Framework.Gwen.Skin.Base skin)
4678
{
47-
base.Show();
48-
_richLabel.ClearText();
79+
base.RecurseLayout(skin);
80+
}
81+
82+
protected override void EnsureInitialized()
83+
{
84+
if (_credits.FormattedLabels.Count > 0)
85+
{
86+
return;
87+
}
88+
89+
_credits.ClearText();
4990
var credits = new Credits();
5091
var creditsFile = Path.Combine(ClientConfiguration.ResourcesDirectory, "credits.json");
5192

@@ -71,28 +112,26 @@ public override void Show()
71112

72113
foreach (var line in credits?.Lines ?? [])
73114
{
74-
if (line.Text.Trim().Length == 0)
115+
var lineText = line.Text.Trim();
116+
if (lineText.Length > 0)
75117
{
76-
_richLabel.AddLineBreak();
77-
}
78-
else
79-
{
80-
_richLabel.AddText(
81-
line.Text,
118+
var lineFont = GameContentManager.Current.GetFont(line.Font, line.Size);
119+
_credits.AddText(
120+
lineText,
82121
new Color(
83122
line.TextColor?.A ?? 255,
84123
line.TextColor?.R ?? 255,
85124
line.TextColor?.G ?? 255,
86125
line.TextColor?.B ?? 255
87126
),
88127
line.GetAlignment(),
89-
GameContentManager.Current.GetFont(line.Font, line.Size)
128+
lineFont
90129
);
91-
92-
_richLabel.AddLineBreak();
93130
}
131+
132+
_credits.AddLineBreak();
94133
}
95134

96-
_ = _richLabel.SizeToChildren(false, true);
135+
_ = _credits.SizeToChildren(false, true);
97136
}
98137
}

Intersect.Client.Core/Interface/Menu/LoginWindow.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,16 @@ public LoginWindow(Canvas parent, MainMenu mainMenu) : base(parent, "LoginWindow
5959
AutoSizeToContents = false,
6060
Dock = Pos.Left,
6161
Font = _defaultFont,
62+
Padding = new Padding(0, 0, 10, 0),
6263
Text = Strings.LoginWindow.Username,
6364
TextAlign = Pos.Right | Pos.CenterV,
64-
TextPadding = new Padding(0, 0, 10, 0),
6565
};
6666
_usernameInput = new TextBox(_usernamePanel, nameof(_usernameInput))
6767
{
6868
Dock = Pos.Fill,
6969
Font = _defaultFont,
70+
Padding = new Padding(2, 0),
7071
TextAlign = Pos.Left | Pos.CenterV,
71-
TextPadding = new Padding(2, 0),
7272
};
7373
_usernameInput.SubmitPressed += (s, e) => TryLogin();
7474
_usernameInput.Clicked += UsernameInputClicked;
@@ -90,16 +90,16 @@ public LoginWindow(Canvas parent, MainMenu mainMenu) : base(parent, "LoginWindow
9090
AutoSizeToContents = false,
9191
Dock = Pos.Left,
9292
Font = _defaultFont,
93+
Padding = new Padding(0, 0, 10, 0),
9394
Text = Strings.LoginWindow.Password,
9495
TextAlign = Pos.Right | Pos.CenterV,
95-
TextPadding = new Padding(0, 0, 10, 0),
9696
};
9797
_passwordInput = new TextBoxPassword(_passwordPanel, nameof(_passwordInput))
9898
{
9999
Dock = Pos.Fill,
100100
Font = _defaultFont,
101+
Padding = new Padding(2, 0),
101102
TextAlign = Pos.Left | Pos.CenterV,
102-
TextPadding = new Padding(2, 0),
103103
};
104104
_passwordInput.SubmitPressed += (s, e) => TryLogin();
105105
_passwordInput.TextChanged += PasswordInputTextChanged;

Intersect.Client.Core/Interface/Menu/MainMenu.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,14 @@ public MainMenu(Canvas menuCanvas) : base(menuCanvas)
5252
_createCharacterWindow = new CreateCharacterWindow(_menuCanvas, this, SelectCharacterWindow);
5353
_settingsWindow = new SettingsWindow(_menuCanvas, this, null)
5454
{
55-
AlignmentDistance = new Padding(0, 100, 0, 0),
55+
AlignmentTranslation = new Point(0, 140),
56+
IsVisible = false,
57+
};
58+
_creditsWindow = new CreditsWindow(_menuCanvas, this)
59+
{
60+
AlignmentTranslation = new Point(0, 140),
5661
IsVisible = false,
5762
};
58-
_creditsWindow = new CreditsWindow(_menuCanvas, this);
5963
}
6064

6165
~MainMenu()

0 commit comments

Comments
 (0)