diff --git a/package/Resources/Binaries/ClientUpdater.dll b/package/Resources/Binaries/ClientUpdater.dll
index 711f09fac..5baa99a60 100644
Binary files a/package/Resources/Binaries/ClientUpdater.dll and b/package/Resources/Binaries/ClientUpdater.dll differ
diff --git a/package/Resources/Binaries/ClientUpdater.pdb b/package/Resources/Binaries/ClientUpdater.pdb
index a4a20bdda..353d25365 100644
Binary files a/package/Resources/Binaries/ClientUpdater.pdb and b/package/Resources/Binaries/ClientUpdater.pdb differ
diff --git a/package/Resources/Binaries/Cyotek.Drawing.BitmapFont.dll b/package/Resources/Binaries/Cyotek.Drawing.BitmapFont.dll
new file mode 100644
index 000000000..63d202477
Binary files /dev/null and b/package/Resources/Binaries/Cyotek.Drawing.BitmapFont.dll differ
diff --git a/package/Resources/Binaries/FontStashSharp.Base.dll b/package/Resources/Binaries/FontStashSharp.Base.dll
new file mode 100644
index 000000000..ed11441f7
Binary files /dev/null and b/package/Resources/Binaries/FontStashSharp.Base.dll differ
diff --git a/package/Resources/Binaries/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll b/package/Resources/Binaries/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll
new file mode 100644
index 000000000..e7a38015c
Binary files /dev/null and b/package/Resources/Binaries/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll differ
diff --git a/package/Resources/Binaries/FontStashSharp.TextShapers.HarfBuzz.dll b/package/Resources/Binaries/FontStashSharp.TextShapers.HarfBuzz.dll
new file mode 100644
index 000000000..3a24a6b6e
Binary files /dev/null and b/package/Resources/Binaries/FontStashSharp.TextShapers.HarfBuzz.dll differ
diff --git a/package/Resources/Binaries/HarfBuzzSharp.dll b/package/Resources/Binaries/HarfBuzzSharp.dll
new file mode 100644
index 000000000..3c930dbab
Binary files /dev/null and b/package/Resources/Binaries/HarfBuzzSharp.dll differ
diff --git a/package/Resources/Binaries/Microsoft.Bcl.HashCode.dll b/package/Resources/Binaries/Microsoft.Bcl.HashCode.dll
new file mode 100644
index 000000000..7028cb752
Binary files /dev/null and b/package/Resources/Binaries/Microsoft.Bcl.HashCode.dll differ
diff --git a/package/Resources/Binaries/OpenGL/ClientCore.dll b/package/Resources/Binaries/OpenGL/ClientCore.dll
index 83f3c70e6..7733ffc5d 100644
Binary files a/package/Resources/Binaries/OpenGL/ClientCore.dll and b/package/Resources/Binaries/OpenGL/ClientCore.dll differ
diff --git a/package/Resources/Binaries/OpenGL/ClientCore.pdb b/package/Resources/Binaries/OpenGL/ClientCore.pdb
index 1bb44cb73..a6fbed034 100644
Binary files a/package/Resources/Binaries/OpenGL/ClientCore.pdb and b/package/Resources/Binaries/OpenGL/ClientCore.pdb differ
diff --git a/package/Resources/Binaries/OpenGL/ClientGUI.dll b/package/Resources/Binaries/OpenGL/ClientGUI.dll
index 71858d98d..0db8c5dc7 100644
Binary files a/package/Resources/Binaries/OpenGL/ClientGUI.dll and b/package/Resources/Binaries/OpenGL/ClientGUI.dll differ
diff --git a/package/Resources/Binaries/OpenGL/ClientGUI.pdb b/package/Resources/Binaries/OpenGL/ClientGUI.pdb
index 1739a2acc..de54d66fd 100644
Binary files a/package/Resources/Binaries/OpenGL/ClientGUI.pdb and b/package/Resources/Binaries/OpenGL/ClientGUI.pdb differ
diff --git a/package/Resources/Binaries/OpenGL/FontStashSharp.MonoGame.dll b/package/Resources/Binaries/OpenGL/FontStashSharp.MonoGame.dll
new file mode 100644
index 000000000..d075ee17f
Binary files /dev/null and b/package/Resources/Binaries/OpenGL/FontStashSharp.MonoGame.dll differ
diff --git a/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.dll b/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.dll
index 70d7f4fda..46e9fb330 100644
Binary files a/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.dll and b/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.dll differ
diff --git a/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.pdb b/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.pdb
index 2321b52a1..a804f5723 100644
Binary files a/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.pdb and b/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.pdb differ
diff --git a/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.xml b/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.xml
index 0fe6301d4..37ef56ada 100644
--- a/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.xml
+++ b/package/Resources/Binaries/OpenGL/Rampastring.XNAUI.WindowsGL.xml
@@ -171,11 +171,6 @@
Plays this sound if it's enabled.
-
-
- Disposes the sound effect.
-
-
Updates the priority of the sound. Returns true if the sound effect is
@@ -184,6 +179,228 @@
Tells how much time has passed since the previous frame.
True if the sound effect is still playing, otherwise false.
+
+
+ Sets the root directory for the ContentManager with XNA vs MonoGame differences.
+
+ The ContentManager instance.
+ The new root directory path.
+
+
+
+ Extension methods for .
+
+
+
+
+ Returns a substring of this string starting at and containing at most
+ UTF-16 code units, ensuring the result does not end with an orphaned high surrogate.
+
+ The string to slice.
+ The zero-based start index of the substring.
+ Maximum number of UTF-16 code units to include in the result. Must be non-negative.
+ The safe substring.
+
+
+
+ Manages font loading and rendering for the UI system.
+ Supports both SpriteFont and TrueType fonts with automatic fallback.
+
+
+
+ For TrueType fonts, FontManager creates a separate FontSystem for each font index.
+ Each FontSystem has a primary font (specified via Path) and optional per-font fallback
+ chain (via Fallback=N pointing to another font index). When a character is not found in
+ the primary font, it falls back through the chain in order.
+
+
+ The Fonts.ini file format supports:
+
+ - [TextShaping] - Optional HarfBuzz text shaping configuration
+ - [Fonts] - Font index definitions with Size, Type, optional Path, and optional Fallback
+
+
+
+
+
+
+ When set before runs, skips the Fonts.ini search and
+ loads only legacy SpriteFontN.xnb assets. Lets clients offer an opt-out from
+ TrueType rendering.
+
+
+
+
+ Gets the current text shaping settings.
+
+
+
+
+ Gets the current font rendering settings.
+
+
+
+
+ Checks if text shaping is currently enabled.
+
+
+
+
+ Creates a new FontSystem with current text shaping settings.
+
+
+
+
+ Loads fonts from the first Fonts.ini found in asset search paths.
+
+
+
+ Loading happens in two phases:
+
+
+ Phase 1: Load configuration from the first Fonts.ini:
+ - [TextShaping] settings
+ - [Fonts] definitions (type, path, size, fallback)
+
+
+ Phase 2: Create font indexes:
+ - For TrueType fonts: Create a FontSystem with primary font first, then follow the per-font fallback chain
+ - For SpriteFonts: Load the .xnb file
+
+
+
+ When non-null, overrides any FontResolutionFactor from [FontRendering]
+ in Fonts.ini. Used by to keep TTF
+ glyphs sharp when the render target is upscaled.
+
+
+
+
+ Loads fonts from a specific Fonts.ini file.
+
+
+
+
+ Creates FontIndex entries from a Fonts.ini file.
+ For each TrueType font, creates a separate FontSystem with the primary font first,
+ then follows the per-font fallback chain to add additional fonts.
+
+
+
+
+ Creates a TrueType font index with its own FontSystem.
+ The FontSystem contains the primary font first, then fonts from
+ the fallback chain (each [FontN] can point to another via Fallback=X).
+
+
+
+
+ Loads a SpriteFont and adds it to the font list.
+
+
+
+
+ Loads legacy SpriteFonts (SpriteFont0, SpriteFont1, etc.) from a search path.
+ This method appends new fonts to the existing font list instead of replacing it.
+
+
+
+
+ Configuration for FontStashSharp glyph rasterization.
+
+
+
+
+ Horizontal blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelWidth. Must be non-negative.
+
+
+
+
+ Vertical blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelHeight. Must be non-negative.
+
+
+
+
+ Multiplier applied to the rasterization size of each glyph.
+ Values > 1 produce sharper output when text is drawn at scales above 1.0
+ at the cost of a larger atlas footprint.
+
+
+
+
+ Width of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ Height of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ How rasterized glyph pixels are produced.
+ matches a premultiplied-alpha SpriteBatch,
+ matches AlphaBlend, and
+ produces hard 1-bit edges for pixel-art fonts.
+
+
+
+
+ Configuration for HarfBuzz text shaping.
+ Text shaping is required for complex scripts (Arabic, Hebrew, Hindi, etc.)
+ and proper rendering of emoji sequences and ligatures.
+
+
+
+
+ Enable HarfBuzz text shaping for complex scripts.
+ When enabled, text will be properly shaped for languages that require it.
+
+
+
+
+ Enable bidirectional text support for mixed LTR/RTL text.
+ Only applies when Enabled is true.
+
+
+
+
+ Size of the shaped text cache.
+ Higher values use more memory but reduce shaping overhead for repeated text.
+ Default: 100
+
+
+
+
+ Returns the value V to plug into (controlHeight - V) / 2 for
+ vertical centering. NOT a geometric height: this is top + bottom of the
+ cap glyph 'H' from the draw origin (i.e. minY + maxY from FontStashSharp's
+ TextBounds), chosen so the cap-glyph midpoint lands at controlHeight / 2
+ independent of descenders. The geometric glyph height would be maxY - minY.
+
+
+
+
+ For TTF fonts, this always returns true because FontStashSharp can dynamically
+ generate glyphs for any character. If a glyph is not available in the font file,
+ a replacement glyph (like � or ?) will be rendered instead.
+
+
+
+
+ Returns a sanitized string safe for rendering. It replaces unpaired surrogates
+ with U+FFFD so FontStashSharp's UTF-16 -> UTF-32 conversion does not throw.
+
+
+
+
+ Replaces unpaired UTF-16 surrogates with U+FFFD. Returns the original
+ string reference unchanged when the input is already valid (the common case),
+ to avoid allocations on the rendering hot path.
+
+
The exception that is thrown when the fails to find a matching
@@ -369,17 +586,13 @@
Allows the user to close the game form by Alt-F4.
-
+
- Provides static methods for drawing.
+ Reloads fonts with a new resolution factor matching the given scale ratio,
+ so TTF glyphs are rasterized at native display quality rather than being
+ scaled up from the render resolution.
-
-
- Clears all potentially existing loaded fonts and then loads fonts from asset loader directories.
-
- A XNA/MonoGame ContentManager instance.
-
Allows direct access to the list of loaded fonts.
@@ -387,16 +600,15 @@
- Returns a version of the given string where all characters that don't
- appear in the given font have been replaced with question marks.
+ Returns a version of the given string that the font renderer can safely display without crashing.
The string.
The index of the font.
- Returns a that has had its width limited to a specific number.
- Characters that'd cross over the width have been cut.
+ Returns a string that has had its width limited to a specific number.
+ Characters that would cross over the width have been cut.
The string to limit.
The index of the font to use.
@@ -664,6 +876,12 @@
The control, of the highest generation, that the mouse cursor is currently positioned on.
+
+
+ If specified, the control blocks other controls on the screen
+ from being interacted with. Defaults to null.
+
+
Sets the rendering (back buffer) resolution of the game.
@@ -1125,18 +1343,39 @@
Raised when the mouse cursor enters the control's area.
+
+
+ Raised during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the left mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the right mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the middle mouse button is pressed down while the
@@ -1158,6 +1397,20 @@
Raised each frame when the mouse cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll vertically.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll horizontally.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the scroll wheel is used to scroll vertically
@@ -1170,6 +1423,13 @@
while the cursor is inside the control.
+
+
+ Raised during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the left mouse button is clicked (pressed and released)
@@ -1182,12 +1442,26 @@
time-frame while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the right mouse button is clicked (pressed and released)
while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the middle mouse button is clicked (pressed and released)
@@ -1727,45 +2001,87 @@
Called when the mouse cursor leaves the control's client rectangle.
+
+
+ Called during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the left mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the right mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the middle mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked on the control's client rectangle.
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked twice on the control's client rectangle.
+
+
+ Called during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the right mouse button has been
+ Called when the right mouse button has been
clicked on the control's client rectangle.
+
+
+ Called during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the middle mouse button has been
+ Called when the middle mouse button has been
clicked on the control's client rectangle.
@@ -1780,9 +2096,23 @@
client rectangle.
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled vertically.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled horizontally.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the scroll wheel has been scrolled on the
+ Called when the scroll wheel has been scrolled on the
control's client rectangle.
@@ -1859,6 +2189,41 @@
If set, the drop-down is opened upwards rather than downwards.
+
+
+ When the selected item's text is too wide for the closed control, it is always
+ cut off at the last fully fitting character so it does not visually overrun the
+ control's bounds. If this property is enabled, an ellipsis ("...") is appended
+ to indicate that the text has been truncated.
+
+
+
+
+ The width of the open dropdown list. Computed in as the
+ maximum of and the widest item's content width, so
+ wide items remain fully visible when the list is expanded.
+
+
+
+
+ Stores the control width used when the dropdown is closed so it can be restored
+ after the expanded list has temporarily widened the control. Null when no closed
+ width has been captured yet, so a legitimate of 0
+ is preserved instead of being treated as "not captured".
+
+
+
+
+ Ensures the framework-visible control width matches the actual visible dropdown
+ width while the list is open, and restores the original width when the list closes.
+
+
+
+
+ Current visible width of the control, accounting for whether the dropdown list
+ is open and may be wider than the closed-state .
+
+
Adds an item into the drop-down.
@@ -1898,6 +2263,18 @@
Returns the index of the item that the cursor currently points to.
+
+
+ Invalidates the cached display text.
+
+
+
+
+ Gets the display text for the selected item, fitted to the control's bounds so
+ it does not visually overrun the control. Appends an ellipsis to indicate
+ truncation when is enabled.
+
+
Draws the drop-down.
diff --git a/package/Resources/Binaries/OpenMcdf.dll b/package/Resources/Binaries/OpenMcdf.dll
index 0fb14ffc5..ecab31496 100644
Binary files a/package/Resources/Binaries/OpenMcdf.dll and b/package/Resources/Binaries/OpenMcdf.dll differ
diff --git a/package/Resources/Binaries/Rampastring.Tools.dll b/package/Resources/Binaries/Rampastring.Tools.dll
index 3a0e01313..c2d6b3d23 100644
Binary files a/package/Resources/Binaries/Rampastring.Tools.dll and b/package/Resources/Binaries/Rampastring.Tools.dll differ
diff --git a/package/Resources/Binaries/Rampastring.Tools.pdb b/package/Resources/Binaries/Rampastring.Tools.pdb
index 39c5cf9f7..884787b6f 100644
Binary files a/package/Resources/Binaries/Rampastring.Tools.pdb and b/package/Resources/Binaries/Rampastring.Tools.pdb differ
diff --git a/package/Resources/Binaries/Rampastring.Tools.xml b/package/Resources/Binaries/Rampastring.Tools.xml
index ac4f89e73..0cc4b8e30 100644
--- a/package/Resources/Binaries/Rampastring.Tools.xml
+++ b/package/Resources/Binaries/Rampastring.Tools.xml
@@ -267,6 +267,14 @@
The first INI file.
The second INI file.
+
+
+ Gets or sets a value that determines whether reading from or writing to a file
+ named "desktop.ini" (in any directory) is forbidden. When set to ,
+ any such attempt throws an .
+ Defaults to .
+
+
Creates a new INI file instance.
diff --git a/package/Resources/Binaries/StbImageSharp.dll b/package/Resources/Binaries/StbImageSharp.dll
new file mode 100644
index 000000000..deae52a33
Binary files /dev/null and b/package/Resources/Binaries/StbImageSharp.dll differ
diff --git a/package/Resources/Binaries/StbTrueTypeSharp.dll b/package/Resources/Binaries/StbTrueTypeSharp.dll
new file mode 100644
index 000000000..41fe0c797
Binary files /dev/null and b/package/Resources/Binaries/StbTrueTypeSharp.dll differ
diff --git a/package/Resources/Binaries/OpenGL/Ude.NetStandard.dll b/package/Resources/Binaries/Ude.NetStandard.dll
similarity index 100%
rename from package/Resources/Binaries/OpenGL/Ude.NetStandard.dll
rename to package/Resources/Binaries/Ude.NetStandard.dll
diff --git a/package/Resources/Binaries/Updater/Rampastring.Tools.dll b/package/Resources/Binaries/Updater/Rampastring.Tools.dll
index a0c6c1ee1..744302ef3 100644
Binary files a/package/Resources/Binaries/Updater/Rampastring.Tools.dll and b/package/Resources/Binaries/Updater/Rampastring.Tools.dll differ
diff --git a/package/Resources/Binaries/Updater/Rampastring.Tools.pdb b/package/Resources/Binaries/Updater/Rampastring.Tools.pdb
index 4c24d43cc..622bc4a37 100644
Binary files a/package/Resources/Binaries/Updater/Rampastring.Tools.pdb and b/package/Resources/Binaries/Updater/Rampastring.Tools.pdb differ
diff --git a/package/Resources/Binaries/Updater/Rampastring.Tools.xml b/package/Resources/Binaries/Updater/Rampastring.Tools.xml
index ac4f89e73..0cc4b8e30 100644
--- a/package/Resources/Binaries/Updater/Rampastring.Tools.xml
+++ b/package/Resources/Binaries/Updater/Rampastring.Tools.xml
@@ -267,6 +267,14 @@
The first INI file.
The second INI file.
+
+
+ Gets or sets a value that determines whether reading from or writing to a file
+ named "desktop.ini" (in any directory) is forbidden. When set to ,
+ any such attempt throws an .
+ Defaults to .
+
+
Creates a new INI file instance.
diff --git a/package/Resources/Binaries/Updater/SecondStageUpdater.exe b/package/Resources/Binaries/Updater/SecondStageUpdater.exe
index 91ec9ff3d..5dd7a64ff 100755
Binary files a/package/Resources/Binaries/Updater/SecondStageUpdater.exe and b/package/Resources/Binaries/Updater/SecondStageUpdater.exe differ
diff --git a/package/Resources/Binaries/Updater/SecondStageUpdater.pdb b/package/Resources/Binaries/Updater/SecondStageUpdater.pdb
index 0d9c06ad2..20be1483b 100644
Binary files a/package/Resources/Binaries/Updater/SecondStageUpdater.pdb and b/package/Resources/Binaries/Updater/SecondStageUpdater.pdb differ
diff --git a/package/Resources/Binaries/Windows/ClientCore.dll b/package/Resources/Binaries/Windows/ClientCore.dll
index 08c5ba105..d8a0daabc 100644
Binary files a/package/Resources/Binaries/Windows/ClientCore.dll and b/package/Resources/Binaries/Windows/ClientCore.dll differ
diff --git a/package/Resources/Binaries/Windows/ClientCore.pdb b/package/Resources/Binaries/Windows/ClientCore.pdb
index eaff79f8c..545a451b5 100644
Binary files a/package/Resources/Binaries/Windows/ClientCore.pdb and b/package/Resources/Binaries/Windows/ClientCore.pdb differ
diff --git a/package/Resources/Binaries/Windows/ClientGUI.dll b/package/Resources/Binaries/Windows/ClientGUI.dll
index f09d02c98..ce190ec70 100644
Binary files a/package/Resources/Binaries/Windows/ClientGUI.dll and b/package/Resources/Binaries/Windows/ClientGUI.dll differ
diff --git a/package/Resources/Binaries/Windows/ClientGUI.pdb b/package/Resources/Binaries/Windows/ClientGUI.pdb
index 5f61fc7ac..c9c903d0e 100644
Binary files a/package/Resources/Binaries/Windows/ClientGUI.pdb and b/package/Resources/Binaries/Windows/ClientGUI.pdb differ
diff --git a/package/Resources/Binaries/Windows/FontStashSharp.MonoGame.dll b/package/Resources/Binaries/Windows/FontStashSharp.MonoGame.dll
new file mode 100644
index 000000000..d075ee17f
Binary files /dev/null and b/package/Resources/Binaries/Windows/FontStashSharp.MonoGame.dll differ
diff --git a/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.dll b/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.dll
index 86e040619..4ea00ac99 100644
Binary files a/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.dll and b/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.dll differ
diff --git a/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.pdb b/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.pdb
index d4a30c61d..3b0eab3bd 100644
Binary files a/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.pdb and b/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.pdb differ
diff --git a/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.xml b/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.xml
index 71c93fbd0..69e7dcc33 100644
--- a/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.xml
+++ b/package/Resources/Binaries/Windows/Rampastring.XNAUI.WindowsDX.xml
@@ -171,11 +171,6 @@
Plays this sound if it's enabled.
-
-
- Disposes the sound effect.
-
-
Updates the priority of the sound. Returns true if the sound effect is
@@ -184,6 +179,228 @@
Tells how much time has passed since the previous frame.
True if the sound effect is still playing, otherwise false.
+
+
+ Sets the root directory for the ContentManager with XNA vs MonoGame differences.
+
+ The ContentManager instance.
+ The new root directory path.
+
+
+
+ Extension methods for .
+
+
+
+
+ Returns a substring of this string starting at and containing at most
+ UTF-16 code units, ensuring the result does not end with an orphaned high surrogate.
+
+ The string to slice.
+ The zero-based start index of the substring.
+ Maximum number of UTF-16 code units to include in the result. Must be non-negative.
+ The safe substring.
+
+
+
+ Manages font loading and rendering for the UI system.
+ Supports both SpriteFont and TrueType fonts with automatic fallback.
+
+
+
+ For TrueType fonts, FontManager creates a separate FontSystem for each font index.
+ Each FontSystem has a primary font (specified via Path) and optional per-font fallback
+ chain (via Fallback=N pointing to another font index). When a character is not found in
+ the primary font, it falls back through the chain in order.
+
+
+ The Fonts.ini file format supports:
+
+ - [TextShaping] - Optional HarfBuzz text shaping configuration
+ - [Fonts] - Font index definitions with Size, Type, optional Path, and optional Fallback
+
+
+
+
+
+
+ When set before runs, skips the Fonts.ini search and
+ loads only legacy SpriteFontN.xnb assets. Lets clients offer an opt-out from
+ TrueType rendering.
+
+
+
+
+ Gets the current text shaping settings.
+
+
+
+
+ Gets the current font rendering settings.
+
+
+
+
+ Checks if text shaping is currently enabled.
+
+
+
+
+ Creates a new FontSystem with current text shaping settings.
+
+
+
+
+ Loads fonts from the first Fonts.ini found in asset search paths.
+
+
+
+ Loading happens in two phases:
+
+
+ Phase 1: Load configuration from the first Fonts.ini:
+ - [TextShaping] settings
+ - [Fonts] definitions (type, path, size, fallback)
+
+
+ Phase 2: Create font indexes:
+ - For TrueType fonts: Create a FontSystem with primary font first, then follow the per-font fallback chain
+ - For SpriteFonts: Load the .xnb file
+
+
+
+ When non-null, overrides any FontResolutionFactor from [FontRendering]
+ in Fonts.ini. Used by to keep TTF
+ glyphs sharp when the render target is upscaled.
+
+
+
+
+ Loads fonts from a specific Fonts.ini file.
+
+
+
+
+ Creates FontIndex entries from a Fonts.ini file.
+ For each TrueType font, creates a separate FontSystem with the primary font first,
+ then follows the per-font fallback chain to add additional fonts.
+
+
+
+
+ Creates a TrueType font index with its own FontSystem.
+ The FontSystem contains the primary font first, then fonts from
+ the fallback chain (each [FontN] can point to another via Fallback=X).
+
+
+
+
+ Loads a SpriteFont and adds it to the font list.
+
+
+
+
+ Loads legacy SpriteFonts (SpriteFont0, SpriteFont1, etc.) from a search path.
+ This method appends new fonts to the existing font list instead of replacing it.
+
+
+
+
+ Configuration for FontStashSharp glyph rasterization.
+
+
+
+
+ Horizontal blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelWidth. Must be non-negative.
+
+
+
+
+ Vertical blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelHeight. Must be non-negative.
+
+
+
+
+ Multiplier applied to the rasterization size of each glyph.
+ Values > 1 produce sharper output when text is drawn at scales above 1.0
+ at the cost of a larger atlas footprint.
+
+
+
+
+ Width of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ Height of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ How rasterized glyph pixels are produced.
+ matches a premultiplied-alpha SpriteBatch,
+ matches AlphaBlend, and
+ produces hard 1-bit edges for pixel-art fonts.
+
+
+
+
+ Configuration for HarfBuzz text shaping.
+ Text shaping is required for complex scripts (Arabic, Hebrew, Hindi, etc.)
+ and proper rendering of emoji sequences and ligatures.
+
+
+
+
+ Enable HarfBuzz text shaping for complex scripts.
+ When enabled, text will be properly shaped for languages that require it.
+
+
+
+
+ Enable bidirectional text support for mixed LTR/RTL text.
+ Only applies when Enabled is true.
+
+
+
+
+ Size of the shaped text cache.
+ Higher values use more memory but reduce shaping overhead for repeated text.
+ Default: 100
+
+
+
+
+ Returns the value V to plug into (controlHeight - V) / 2 for
+ vertical centering. NOT a geometric height: this is top + bottom of the
+ cap glyph 'H' from the draw origin (i.e. minY + maxY from FontStashSharp's
+ TextBounds), chosen so the cap-glyph midpoint lands at controlHeight / 2
+ independent of descenders. The geometric glyph height would be maxY - minY.
+
+
+
+
+ For TTF fonts, this always returns true because FontStashSharp can dynamically
+ generate glyphs for any character. If a glyph is not available in the font file,
+ a replacement glyph (like � or ?) will be rendered instead.
+
+
+
+
+ Returns a sanitized string safe for rendering. It replaces unpaired surrogates
+ with U+FFFD so FontStashSharp's UTF-16 -> UTF-32 conversion does not throw.
+
+
+
+
+ Replaces unpaired UTF-16 surrogates with U+FFFD. Returns the original
+ string reference unchanged when the input is already valid (the common case),
+ to avoid allocations on the rendering hot path.
+
+
The exception that is thrown when the fails to find a matching
@@ -369,17 +586,13 @@
Allows the user to close the game form by Alt-F4.
-
+
- Provides static methods for drawing.
+ Reloads fonts with a new resolution factor matching the given scale ratio,
+ so TTF glyphs are rasterized at native display quality rather than being
+ scaled up from the render resolution.
-
-
- Clears all potentially existing loaded fonts and then loads fonts from asset loader directories.
-
- A XNA/MonoGame ContentManager instance.
-
Allows direct access to the list of loaded fonts.
@@ -387,16 +600,15 @@
- Returns a version of the given string where all characters that don't
- appear in the given font have been replaced with question marks.
+ Returns a version of the given string that the font renderer can safely display without crashing.
The string.
The index of the font.
- Returns a that has had its width limited to a specific number.
- Characters that'd cross over the width have been cut.
+ Returns a string that has had its width limited to a specific number.
+ Characters that would cross over the width have been cut.
The string to limit.
The index of the font to use.
@@ -664,6 +876,12 @@
The control, of the highest generation, that the mouse cursor is currently positioned on.
+
+
+ If specified, the control blocks other controls on the screen
+ from being interacted with. Defaults to null.
+
+
Sets the rendering (back buffer) resolution of the game.
@@ -1125,18 +1343,39 @@
Raised when the mouse cursor enters the control's area.
+
+
+ Raised during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the left mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the right mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the middle mouse button is pressed down while the
@@ -1158,6 +1397,20 @@
Raised each frame when the mouse cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll vertically.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll horizontally.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the scroll wheel is used to scroll vertically
@@ -1170,6 +1423,13 @@
while the cursor is inside the control.
+
+
+ Raised during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the left mouse button is clicked (pressed and released)
@@ -1182,12 +1442,26 @@
time-frame while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the right mouse button is clicked (pressed and released)
while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the middle mouse button is clicked (pressed and released)
@@ -1727,45 +2001,87 @@
Called when the mouse cursor leaves the control's client rectangle.
+
+
+ Called during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the left mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the right mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the middle mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked on the control's client rectangle.
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked twice on the control's client rectangle.
+
+
+ Called during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the right mouse button has been
+ Called when the right mouse button has been
clicked on the control's client rectangle.
+
+
+ Called during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the middle mouse button has been
+ Called when the middle mouse button has been
clicked on the control's client rectangle.
@@ -1780,9 +2096,23 @@
client rectangle.
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled vertically.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled horizontally.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the scroll wheel has been scrolled on the
+ Called when the scroll wheel has been scrolled on the
control's client rectangle.
@@ -1859,6 +2189,41 @@
If set, the drop-down is opened upwards rather than downwards.
+
+
+ When the selected item's text is too wide for the closed control, it is always
+ cut off at the last fully fitting character so it does not visually overrun the
+ control's bounds. If this property is enabled, an ellipsis ("...") is appended
+ to indicate that the text has been truncated.
+
+
+
+
+ The width of the open dropdown list. Computed in as the
+ maximum of and the widest item's content width, so
+ wide items remain fully visible when the list is expanded.
+
+
+
+
+ Stores the control width used when the dropdown is closed so it can be restored
+ after the expanded list has temporarily widened the control. Null when no closed
+ width has been captured yet, so a legitimate of 0
+ is preserved instead of being treated as "not captured".
+
+
+
+
+ Ensures the framework-visible control width matches the actual visible dropdown
+ width while the list is open, and restores the original width when the list closes.
+
+
+
+
+ Current visible width of the control, accounting for whether the dropdown list
+ is open and may be wider than the closed-state .
+
+
Adds an item into the drop-down.
@@ -1898,6 +2263,18 @@
Returns the index of the item that the cursor currently points to.
+
+
+ Invalidates the cached display text.
+
+
+
+
+ Gets the display text for the selected item, fitted to the control's bounds so
+ it does not visually overrun the control. Appends an ellipsis to indicate
+ truncation when is enabled.
+
+
Draws the drop-down.
diff --git a/package/Resources/Binaries/Windows/Ude.NetStandard.dll b/package/Resources/Binaries/Windows/Ude.NetStandard.dll
deleted file mode 100644
index 7e7192df0..000000000
Binary files a/package/Resources/Binaries/Windows/Ude.NetStandard.dll and /dev/null differ
diff --git a/package/Resources/Binaries/XNA/ClientCore.dll b/package/Resources/Binaries/XNA/ClientCore.dll
index 9f3384885..b175617bc 100644
Binary files a/package/Resources/Binaries/XNA/ClientCore.dll and b/package/Resources/Binaries/XNA/ClientCore.dll differ
diff --git a/package/Resources/Binaries/XNA/ClientCore.pdb b/package/Resources/Binaries/XNA/ClientCore.pdb
index 223f7e81f..a9a85bc17 100644
Binary files a/package/Resources/Binaries/XNA/ClientCore.pdb and b/package/Resources/Binaries/XNA/ClientCore.pdb differ
diff --git a/package/Resources/Binaries/XNA/ClientGUI.dll b/package/Resources/Binaries/XNA/ClientGUI.dll
index 031fdc17d..9bf401686 100644
Binary files a/package/Resources/Binaries/XNA/ClientGUI.dll and b/package/Resources/Binaries/XNA/ClientGUI.dll differ
diff --git a/package/Resources/Binaries/XNA/ClientGUI.pdb b/package/Resources/Binaries/XNA/ClientGUI.pdb
index 43cb7d96d..afe5b5128 100644
Binary files a/package/Resources/Binaries/XNA/ClientGUI.pdb and b/package/Resources/Binaries/XNA/ClientGUI.pdb differ
diff --git a/package/Resources/Binaries/XNA/FontStashSharp.XNA.dll b/package/Resources/Binaries/XNA/FontStashSharp.XNA.dll
new file mode 100644
index 000000000..03b34df63
Binary files /dev/null and b/package/Resources/Binaries/XNA/FontStashSharp.XNA.dll differ
diff --git a/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.dll b/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.dll
index a85cb451d..01b1576d4 100644
Binary files a/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.dll and b/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.dll differ
diff --git a/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.pdb b/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.pdb
index 36bdac436..cf4ca836e 100644
Binary files a/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.pdb and b/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.pdb differ
diff --git a/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.xml b/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.xml
index f4949e4c8..7b6ecd13b 100644
--- a/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.xml
+++ b/package/Resources/Binaries/XNA/Rampastring.XNAUI.WindowsXNA.xml
@@ -171,11 +171,6 @@
Plays this sound if it's enabled.
-
-
- Disposes the sound effect.
-
-
Updates the priority of the sound. Returns true if the sound effect is
@@ -184,6 +179,228 @@
Tells how much time has passed since the previous frame.
True if the sound effect is still playing, otherwise false.
+
+
+ Sets the root directory for the ContentManager with XNA vs MonoGame differences.
+
+ The ContentManager instance.
+ The new root directory path.
+
+
+
+ Extension methods for .
+
+
+
+
+ Returns a substring of this string starting at and containing at most
+ UTF-16 code units, ensuring the result does not end with an orphaned high surrogate.
+
+ The string to slice.
+ The zero-based start index of the substring.
+ Maximum number of UTF-16 code units to include in the result. Must be non-negative.
+ The safe substring.
+
+
+
+ Manages font loading and rendering for the UI system.
+ Supports both SpriteFont and TrueType fonts with automatic fallback.
+
+
+
+ For TrueType fonts, FontManager creates a separate FontSystem for each font index.
+ Each FontSystem has a primary font (specified via Path) and optional per-font fallback
+ chain (via Fallback=N pointing to another font index). When a character is not found in
+ the primary font, it falls back through the chain in order.
+
+
+ The Fonts.ini file format supports:
+
+ - [TextShaping] - Optional HarfBuzz text shaping configuration
+ - [Fonts] - Font index definitions with Size, Type, optional Path, and optional Fallback
+
+
+
+
+
+
+ When set before runs, skips the Fonts.ini search and
+ loads only legacy SpriteFontN.xnb assets. Lets clients offer an opt-out from
+ TrueType rendering.
+
+
+
+
+ Gets the current text shaping settings.
+
+
+
+
+ Gets the current font rendering settings.
+
+
+
+
+ Checks if text shaping is currently enabled.
+
+
+
+
+ Creates a new FontSystem with current text shaping settings.
+
+
+
+
+ Loads fonts from the first Fonts.ini found in asset search paths.
+
+
+
+ Loading happens in two phases:
+
+
+ Phase 1: Load configuration from the first Fonts.ini:
+ - [TextShaping] settings
+ - [Fonts] definitions (type, path, size, fallback)
+
+
+ Phase 2: Create font indexes:
+ - For TrueType fonts: Create a FontSystem with primary font first, then follow the per-font fallback chain
+ - For SpriteFonts: Load the .xnb file
+
+
+
+ When non-null, overrides any FontResolutionFactor from [FontRendering]
+ in Fonts.ini. Used by to keep TTF
+ glyphs sharp when the render target is upscaled.
+
+
+
+
+ Loads fonts from a specific Fonts.ini file.
+
+
+
+
+ Creates FontIndex entries from a Fonts.ini file.
+ For each TrueType font, creates a separate FontSystem with the primary font first,
+ then follows the per-font fallback chain to add additional fonts.
+
+
+
+
+ Creates a TrueType font index with its own FontSystem.
+ The FontSystem contains the primary font first, then fonts from
+ the fallback chain (each [FontN] can point to another via Fallback=X).
+
+
+
+
+ Loads a SpriteFont and adds it to the font list.
+
+
+
+
+ Loads legacy SpriteFonts (SpriteFont0, SpriteFont1, etc.) from a search path.
+ This method appends new fonts to the existing font list instead of replacing it.
+
+
+
+
+ Configuration for FontStashSharp glyph rasterization.
+
+
+
+
+ Horizontal blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelWidth. Must be non-negative.
+
+
+
+
+ Vertical blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelHeight. Must be non-negative.
+
+
+
+
+ Multiplier applied to the rasterization size of each glyph.
+ Values > 1 produce sharper output when text is drawn at scales above 1.0
+ at the cost of a larger atlas footprint.
+
+
+
+
+ Width of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ Height of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ How rasterized glyph pixels are produced.
+ matches a premultiplied-alpha SpriteBatch,
+ matches AlphaBlend, and
+ produces hard 1-bit edges for pixel-art fonts.
+
+
+
+
+ Configuration for HarfBuzz text shaping.
+ Text shaping is required for complex scripts (Arabic, Hebrew, Hindi, etc.)
+ and proper rendering of emoji sequences and ligatures.
+
+
+
+
+ Enable HarfBuzz text shaping for complex scripts.
+ When enabled, text will be properly shaped for languages that require it.
+
+
+
+
+ Enable bidirectional text support for mixed LTR/RTL text.
+ Only applies when Enabled is true.
+
+
+
+
+ Size of the shaped text cache.
+ Higher values use more memory but reduce shaping overhead for repeated text.
+ Default: 100
+
+
+
+
+ Returns the value V to plug into (controlHeight - V) / 2 for
+ vertical centering. NOT a geometric height: this is top + bottom of the
+ cap glyph 'H' from the draw origin (i.e. minY + maxY from FontStashSharp's
+ TextBounds), chosen so the cap-glyph midpoint lands at controlHeight / 2
+ independent of descenders. The geometric glyph height would be maxY - minY.
+
+
+
+
+ For TTF fonts, this always returns true because FontStashSharp can dynamically
+ generate glyphs for any character. If a glyph is not available in the font file,
+ a replacement glyph (like � or ?) will be rendered instead.
+
+
+
+
+ Returns a sanitized string safe for rendering. It replaces unpaired surrogates
+ with U+FFFD so FontStashSharp's UTF-16 -> UTF-32 conversion does not throw.
+
+
+
+
+ Replaces unpaired UTF-16 surrogates with U+FFFD. Returns the original
+ string reference unchanged when the input is already valid (the common case),
+ to avoid allocations on the rendering hot path.
+
+
The exception that is thrown when the fails to find a matching
@@ -388,17 +605,13 @@
Allows the user to close the game form by Alt-F4.
-
+
- Provides static methods for drawing.
+ Reloads fonts with a new resolution factor matching the given scale ratio,
+ so TTF glyphs are rasterized at native display quality rather than being
+ scaled up from the render resolution.
-
-
- Clears all potentially existing loaded fonts and then loads fonts from asset loader directories.
-
- A XNA/MonoGame ContentManager instance.
-
Allows direct access to the list of loaded fonts.
@@ -406,16 +619,15 @@
- Returns a version of the given string where all characters that don't
- appear in the given font have been replaced with question marks.
+ Returns a version of the given string that the font renderer can safely display without crashing.
The string.
The index of the font.
- Returns a that has had its width limited to a specific number.
- Characters that'd cross over the width have been cut.
+ Returns a string that has had its width limited to a specific number.
+ Characters that would cross over the width have been cut.
The string to limit.
The index of the font to use.
@@ -683,6 +895,12 @@
The control, of the highest generation, that the mouse cursor is currently positioned on.
+
+
+ If specified, the control blocks other controls on the screen
+ from being interacted with. Defaults to null.
+
+
Sets the rendering (back buffer) resolution of the game.
@@ -1144,18 +1362,39 @@
Raised when the mouse cursor enters the control's area.
+
+
+ Raised during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the left mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the right mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the middle mouse button is pressed down while the
@@ -1177,6 +1416,20 @@
Raised each frame when the mouse cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll vertically.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll horizontally.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the scroll wheel is used to scroll vertically
@@ -1189,6 +1442,13 @@
while the cursor is inside the control.
+
+
+ Raised during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the left mouse button is clicked (pressed and released)
@@ -1201,12 +1461,26 @@
time-frame while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the right mouse button is clicked (pressed and released)
while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the middle mouse button is clicked (pressed and released)
@@ -1746,45 +2020,87 @@
Called when the mouse cursor leaves the control's client rectangle.
+
+
+ Called during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the left mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the right mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the middle mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked on the control's client rectangle.
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked twice on the control's client rectangle.
+
+
+ Called during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the right mouse button has been
+ Called when the right mouse button has been
clicked on the control's client rectangle.
+
+
+ Called during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the middle mouse button has been
+ Called when the middle mouse button has been
clicked on the control's client rectangle.
@@ -1799,9 +2115,23 @@
client rectangle.
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled vertically.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled horizontally.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the scroll wheel has been scrolled on the
+ Called when the scroll wheel has been scrolled on the
control's client rectangle.
@@ -1878,6 +2208,41 @@
If set, the drop-down is opened upwards rather than downwards.
+
+
+ When the selected item's text is too wide for the closed control, it is always
+ cut off at the last fully fitting character so it does not visually overrun the
+ control's bounds. If this property is enabled, an ellipsis ("...") is appended
+ to indicate that the text has been truncated.
+
+
+
+
+ The width of the open dropdown list. Computed in as the
+ maximum of and the widest item's content width, so
+ wide items remain fully visible when the list is expanded.
+
+
+
+
+ Stores the control width used when the dropdown is closed so it can be restored
+ after the expanded list has temporarily widened the control. Null when no closed
+ width has been captured yet, so a legitimate of 0
+ is preserved instead of being treated as "not captured".
+
+
+
+
+ Ensures the framework-visible control width matches the actual visible dropdown
+ width while the list is open, and restores the original width when the list closes.
+
+
+
+
+ Current visible width of the control, accounting for whether the dropdown list
+ is open and may be wider than the closed-state .
+
+
Adds an item into the drop-down.
@@ -1917,6 +2282,18 @@
Returns the index of the item that the cursor currently points to.
+
+
+ Invalidates the cached display text.
+
+
+
+
+ Gets the display text for the selected item, fitted to the control's bounds so
+ it does not visually overrun the control. Appends an ellipsis to indicate
+ truncation when is enabled.
+
+
Draws the drop-down.
diff --git a/package/Resources/Binaries/XNA/Ude.NetStandard.dll b/package/Resources/Binaries/XNA/Ude.NetStandard.dll
deleted file mode 100644
index 7e7192df0..000000000
Binary files a/package/Resources/Binaries/XNA/Ude.NetStandard.dll and /dev/null differ
diff --git a/package/Resources/Binaries/XNA/libHarfBuzzSharp.dll b/package/Resources/Binaries/XNA/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..68b23abb4
Binary files /dev/null and b/package/Resources/Binaries/XNA/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/Binaries/arm64/libHarfBuzzSharp.dll b/package/Resources/Binaries/arm64/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..2d68b66cb
Binary files /dev/null and b/package/Resources/Binaries/arm64/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/Binaries/libHarfBuzzSharp.dylib b/package/Resources/Binaries/libHarfBuzzSharp.dylib
new file mode 100644
index 000000000..9939da542
Binary files /dev/null and b/package/Resources/Binaries/libHarfBuzzSharp.dylib differ
diff --git a/package/Resources/Binaries/x64/libHarfBuzzSharp.dll b/package/Resources/Binaries/x64/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..6e84cf2ac
Binary files /dev/null and b/package/Resources/Binaries/x64/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/Binaries/steam_api64.dll b/package/Resources/Binaries/x64/steam_api64.dll
similarity index 100%
rename from package/Resources/Binaries/steam_api64.dll
rename to package/Resources/Binaries/x64/steam_api64.dll
diff --git a/package/Resources/Binaries/x86/libHarfBuzzSharp.dll b/package/Resources/Binaries/x86/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..68b23abb4
Binary files /dev/null and b/package/Resources/Binaries/x86/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/ClientUpdater.dll b/package/Resources/BinariesNET8/ClientUpdater.dll
index da2a094e7..97bc5de1f 100644
Binary files a/package/Resources/BinariesNET8/ClientUpdater.dll and b/package/Resources/BinariesNET8/ClientUpdater.dll differ
diff --git a/package/Resources/BinariesNET8/ClientUpdater.pdb b/package/Resources/BinariesNET8/ClientUpdater.pdb
index 25f086d98..bc838547f 100644
Binary files a/package/Resources/BinariesNET8/ClientUpdater.pdb and b/package/Resources/BinariesNET8/ClientUpdater.pdb differ
diff --git a/package/Resources/BinariesNET8/Cyotek.Drawing.BitmapFont.dll b/package/Resources/BinariesNET8/Cyotek.Drawing.BitmapFont.dll
new file mode 100644
index 000000000..93422cd87
Binary files /dev/null and b/package/Resources/BinariesNET8/Cyotek.Drawing.BitmapFont.dll differ
diff --git a/package/Resources/BinariesNET8/FontStashSharp.Base.dll b/package/Resources/BinariesNET8/FontStashSharp.Base.dll
new file mode 100644
index 000000000..3ab22f122
Binary files /dev/null and b/package/Resources/BinariesNET8/FontStashSharp.Base.dll differ
diff --git a/package/Resources/BinariesNET8/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll b/package/Resources/BinariesNET8/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll
new file mode 100644
index 000000000..6b46f4490
Binary files /dev/null and b/package/Resources/BinariesNET8/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll differ
diff --git a/package/Resources/BinariesNET8/FontStashSharp.TextShapers.HarfBuzz.dll b/package/Resources/BinariesNET8/FontStashSharp.TextShapers.HarfBuzz.dll
new file mode 100644
index 000000000..7c5203c65
Binary files /dev/null and b/package/Resources/BinariesNET8/FontStashSharp.TextShapers.HarfBuzz.dll differ
diff --git a/package/Resources/BinariesNET8/HarfBuzzSharp.dll b/package/Resources/BinariesNET8/HarfBuzzSharp.dll
new file mode 100644
index 000000000..209726648
Binary files /dev/null and b/package/Resources/BinariesNET8/HarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/OpenGL/ClientCore.dll b/package/Resources/BinariesNET8/OpenGL/ClientCore.dll
index 98532c7dd..65e68e0fb 100644
Binary files a/package/Resources/BinariesNET8/OpenGL/ClientCore.dll and b/package/Resources/BinariesNET8/OpenGL/ClientCore.dll differ
diff --git a/package/Resources/BinariesNET8/OpenGL/ClientCore.pdb b/package/Resources/BinariesNET8/OpenGL/ClientCore.pdb
index 7f2a9bcd6..1c4d67e1e 100644
Binary files a/package/Resources/BinariesNET8/OpenGL/ClientCore.pdb and b/package/Resources/BinariesNET8/OpenGL/ClientCore.pdb differ
diff --git a/package/Resources/BinariesNET8/OpenGL/ClientGUI.dll b/package/Resources/BinariesNET8/OpenGL/ClientGUI.dll
index e5edda0be..6d430ef4e 100644
Binary files a/package/Resources/BinariesNET8/OpenGL/ClientGUI.dll and b/package/Resources/BinariesNET8/OpenGL/ClientGUI.dll differ
diff --git a/package/Resources/BinariesNET8/OpenGL/ClientGUI.pdb b/package/Resources/BinariesNET8/OpenGL/ClientGUI.pdb
index 28ce5e7e5..1352e0bb3 100644
Binary files a/package/Resources/BinariesNET8/OpenGL/ClientGUI.pdb and b/package/Resources/BinariesNET8/OpenGL/ClientGUI.pdb differ
diff --git a/package/Resources/BinariesNET8/OpenGL/FontStashSharp.MonoGame.dll b/package/Resources/BinariesNET8/OpenGL/FontStashSharp.MonoGame.dll
new file mode 100644
index 000000000..d075ee17f
Binary files /dev/null and b/package/Resources/BinariesNET8/OpenGL/FontStashSharp.MonoGame.dll differ
diff --git a/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.dll b/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.dll
index aa0ccd545..13ce6bae8 100644
Binary files a/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.dll and b/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.dll differ
diff --git a/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.pdb b/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.pdb
index 4908d5fc1..48ea95426 100644
Binary files a/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.pdb and b/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.pdb differ
diff --git a/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.xml b/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.xml
index 0fe6301d4..37ef56ada 100644
--- a/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.xml
+++ b/package/Resources/BinariesNET8/OpenGL/Rampastring.XNAUI.WindowsGL.xml
@@ -171,11 +171,6 @@
Plays this sound if it's enabled.
-
-
- Disposes the sound effect.
-
-
Updates the priority of the sound. Returns true if the sound effect is
@@ -184,6 +179,228 @@
Tells how much time has passed since the previous frame.
True if the sound effect is still playing, otherwise false.
+
+
+ Sets the root directory for the ContentManager with XNA vs MonoGame differences.
+
+ The ContentManager instance.
+ The new root directory path.
+
+
+
+ Extension methods for .
+
+
+
+
+ Returns a substring of this string starting at and containing at most
+ UTF-16 code units, ensuring the result does not end with an orphaned high surrogate.
+
+ The string to slice.
+ The zero-based start index of the substring.
+ Maximum number of UTF-16 code units to include in the result. Must be non-negative.
+ The safe substring.
+
+
+
+ Manages font loading and rendering for the UI system.
+ Supports both SpriteFont and TrueType fonts with automatic fallback.
+
+
+
+ For TrueType fonts, FontManager creates a separate FontSystem for each font index.
+ Each FontSystem has a primary font (specified via Path) and optional per-font fallback
+ chain (via Fallback=N pointing to another font index). When a character is not found in
+ the primary font, it falls back through the chain in order.
+
+
+ The Fonts.ini file format supports:
+
+ - [TextShaping] - Optional HarfBuzz text shaping configuration
+ - [Fonts] - Font index definitions with Size, Type, optional Path, and optional Fallback
+
+
+
+
+
+
+ When set before runs, skips the Fonts.ini search and
+ loads only legacy SpriteFontN.xnb assets. Lets clients offer an opt-out from
+ TrueType rendering.
+
+
+
+
+ Gets the current text shaping settings.
+
+
+
+
+ Gets the current font rendering settings.
+
+
+
+
+ Checks if text shaping is currently enabled.
+
+
+
+
+ Creates a new FontSystem with current text shaping settings.
+
+
+
+
+ Loads fonts from the first Fonts.ini found in asset search paths.
+
+
+
+ Loading happens in two phases:
+
+
+ Phase 1: Load configuration from the first Fonts.ini:
+ - [TextShaping] settings
+ - [Fonts] definitions (type, path, size, fallback)
+
+
+ Phase 2: Create font indexes:
+ - For TrueType fonts: Create a FontSystem with primary font first, then follow the per-font fallback chain
+ - For SpriteFonts: Load the .xnb file
+
+
+
+ When non-null, overrides any FontResolutionFactor from [FontRendering]
+ in Fonts.ini. Used by to keep TTF
+ glyphs sharp when the render target is upscaled.
+
+
+
+
+ Loads fonts from a specific Fonts.ini file.
+
+
+
+
+ Creates FontIndex entries from a Fonts.ini file.
+ For each TrueType font, creates a separate FontSystem with the primary font first,
+ then follows the per-font fallback chain to add additional fonts.
+
+
+
+
+ Creates a TrueType font index with its own FontSystem.
+ The FontSystem contains the primary font first, then fonts from
+ the fallback chain (each [FontN] can point to another via Fallback=X).
+
+
+
+
+ Loads a SpriteFont and adds it to the font list.
+
+
+
+
+ Loads legacy SpriteFonts (SpriteFont0, SpriteFont1, etc.) from a search path.
+ This method appends new fonts to the existing font list instead of replacing it.
+
+
+
+
+ Configuration for FontStashSharp glyph rasterization.
+
+
+
+
+ Horizontal blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelWidth. Must be non-negative.
+
+
+
+
+ Vertical blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelHeight. Must be non-negative.
+
+
+
+
+ Multiplier applied to the rasterization size of each glyph.
+ Values > 1 produce sharper output when text is drawn at scales above 1.0
+ at the cost of a larger atlas footprint.
+
+
+
+
+ Width of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ Height of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ How rasterized glyph pixels are produced.
+ matches a premultiplied-alpha SpriteBatch,
+ matches AlphaBlend, and
+ produces hard 1-bit edges for pixel-art fonts.
+
+
+
+
+ Configuration for HarfBuzz text shaping.
+ Text shaping is required for complex scripts (Arabic, Hebrew, Hindi, etc.)
+ and proper rendering of emoji sequences and ligatures.
+
+
+
+
+ Enable HarfBuzz text shaping for complex scripts.
+ When enabled, text will be properly shaped for languages that require it.
+
+
+
+
+ Enable bidirectional text support for mixed LTR/RTL text.
+ Only applies when Enabled is true.
+
+
+
+
+ Size of the shaped text cache.
+ Higher values use more memory but reduce shaping overhead for repeated text.
+ Default: 100
+
+
+
+
+ Returns the value V to plug into (controlHeight - V) / 2 for
+ vertical centering. NOT a geometric height: this is top + bottom of the
+ cap glyph 'H' from the draw origin (i.e. minY + maxY from FontStashSharp's
+ TextBounds), chosen so the cap-glyph midpoint lands at controlHeight / 2
+ independent of descenders. The geometric glyph height would be maxY - minY.
+
+
+
+
+ For TTF fonts, this always returns true because FontStashSharp can dynamically
+ generate glyphs for any character. If a glyph is not available in the font file,
+ a replacement glyph (like � or ?) will be rendered instead.
+
+
+
+
+ Returns a sanitized string safe for rendering. It replaces unpaired surrogates
+ with U+FFFD so FontStashSharp's UTF-16 -> UTF-32 conversion does not throw.
+
+
+
+
+ Replaces unpaired UTF-16 surrogates with U+FFFD. Returns the original
+ string reference unchanged when the input is already valid (the common case),
+ to avoid allocations on the rendering hot path.
+
+
The exception that is thrown when the fails to find a matching
@@ -369,17 +586,13 @@
Allows the user to close the game form by Alt-F4.
-
+
- Provides static methods for drawing.
+ Reloads fonts with a new resolution factor matching the given scale ratio,
+ so TTF glyphs are rasterized at native display quality rather than being
+ scaled up from the render resolution.
-
-
- Clears all potentially existing loaded fonts and then loads fonts from asset loader directories.
-
- A XNA/MonoGame ContentManager instance.
-
Allows direct access to the list of loaded fonts.
@@ -387,16 +600,15 @@
- Returns a version of the given string where all characters that don't
- appear in the given font have been replaced with question marks.
+ Returns a version of the given string that the font renderer can safely display without crashing.
The string.
The index of the font.
- Returns a that has had its width limited to a specific number.
- Characters that'd cross over the width have been cut.
+ Returns a string that has had its width limited to a specific number.
+ Characters that would cross over the width have been cut.
The string to limit.
The index of the font to use.
@@ -664,6 +876,12 @@
The control, of the highest generation, that the mouse cursor is currently positioned on.
+
+
+ If specified, the control blocks other controls on the screen
+ from being interacted with. Defaults to null.
+
+
Sets the rendering (back buffer) resolution of the game.
@@ -1125,18 +1343,39 @@
Raised when the mouse cursor enters the control's area.
+
+
+ Raised during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the left mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the right mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the middle mouse button is pressed down while the
@@ -1158,6 +1397,20 @@
Raised each frame when the mouse cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll vertically.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll horizontally.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the scroll wheel is used to scroll vertically
@@ -1170,6 +1423,13 @@
while the cursor is inside the control.
+
+
+ Raised during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the left mouse button is clicked (pressed and released)
@@ -1182,12 +1442,26 @@
time-frame while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the right mouse button is clicked (pressed and released)
while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the middle mouse button is clicked (pressed and released)
@@ -1727,45 +2001,87 @@
Called when the mouse cursor leaves the control's client rectangle.
+
+
+ Called during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the left mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the right mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the middle mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked on the control's client rectangle.
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked twice on the control's client rectangle.
+
+
+ Called during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the right mouse button has been
+ Called when the right mouse button has been
clicked on the control's client rectangle.
+
+
+ Called during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the middle mouse button has been
+ Called when the middle mouse button has been
clicked on the control's client rectangle.
@@ -1780,9 +2096,23 @@
client rectangle.
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled vertically.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled horizontally.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the scroll wheel has been scrolled on the
+ Called when the scroll wheel has been scrolled on the
control's client rectangle.
@@ -1859,6 +2189,41 @@
If set, the drop-down is opened upwards rather than downwards.
+
+
+ When the selected item's text is too wide for the closed control, it is always
+ cut off at the last fully fitting character so it does not visually overrun the
+ control's bounds. If this property is enabled, an ellipsis ("...") is appended
+ to indicate that the text has been truncated.
+
+
+
+
+ The width of the open dropdown list. Computed in as the
+ maximum of and the widest item's content width, so
+ wide items remain fully visible when the list is expanded.
+
+
+
+
+ Stores the control width used when the dropdown is closed so it can be restored
+ after the expanded list has temporarily widened the control. Null when no closed
+ width has been captured yet, so a legitimate of 0
+ is preserved instead of being treated as "not captured".
+
+
+
+
+ Ensures the framework-visible control width matches the actual visible dropdown
+ width while the list is open, and restores the original width when the list closes.
+
+
+
+
+ Current visible width of the control, accounting for whether the dropdown list
+ is open and may be wider than the closed-state .
+
+
Adds an item into the drop-down.
@@ -1898,6 +2263,18 @@
Returns the index of the item that the cursor currently points to.
+
+
+ Invalidates the cached display text.
+
+
+
+
+ Gets the display text for the selected item, fitted to the control's bounds so
+ it does not visually overrun the control. Appends an ellipsis to indicate
+ truncation when is enabled.
+
+
Draws the drop-down.
diff --git a/package/Resources/BinariesNET8/OpenGL/clientogl.deps.json b/package/Resources/BinariesNET8/OpenGL/clientogl.deps.json
index c84f25967..48dfb2e1f 100644
--- a/package/Resources/BinariesNET8/OpenGL/clientogl.deps.json
+++ b/package/Resources/BinariesNET8/OpenGL/clientogl.deps.json
@@ -6,14 +6,14 @@
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
- "clientogl/2.12.18": {
+ "clientogl/2.13.0": {
"dependencies": {
"ClientGUI": "1.0.0",
"ClientUpdater": "1.0.0",
"DiscordRichPresence": "1.2.1.24",
"Facepunch.Steamworks": "2.4.1",
"Microsoft.Extensions.Hosting": "8.0.0",
- "OpenMcdf": "2.4.1",
+ "OpenMcdf": "3.1.4",
"SixLabors.ImageSharp": "2.1.11",
"System.Management": "8.0.0",
"lzo.net": "0.0.6",
@@ -23,6 +23,14 @@
"clientogl.dll": {}
}
},
+ "Cyotek.Drawing.BitmapFont/2.0.4": {
+ "runtime": {
+ "lib/net5.0/Cyotek.Drawing.BitmapFont.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "2.0.4.0"
+ }
+ }
+ },
"DiscordRichPresence/1.2.1.24": {
"dependencies": {
"Newtonsoft.Json": "13.0.1"
@@ -42,6 +50,92 @@
}
}
},
+ "FontStashSharp.Base/1.2.3": {
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.Base.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.MonoGame/1.5.5": {
+ "dependencies": {
+ "Cyotek.Drawing.BitmapFont": "2.0.4",
+ "FontStashSharp.Base": "1.2.3",
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp": "1.2.3",
+ "StbImageSharp": "2.30.15"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.MonoGame.dll": {
+ "assemblyVersion": "1.5.5.0",
+ "fileVersion": "1.5.5.0"
+ }
+ }
+ },
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp/1.2.3": {
+ "dependencies": {
+ "FontStashSharp.Base": "1.2.3",
+ "StbTrueTypeSharp": "1.26.12"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.TextShapers.HarfBuzz/1.2.3": {
+ "dependencies": {
+ "FontStashSharp.Base": "1.2.3",
+ "HarfBuzzSharp": "8.3.1.2"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.TextShapers.HarfBuzz.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "HarfBuzzSharp/8.3.1.2": {
+ "dependencies": {
+ "HarfBuzzSharp.NativeAssets.Win32": "8.3.1.2",
+ "HarfBuzzSharp.NativeAssets.macOS": "8.3.1.2"
+ },
+ "runtime": {
+ "lib/net8.0/HarfBuzzSharp.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "8.3.1.2"
+ }
+ }
+ },
+ "HarfBuzzSharp.NativeAssets.macOS/8.3.1.2": {
+ "runtimeTargets": {
+ "runtimes/osx/native/libHarfBuzzSharp.dylib": {
+ "rid": "osx",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "HarfBuzzSharp.NativeAssets.Win32/8.3.1.2": {
+ "runtimeTargets": {
+ "runtimes/win-arm64/native/libHarfBuzzSharp.dll": {
+ "rid": "win-arm64",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ },
+ "runtimes/win-x64/native/libHarfBuzzSharp.dll": {
+ "rid": "win-x64",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ },
+ "runtimes/win-x86/native/libHarfBuzzSharp.dll": {
+ "rid": "win-x86",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
"lzo.net/0.0.6": {
"runtime": {
"lib/netstandard2.0/lzo.net.dll": {
@@ -489,11 +583,11 @@
}
}
},
- "OpenMcdf/2.4.1": {
+ "OpenMcdf/3.1.4": {
"runtime": {
- "lib/netstandard2.0/OpenMcdf.dll": {
- "assemblyVersion": "2.4.1.0",
- "fileVersion": "2.4.1.0"
+ "lib/net8.0/OpenMcdf.dll": {
+ "assemblyVersion": "3.1.4.0",
+ "fileVersion": "3.1.4.0"
}
}
},
@@ -505,6 +599,22 @@
}
}
},
+ "StbImageSharp/2.30.15": {
+ "runtime": {
+ "lib/netstandard2.0/StbImageSharp.dll": {
+ "assemblyVersion": "2.30.15.0",
+ "fileVersion": "2.30.15.0"
+ }
+ }
+ },
+ "StbTrueTypeSharp/1.26.12": {
+ "runtime": {
+ "lib/netstandard2.0/StbTrueTypeSharp.dll": {
+ "assemblyVersion": "1.26.12.0",
+ "fileVersion": "1.26.12.0"
+ }
+ }
+ },
"System.Management/8.0.0": {
"runtime": {
"lib/net8.0/System.Management.dll": {
@@ -547,8 +657,8 @@
},
"runtime": {
"ClientCore.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -559,8 +669,8 @@
},
"runtime": {
"ClientGUI.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -571,8 +681,8 @@
},
"runtime": {
"ClientUpdater.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -586,6 +696,8 @@
},
"Rampastring.XNAUI.WindowsGL/1.0.0": {
"dependencies": {
+ "FontStashSharp.MonoGame": "1.5.5",
+ "FontStashSharp.TextShapers.HarfBuzz": "1.2.3",
"MonoGame.Framework.DesktopGL": "3.8.1.303",
"Rampastring.Tools": "1.0.0",
"SixLabors.ImageSharp": "2.1.11",
@@ -608,11 +720,18 @@
}
},
"libraries": {
- "clientogl/2.12.18": {
+ "clientogl/2.13.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
+ "Cyotek.Drawing.BitmapFont/2.0.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-iA6WehGVdMUuNbfsQQDq/Bt+mMd/OqHjiMUtKFLIQd/0pyYh4ehT7FEjTxN9/4OXNKQZsp9bAJgltP2nnswUJg==",
+ "path": "cyotek.drawing.bitmapfont/2.0.4",
+ "hashPath": "cyotek.drawing.bitmapfont.2.0.4.nupkg.sha512"
+ },
"DiscordRichPresence/1.2.1.24": {
"type": "package",
"serviceable": true,
@@ -627,6 +746,55 @@
"path": "facepunch.steamworks/2.4.1",
"hashPath": "facepunch.steamworks.2.4.1.nupkg.sha512"
},
+ "FontStashSharp.Base/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kw8ovakGHz8jCah+H5M7qI8aOvtESF0jQRpcpubXUMsSid86dRO6DoDPlh+Tk/XAW5a3XgzGDgsHfeZTfZTr+Q==",
+ "path": "fontstashsharp.base/1.2.3",
+ "hashPath": "fontstashsharp.base.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.MonoGame/1.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-UTHcfF2qLr06SWl69BCfDw/cguzGPPzICRuJ8xmh/vKHYya9OgrJXglhKU8GRsUmEpv/hc6gwXd4wICgF8c9Qg==",
+ "path": "fontstashsharp.monogame/1.5.5",
+ "hashPath": "fontstashsharp.monogame.1.5.5.nupkg.sha512"
+ },
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xjzgWeiaODbW7DR/kI05V7C3CVtDvtB+4TrgX4EKNpRGzxb42vsvXKWrXORQWU2LCLnPPqdBNNSgtRujnpK2ww==",
+ "path": "fontstashsharp.rasterizers.stbtruetypesharp/1.2.3",
+ "hashPath": "fontstashsharp.rasterizers.stbtruetypesharp.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.TextShapers.HarfBuzz/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XNqav6B77iq1JaN+O+vy7bGE2jEhM5ySMMnNZyFBGDPtd5Fi1PWew6DmVqzvqHDksVdAuGzXWmYd82ODIwQb5A==",
+ "path": "fontstashsharp.textshapers.harfbuzz/1.2.3",
+ "hashPath": "fontstashsharp.textshapers.harfbuzz.1.2.3.nupkg.sha512"
+ },
+ "HarfBuzzSharp/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-fqZTo17dEIn/u/YZ1A6avsmF8BYoLSvDsHm+uDp38wortckHWZhJ5pMwJW97xTeOZ9/oxqwUQfRMkf6ni9s5Gw==",
+ "path": "harfbuzzsharp/8.3.1.2",
+ "hashPath": "harfbuzzsharp.8.3.1.2.nupkg.sha512"
+ },
+ "HarfBuzzSharp.NativeAssets.macOS/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+0NtlZSQA540z6VpVoajXldvAOuj5D+BWceh70U3YApxcpUKD/5hjdbdzvyhRaTSTCSZNjRxeaWpBpgJ1U1YcQ==",
+ "path": "harfbuzzsharp.nativeassets.macos/8.3.1.2",
+ "hashPath": "harfbuzzsharp.nativeassets.macos.8.3.1.2.nupkg.sha512"
+ },
+ "HarfBuzzSharp.NativeAssets.Win32/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qmYJsYtOPVeLg7NQoKO5fq1oc5mRKzdgxBXWICx0R03epZ1RIsuzgWRFhVNN0br3c+J+9rIQhy0SXdBwVv0ebA==",
+ "path": "harfbuzzsharp.nativeassets.win32/8.3.1.2",
+ "hashPath": "harfbuzzsharp.nativeassets.win32.8.3.1.2.nupkg.sha512"
+ },
"lzo.net/0.0.6": {
"type": "package",
"serviceable": true,
@@ -851,12 +1019,12 @@
"path": "newtonsoft.json.bson/1.0.2",
"hashPath": "newtonsoft.json.bson.1.0.2.nupkg.sha512"
},
- "OpenMcdf/2.4.1": {
+ "OpenMcdf/3.1.4": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-0XVhI+P6pe80xYntIeF6H4F7AIL4ZolMTI5vkm3QUt9XTnRJht6CNYk1eSfI8YInRble6cw91ypF5llPXzKD/A==",
- "path": "openmcdf/2.4.1",
- "hashPath": "openmcdf.2.4.1.nupkg.sha512"
+ "sha512": "sha512-ncchtCh9YKqutHTlUCrr1llXA65ijGOCjXBM0mL1+WaGouApWDEACWbBHGzuYcAvB+rgW6IgO4AKgmZ2v1moNA==",
+ "path": "openmcdf/3.1.4",
+ "hashPath": "openmcdf.3.1.4.nupkg.sha512"
},
"SixLabors.ImageSharp/2.1.11": {
"type": "package",
@@ -865,6 +1033,20 @@
"path": "sixlabors.imagesharp/2.1.11",
"hashPath": "sixlabors.imagesharp.2.1.11.nupkg.sha512"
},
+ "StbImageSharp/2.30.15": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7QqbupVhz2kcFUPTgMw4iHR9rYDHGundzzee19Mwmd1typ2Lnv8EVJcLJxlkeBM2+4ex0NwsMtdbGSJctp1XCQ==",
+ "path": "stbimagesharp/2.30.15",
+ "hashPath": "stbimagesharp.2.30.15.nupkg.sha512"
+ },
+ "StbTrueTypeSharp/1.26.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hCc6/OsfcPa5VsLECcEU2m78WOshBrKwK42nAodSm9Z5wH68f7n66SoiRLCdGCkDaqbWz2TlX4zYHIjogj1HJA==",
+ "path": "stbtruetypesharp/1.26.12",
+ "hashPath": "stbtruetypesharp.1.26.12.nupkg.sha512"
+ },
"System.Management/8.0.0": {
"type": "package",
"serviceable": true,
diff --git a/package/Resources/BinariesNET8/OpenGL/clientogl.dll b/package/Resources/BinariesNET8/OpenGL/clientogl.dll
index 3273b4528..fa292c2d3 100644
Binary files a/package/Resources/BinariesNET8/OpenGL/clientogl.dll and b/package/Resources/BinariesNET8/OpenGL/clientogl.dll differ
diff --git a/package/Resources/BinariesNET8/OpenGL/clientogl.pdb b/package/Resources/BinariesNET8/OpenGL/clientogl.pdb
index 76ebcd37c..09ce80555 100644
Binary files a/package/Resources/BinariesNET8/OpenGL/clientogl.pdb and b/package/Resources/BinariesNET8/OpenGL/clientogl.pdb differ
diff --git a/package/Resources/BinariesNET8/OpenGL/runtimes/win-arm64/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/OpenGL/runtimes/win-arm64/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..2d68b66cb
Binary files /dev/null and b/package/Resources/BinariesNET8/OpenGL/runtimes/win-arm64/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/OpenGL/runtimes/win-x64/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/OpenGL/runtimes/win-x64/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..6e84cf2ac
Binary files /dev/null and b/package/Resources/BinariesNET8/OpenGL/runtimes/win-x64/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/steam_api64.dll b/package/Resources/BinariesNET8/OpenGL/runtimes/win-x64/native/steam_api64.dll
similarity index 100%
rename from package/Resources/BinariesNET8/steam_api64.dll
rename to package/Resources/BinariesNET8/OpenGL/runtimes/win-x64/native/steam_api64.dll
diff --git a/package/Resources/BinariesNET8/OpenGL/runtimes/win-x86/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/OpenGL/runtimes/win-x86/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..68b23abb4
Binary files /dev/null and b/package/Resources/BinariesNET8/OpenGL/runtimes/win-x86/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/OpenMcdf.dll b/package/Resources/BinariesNET8/OpenMcdf.dll
index afcb5c5de..6a50eadae 100644
Binary files a/package/Resources/BinariesNET8/OpenMcdf.dll and b/package/Resources/BinariesNET8/OpenMcdf.dll differ
diff --git a/package/Resources/BinariesNET8/Rampastring.Tools.dll b/package/Resources/BinariesNET8/Rampastring.Tools.dll
index 0c7a9bc9b..a0cc5a9d2 100644
Binary files a/package/Resources/BinariesNET8/Rampastring.Tools.dll and b/package/Resources/BinariesNET8/Rampastring.Tools.dll differ
diff --git a/package/Resources/BinariesNET8/Rampastring.Tools.pdb b/package/Resources/BinariesNET8/Rampastring.Tools.pdb
index 9faf9d29b..f19993e66 100644
Binary files a/package/Resources/BinariesNET8/Rampastring.Tools.pdb and b/package/Resources/BinariesNET8/Rampastring.Tools.pdb differ
diff --git a/package/Resources/BinariesNET8/Rampastring.Tools.xml b/package/Resources/BinariesNET8/Rampastring.Tools.xml
index ac4f89e73..0cc4b8e30 100644
--- a/package/Resources/BinariesNET8/Rampastring.Tools.xml
+++ b/package/Resources/BinariesNET8/Rampastring.Tools.xml
@@ -267,6 +267,14 @@
The first INI file.
The second INI file.
+
+
+ Gets or sets a value that determines whether reading from or writing to a file
+ named "desktop.ini" (in any directory) is forbidden. When set to ,
+ any such attempt throws an .
+ Defaults to .
+
+
Creates a new INI file instance.
diff --git a/package/Resources/BinariesNET8/StbImageSharp.dll b/package/Resources/BinariesNET8/StbImageSharp.dll
new file mode 100644
index 000000000..312aef348
Binary files /dev/null and b/package/Resources/BinariesNET8/StbImageSharp.dll differ
diff --git a/package/Resources/BinariesNET8/StbTrueTypeSharp.dll b/package/Resources/BinariesNET8/StbTrueTypeSharp.dll
new file mode 100644
index 000000000..af60f3208
Binary files /dev/null and b/package/Resources/BinariesNET8/StbTrueTypeSharp.dll differ
diff --git a/package/Resources/BinariesNET8/OpenGL/Ude.NetStandard.dll b/package/Resources/BinariesNET8/Ude.NetStandard.dll
similarity index 100%
rename from package/Resources/BinariesNET8/OpenGL/Ude.NetStandard.dll
rename to package/Resources/BinariesNET8/Ude.NetStandard.dll
diff --git a/package/Resources/BinariesNET8/UniversalGL/ClientCore.dll b/package/Resources/BinariesNET8/UniversalGL/ClientCore.dll
index 410011fa7..aa9f7b381 100644
Binary files a/package/Resources/BinariesNET8/UniversalGL/ClientCore.dll and b/package/Resources/BinariesNET8/UniversalGL/ClientCore.dll differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/ClientCore.pdb b/package/Resources/BinariesNET8/UniversalGL/ClientCore.pdb
index 445a49c22..7a737aa32 100644
Binary files a/package/Resources/BinariesNET8/UniversalGL/ClientCore.pdb and b/package/Resources/BinariesNET8/UniversalGL/ClientCore.pdb differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/ClientGUI.dll b/package/Resources/BinariesNET8/UniversalGL/ClientGUI.dll
index 0dd1f112f..62bf24880 100644
Binary files a/package/Resources/BinariesNET8/UniversalGL/ClientGUI.dll and b/package/Resources/BinariesNET8/UniversalGL/ClientGUI.dll differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/ClientGUI.pdb b/package/Resources/BinariesNET8/UniversalGL/ClientGUI.pdb
index 9f13a56c7..f5e762a02 100644
Binary files a/package/Resources/BinariesNET8/UniversalGL/ClientGUI.pdb and b/package/Resources/BinariesNET8/UniversalGL/ClientGUI.pdb differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/FontStashSharp.MonoGame.dll b/package/Resources/BinariesNET8/UniversalGL/FontStashSharp.MonoGame.dll
new file mode 100644
index 000000000..d075ee17f
Binary files /dev/null and b/package/Resources/BinariesNET8/UniversalGL/FontStashSharp.MonoGame.dll differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.dll b/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.dll
index 19be7da7f..ba893bdb1 100644
Binary files a/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.dll and b/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.dll differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.pdb b/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.pdb
index a311770f1..3b6b2221e 100644
Binary files a/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.pdb and b/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.pdb differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.xml b/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.xml
index c6bfec978..117b75c21 100644
--- a/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.xml
+++ b/package/Resources/BinariesNET8/UniversalGL/Rampastring.XNAUI.UniversalGL.xml
@@ -171,11 +171,6 @@
Plays this sound if it's enabled.
-
-
- Disposes the sound effect.
-
-
Updates the priority of the sound. Returns true if the sound effect is
@@ -184,6 +179,228 @@
Tells how much time has passed since the previous frame.
True if the sound effect is still playing, otherwise false.
+
+
+ Sets the root directory for the ContentManager with XNA vs MonoGame differences.
+
+ The ContentManager instance.
+ The new root directory path.
+
+
+
+ Extension methods for .
+
+
+
+
+ Returns a substring of this string starting at and containing at most
+ UTF-16 code units, ensuring the result does not end with an orphaned high surrogate.
+
+ The string to slice.
+ The zero-based start index of the substring.
+ Maximum number of UTF-16 code units to include in the result. Must be non-negative.
+ The safe substring.
+
+
+
+ Manages font loading and rendering for the UI system.
+ Supports both SpriteFont and TrueType fonts with automatic fallback.
+
+
+
+ For TrueType fonts, FontManager creates a separate FontSystem for each font index.
+ Each FontSystem has a primary font (specified via Path) and optional per-font fallback
+ chain (via Fallback=N pointing to another font index). When a character is not found in
+ the primary font, it falls back through the chain in order.
+
+
+ The Fonts.ini file format supports:
+
+ - [TextShaping] - Optional HarfBuzz text shaping configuration
+ - [Fonts] - Font index definitions with Size, Type, optional Path, and optional Fallback
+
+
+
+
+
+
+ When set before runs, skips the Fonts.ini search and
+ loads only legacy SpriteFontN.xnb assets. Lets clients offer an opt-out from
+ TrueType rendering.
+
+
+
+
+ Gets the current text shaping settings.
+
+
+
+
+ Gets the current font rendering settings.
+
+
+
+
+ Checks if text shaping is currently enabled.
+
+
+
+
+ Creates a new FontSystem with current text shaping settings.
+
+
+
+
+ Loads fonts from the first Fonts.ini found in asset search paths.
+
+
+
+ Loading happens in two phases:
+
+
+ Phase 1: Load configuration from the first Fonts.ini:
+ - [TextShaping] settings
+ - [Fonts] definitions (type, path, size, fallback)
+
+
+ Phase 2: Create font indexes:
+ - For TrueType fonts: Create a FontSystem with primary font first, then follow the per-font fallback chain
+ - For SpriteFonts: Load the .xnb file
+
+
+
+ When non-null, overrides any FontResolutionFactor from [FontRendering]
+ in Fonts.ini. Used by to keep TTF
+ glyphs sharp when the render target is upscaled.
+
+
+
+
+ Loads fonts from a specific Fonts.ini file.
+
+
+
+
+ Creates FontIndex entries from a Fonts.ini file.
+ For each TrueType font, creates a separate FontSystem with the primary font first,
+ then follows the per-font fallback chain to add additional fonts.
+
+
+
+
+ Creates a TrueType font index with its own FontSystem.
+ The FontSystem contains the primary font first, then fonts from
+ the fallback chain (each [FontN] can point to another via Fallback=X).
+
+
+
+
+ Loads a SpriteFont and adds it to the font list.
+
+
+
+
+ Loads legacy SpriteFonts (SpriteFont0, SpriteFont1, etc.) from a search path.
+ This method appends new fonts to the existing font list instead of replacing it.
+
+
+
+
+ Configuration for FontStashSharp glyph rasterization.
+
+
+
+
+ Horizontal blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelWidth. Must be non-negative.
+
+
+
+
+ Vertical blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelHeight. Must be non-negative.
+
+
+
+
+ Multiplier applied to the rasterization size of each glyph.
+ Values > 1 produce sharper output when text is drawn at scales above 1.0
+ at the cost of a larger atlas footprint.
+
+
+
+
+ Width of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ Height of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ How rasterized glyph pixels are produced.
+ matches a premultiplied-alpha SpriteBatch,
+ matches AlphaBlend, and
+ produces hard 1-bit edges for pixel-art fonts.
+
+
+
+
+ Configuration for HarfBuzz text shaping.
+ Text shaping is required for complex scripts (Arabic, Hebrew, Hindi, etc.)
+ and proper rendering of emoji sequences and ligatures.
+
+
+
+
+ Enable HarfBuzz text shaping for complex scripts.
+ When enabled, text will be properly shaped for languages that require it.
+
+
+
+
+ Enable bidirectional text support for mixed LTR/RTL text.
+ Only applies when Enabled is true.
+
+
+
+
+ Size of the shaped text cache.
+ Higher values use more memory but reduce shaping overhead for repeated text.
+ Default: 100
+
+
+
+
+ Returns the value V to plug into (controlHeight - V) / 2 for
+ vertical centering. NOT a geometric height: this is top + bottom of the
+ cap glyph 'H' from the draw origin (i.e. minY + maxY from FontStashSharp's
+ TextBounds), chosen so the cap-glyph midpoint lands at controlHeight / 2
+ independent of descenders. The geometric glyph height would be maxY - minY.
+
+
+
+
+ For TTF fonts, this always returns true because FontStashSharp can dynamically
+ generate glyphs for any character. If a glyph is not available in the font file,
+ a replacement glyph (like � or ?) will be rendered instead.
+
+
+
+
+ Returns a sanitized string safe for rendering. It replaces unpaired surrogates
+ with U+FFFD so FontStashSharp's UTF-16 -> UTF-32 conversion does not throw.
+
+
+
+
+ Replaces unpaired UTF-16 surrogates with U+FFFD. Returns the original
+ string reference unchanged when the input is already valid (the common case),
+ to avoid allocations on the rendering hot path.
+
+
The exception that is thrown when the fails to find a matching
@@ -302,17 +519,13 @@
A boolean that determines whether borderless
windowed mode should be enabled.
-
+
- Provides static methods for drawing.
+ Reloads fonts with a new resolution factor matching the given scale ratio,
+ so TTF glyphs are rasterized at native display quality rather than being
+ scaled up from the render resolution.
-
-
- Clears all potentially existing loaded fonts and then loads fonts from asset loader directories.
-
- A XNA/MonoGame ContentManager instance.
-
Allows direct access to the list of loaded fonts.
@@ -320,16 +533,15 @@
- Returns a version of the given string where all characters that don't
- appear in the given font have been replaced with question marks.
+ Returns a version of the given string that the font renderer can safely display without crashing.
The string.
The index of the font.
- Returns a that has had its width limited to a specific number.
- Characters that'd cross over the width have been cut.
+ Returns a string that has had its width limited to a specific number.
+ Characters that would cross over the width have been cut.
The string to limit.
The index of the font to use.
@@ -591,6 +803,12 @@
The control, of the highest generation, that the mouse cursor is currently positioned on.
+
+
+ If specified, the control blocks other controls on the screen
+ from being interacted with. Defaults to null.
+
+
Sets the rendering (back buffer) resolution of the game.
@@ -1006,18 +1224,39 @@
Raised when the mouse cursor enters the control's area.
+
+
+ Raised during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the left mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the right mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the middle mouse button is pressed down while the
@@ -1039,6 +1278,20 @@
Raised each frame when the mouse cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll vertically.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll horizontally.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the scroll wheel is used to scroll vertically
@@ -1051,6 +1304,13 @@
while the cursor is inside the control.
+
+
+ Raised during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the left mouse button is clicked (pressed and released)
@@ -1063,12 +1323,26 @@
time-frame while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the right mouse button is clicked (pressed and released)
while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the middle mouse button is clicked (pressed and released)
@@ -1608,45 +1882,87 @@
Called when the mouse cursor leaves the control's client rectangle.
+
+
+ Called during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the left mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the right mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the middle mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked on the control's client rectangle.
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked twice on the control's client rectangle.
+
+
+ Called during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the right mouse button has been
+ Called when the right mouse button has been
clicked on the control's client rectangle.
+
+
+ Called during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the middle mouse button has been
+ Called when the middle mouse button has been
clicked on the control's client rectangle.
@@ -1661,9 +1977,23 @@
client rectangle.
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled vertically.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled horizontally.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the scroll wheel has been scrolled on the
+ Called when the scroll wheel has been scrolled on the
control's client rectangle.
@@ -1740,6 +2070,41 @@
If set, the drop-down is opened upwards rather than downwards.
+
+
+ When the selected item's text is too wide for the closed control, it is always
+ cut off at the last fully fitting character so it does not visually overrun the
+ control's bounds. If this property is enabled, an ellipsis ("...") is appended
+ to indicate that the text has been truncated.
+
+
+
+
+ The width of the open dropdown list. Computed in as the
+ maximum of and the widest item's content width, so
+ wide items remain fully visible when the list is expanded.
+
+
+
+
+ Stores the control width used when the dropdown is closed so it can be restored
+ after the expanded list has temporarily widened the control. Null when no closed
+ width has been captured yet, so a legitimate of 0
+ is preserved instead of being treated as "not captured".
+
+
+
+
+ Ensures the framework-visible control width matches the actual visible dropdown
+ width while the list is open, and restores the original width when the list closes.
+
+
+
+
+ Current visible width of the control, accounting for whether the dropdown list
+ is open and may be wider than the closed-state .
+
+
Adds an item into the drop-down.
@@ -1779,6 +2144,18 @@
Returns the index of the item that the cursor currently points to.
+
+
+ Invalidates the cached display text.
+
+
+
+
+ Gets the display text for the selected item, fitted to the control's bounds so
+ it does not visually overrun the control. Appends an ellipsis to indicate
+ truncation when is enabled.
+
+
Draws the drop-down.
diff --git a/package/Resources/BinariesNET8/UniversalGL/Ude.NetStandard.dll b/package/Resources/BinariesNET8/UniversalGL/Ude.NetStandard.dll
deleted file mode 100644
index 2cb9b2f50..000000000
Binary files a/package/Resources/BinariesNET8/UniversalGL/Ude.NetStandard.dll and /dev/null differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/clientogl.deps.json b/package/Resources/BinariesNET8/UniversalGL/clientogl.deps.json
index 19b65818d..2476dc4d0 100644
--- a/package/Resources/BinariesNET8/UniversalGL/clientogl.deps.json
+++ b/package/Resources/BinariesNET8/UniversalGL/clientogl.deps.json
@@ -6,14 +6,14 @@
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
- "clientogl/2.12.18": {
+ "clientogl/2.13.0": {
"dependencies": {
"ClientGUI": "1.0.0",
"ClientUpdater": "1.0.0",
"DiscordRichPresence": "1.2.1.24",
"Facepunch.Steamworks": "2.4.1",
"Microsoft.Extensions.Hosting": "8.0.0",
- "OpenMcdf": "2.4.1",
+ "OpenMcdf": "3.1.4",
"SixLabors.ImageSharp": "2.1.11",
"System.DirectoryServices": "8.0.0",
"System.Management": "8.0.0",
@@ -24,6 +24,14 @@
"clientogl.dll": {}
}
},
+ "Cyotek.Drawing.BitmapFont/2.0.4": {
+ "runtime": {
+ "lib/net5.0/Cyotek.Drawing.BitmapFont.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "2.0.4.0"
+ }
+ }
+ },
"DiscordRichPresence/1.2.1.24": {
"dependencies": {
"Newtonsoft.Json": "13.0.1"
@@ -43,6 +51,92 @@
}
}
},
+ "FontStashSharp.Base/1.2.3": {
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.Base.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.MonoGame/1.5.5": {
+ "dependencies": {
+ "Cyotek.Drawing.BitmapFont": "2.0.4",
+ "FontStashSharp.Base": "1.2.3",
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp": "1.2.3",
+ "StbImageSharp": "2.30.15"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.MonoGame.dll": {
+ "assemblyVersion": "1.5.5.0",
+ "fileVersion": "1.5.5.0"
+ }
+ }
+ },
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp/1.2.3": {
+ "dependencies": {
+ "FontStashSharp.Base": "1.2.3",
+ "StbTrueTypeSharp": "1.26.12"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.TextShapers.HarfBuzz/1.2.3": {
+ "dependencies": {
+ "FontStashSharp.Base": "1.2.3",
+ "HarfBuzzSharp": "8.3.1.2"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.TextShapers.HarfBuzz.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "HarfBuzzSharp/8.3.1.2": {
+ "dependencies": {
+ "HarfBuzzSharp.NativeAssets.Win32": "8.3.1.2",
+ "HarfBuzzSharp.NativeAssets.macOS": "8.3.1.2"
+ },
+ "runtime": {
+ "lib/net8.0/HarfBuzzSharp.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "8.3.1.2"
+ }
+ }
+ },
+ "HarfBuzzSharp.NativeAssets.macOS/8.3.1.2": {
+ "runtimeTargets": {
+ "runtimes/osx/native/libHarfBuzzSharp.dylib": {
+ "rid": "osx",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "HarfBuzzSharp.NativeAssets.Win32/8.3.1.2": {
+ "runtimeTargets": {
+ "runtimes/win-arm64/native/libHarfBuzzSharp.dll": {
+ "rid": "win-arm64",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ },
+ "runtimes/win-x64/native/libHarfBuzzSharp.dll": {
+ "rid": "win-x64",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ },
+ "runtimes/win-x86/native/libHarfBuzzSharp.dll": {
+ "rid": "win-x86",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
"lzo.net/0.0.6": {
"runtime": {
"lib/netstandard2.0/lzo.net.dll": {
@@ -491,11 +585,11 @@
}
}
},
- "OpenMcdf/2.4.1": {
+ "OpenMcdf/3.1.4": {
"runtime": {
- "lib/netstandard2.0/OpenMcdf.dll": {
- "assemblyVersion": "2.4.1.0",
- "fileVersion": "2.4.1.0"
+ "lib/net8.0/OpenMcdf.dll": {
+ "assemblyVersion": "3.1.4.0",
+ "fileVersion": "3.1.4.0"
}
}
},
@@ -507,6 +601,22 @@
}
}
},
+ "StbImageSharp/2.30.15": {
+ "runtime": {
+ "lib/netstandard2.0/StbImageSharp.dll": {
+ "assemblyVersion": "2.30.15.0",
+ "fileVersion": "2.30.15.0"
+ }
+ }
+ },
+ "StbTrueTypeSharp/1.26.12": {
+ "runtime": {
+ "lib/netstandard2.0/StbTrueTypeSharp.dll": {
+ "assemblyVersion": "1.26.12.0",
+ "fileVersion": "1.26.12.0"
+ }
+ }
+ },
"System.CodeDom/8.0.0": {
"runtime": {
"lib/net8.0/System.CodeDom.dll": {
@@ -598,8 +708,8 @@
},
"runtime": {
"ClientCore.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -610,8 +720,8 @@
},
"runtime": {
"ClientGUI.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -622,8 +732,8 @@
},
"runtime": {
"ClientUpdater.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -637,6 +747,8 @@
},
"Rampastring.XNAUI.UniversalGL/1.0.0": {
"dependencies": {
+ "FontStashSharp.MonoGame": "1.5.5",
+ "FontStashSharp.TextShapers.HarfBuzz": "1.2.3",
"MonoGame.Framework.DesktopGL": "3.8.1.303",
"Rampastring.Tools": "1.0.0",
"SixLabors.ImageSharp": "2.1.11",
@@ -659,11 +771,18 @@
}
},
"libraries": {
- "clientogl/2.12.18": {
+ "clientogl/2.13.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
+ "Cyotek.Drawing.BitmapFont/2.0.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-iA6WehGVdMUuNbfsQQDq/Bt+mMd/OqHjiMUtKFLIQd/0pyYh4ehT7FEjTxN9/4OXNKQZsp9bAJgltP2nnswUJg==",
+ "path": "cyotek.drawing.bitmapfont/2.0.4",
+ "hashPath": "cyotek.drawing.bitmapfont.2.0.4.nupkg.sha512"
+ },
"DiscordRichPresence/1.2.1.24": {
"type": "package",
"serviceable": true,
@@ -678,6 +797,55 @@
"path": "facepunch.steamworks/2.4.1",
"hashPath": "facepunch.steamworks.2.4.1.nupkg.sha512"
},
+ "FontStashSharp.Base/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kw8ovakGHz8jCah+H5M7qI8aOvtESF0jQRpcpubXUMsSid86dRO6DoDPlh+Tk/XAW5a3XgzGDgsHfeZTfZTr+Q==",
+ "path": "fontstashsharp.base/1.2.3",
+ "hashPath": "fontstashsharp.base.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.MonoGame/1.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-UTHcfF2qLr06SWl69BCfDw/cguzGPPzICRuJ8xmh/vKHYya9OgrJXglhKU8GRsUmEpv/hc6gwXd4wICgF8c9Qg==",
+ "path": "fontstashsharp.monogame/1.5.5",
+ "hashPath": "fontstashsharp.monogame.1.5.5.nupkg.sha512"
+ },
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xjzgWeiaODbW7DR/kI05V7C3CVtDvtB+4TrgX4EKNpRGzxb42vsvXKWrXORQWU2LCLnPPqdBNNSgtRujnpK2ww==",
+ "path": "fontstashsharp.rasterizers.stbtruetypesharp/1.2.3",
+ "hashPath": "fontstashsharp.rasterizers.stbtruetypesharp.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.TextShapers.HarfBuzz/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XNqav6B77iq1JaN+O+vy7bGE2jEhM5ySMMnNZyFBGDPtd5Fi1PWew6DmVqzvqHDksVdAuGzXWmYd82ODIwQb5A==",
+ "path": "fontstashsharp.textshapers.harfbuzz/1.2.3",
+ "hashPath": "fontstashsharp.textshapers.harfbuzz.1.2.3.nupkg.sha512"
+ },
+ "HarfBuzzSharp/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-fqZTo17dEIn/u/YZ1A6avsmF8BYoLSvDsHm+uDp38wortckHWZhJ5pMwJW97xTeOZ9/oxqwUQfRMkf6ni9s5Gw==",
+ "path": "harfbuzzsharp/8.3.1.2",
+ "hashPath": "harfbuzzsharp.8.3.1.2.nupkg.sha512"
+ },
+ "HarfBuzzSharp.NativeAssets.macOS/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+0NtlZSQA540z6VpVoajXldvAOuj5D+BWceh70U3YApxcpUKD/5hjdbdzvyhRaTSTCSZNjRxeaWpBpgJ1U1YcQ==",
+ "path": "harfbuzzsharp.nativeassets.macos/8.3.1.2",
+ "hashPath": "harfbuzzsharp.nativeassets.macos.8.3.1.2.nupkg.sha512"
+ },
+ "HarfBuzzSharp.NativeAssets.Win32/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qmYJsYtOPVeLg7NQoKO5fq1oc5mRKzdgxBXWICx0R03epZ1RIsuzgWRFhVNN0br3c+J+9rIQhy0SXdBwVv0ebA==",
+ "path": "harfbuzzsharp.nativeassets.win32/8.3.1.2",
+ "hashPath": "harfbuzzsharp.nativeassets.win32.8.3.1.2.nupkg.sha512"
+ },
"lzo.net/0.0.6": {
"type": "package",
"serviceable": true,
@@ -902,12 +1070,12 @@
"path": "newtonsoft.json.bson/1.0.2",
"hashPath": "newtonsoft.json.bson.1.0.2.nupkg.sha512"
},
- "OpenMcdf/2.4.1": {
+ "OpenMcdf/3.1.4": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-0XVhI+P6pe80xYntIeF6H4F7AIL4ZolMTI5vkm3QUt9XTnRJht6CNYk1eSfI8YInRble6cw91ypF5llPXzKD/A==",
- "path": "openmcdf/2.4.1",
- "hashPath": "openmcdf.2.4.1.nupkg.sha512"
+ "sha512": "sha512-ncchtCh9YKqutHTlUCrr1llXA65ijGOCjXBM0mL1+WaGouApWDEACWbBHGzuYcAvB+rgW6IgO4AKgmZ2v1moNA==",
+ "path": "openmcdf/3.1.4",
+ "hashPath": "openmcdf.3.1.4.nupkg.sha512"
},
"SixLabors.ImageSharp/2.1.11": {
"type": "package",
@@ -916,6 +1084,20 @@
"path": "sixlabors.imagesharp/2.1.11",
"hashPath": "sixlabors.imagesharp.2.1.11.nupkg.sha512"
},
+ "StbImageSharp/2.30.15": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7QqbupVhz2kcFUPTgMw4iHR9rYDHGundzzee19Mwmd1typ2Lnv8EVJcLJxlkeBM2+4ex0NwsMtdbGSJctp1XCQ==",
+ "path": "stbimagesharp/2.30.15",
+ "hashPath": "stbimagesharp.2.30.15.nupkg.sha512"
+ },
+ "StbTrueTypeSharp/1.26.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hCc6/OsfcPa5VsLECcEU2m78WOshBrKwK42nAodSm9Z5wH68f7n66SoiRLCdGCkDaqbWz2TlX4zYHIjogj1HJA==",
+ "path": "stbtruetypesharp/1.26.12",
+ "hashPath": "stbtruetypesharp.1.26.12.nupkg.sha512"
+ },
"System.CodeDom/8.0.0": {
"type": "package",
"serviceable": true,
diff --git a/package/Resources/BinariesNET8/UniversalGL/clientogl.dll b/package/Resources/BinariesNET8/UniversalGL/clientogl.dll
index bbe160a31..83dc614d2 100755
Binary files a/package/Resources/BinariesNET8/UniversalGL/clientogl.dll and b/package/Resources/BinariesNET8/UniversalGL/clientogl.dll differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/clientogl.pdb b/package/Resources/BinariesNET8/UniversalGL/clientogl.pdb
index 54e6dd143..312be6166 100644
Binary files a/package/Resources/BinariesNET8/UniversalGL/clientogl.pdb and b/package/Resources/BinariesNET8/UniversalGL/clientogl.pdb differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/runtimes/osx/native/libHarfBuzzSharp.dylib b/package/Resources/BinariesNET8/UniversalGL/runtimes/osx/native/libHarfBuzzSharp.dylib
new file mode 100644
index 000000000..9939da542
Binary files /dev/null and b/package/Resources/BinariesNET8/UniversalGL/runtimes/osx/native/libHarfBuzzSharp.dylib differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/runtimes/win-arm64/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/UniversalGL/runtimes/win-arm64/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..2d68b66cb
Binary files /dev/null and b/package/Resources/BinariesNET8/UniversalGL/runtimes/win-arm64/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x64/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x64/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..6e84cf2ac
Binary files /dev/null and b/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x64/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x64/native/steam_api64.dll b/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x64/native/steam_api64.dll
new file mode 100644
index 000000000..0224579a1
Binary files /dev/null and b/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x64/native/steam_api64.dll differ
diff --git a/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x86/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x86/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..68b23abb4
Binary files /dev/null and b/package/Resources/BinariesNET8/UniversalGL/runtimes/win-x86/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/Updater/Rampastring.Tools.dll b/package/Resources/BinariesNET8/Updater/Rampastring.Tools.dll
index 6fe0fb7ee..276bf9364 100644
Binary files a/package/Resources/BinariesNET8/Updater/Rampastring.Tools.dll and b/package/Resources/BinariesNET8/Updater/Rampastring.Tools.dll differ
diff --git a/package/Resources/BinariesNET8/Updater/Rampastring.Tools.pdb b/package/Resources/BinariesNET8/Updater/Rampastring.Tools.pdb
index 81d88480a..4be8f06fa 100644
Binary files a/package/Resources/BinariesNET8/Updater/Rampastring.Tools.pdb and b/package/Resources/BinariesNET8/Updater/Rampastring.Tools.pdb differ
diff --git a/package/Resources/BinariesNET8/Updater/Rampastring.Tools.xml b/package/Resources/BinariesNET8/Updater/Rampastring.Tools.xml
index ac4f89e73..0cc4b8e30 100644
--- a/package/Resources/BinariesNET8/Updater/Rampastring.Tools.xml
+++ b/package/Resources/BinariesNET8/Updater/Rampastring.Tools.xml
@@ -267,6 +267,14 @@
The first INI file.
The second INI file.
+
+
+ Gets or sets a value that determines whether reading from or writing to a file
+ named "desktop.ini" (in any directory) is forbidden. When set to ,
+ any such attempt throws an .
+ Defaults to .
+
+
Creates a new INI file instance.
diff --git a/package/Resources/BinariesNET8/Updater/SecondStageUpdater.deps.json b/package/Resources/BinariesNET8/Updater/SecondStageUpdater.deps.json
index 3d402cb15..111ecf346 100644
--- a/package/Resources/BinariesNET8/Updater/SecondStageUpdater.deps.json
+++ b/package/Resources/BinariesNET8/Updater/SecondStageUpdater.deps.json
@@ -6,7 +6,7 @@
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
- "SecondStageUpdater/2.12.18": {
+ "SecondStageUpdater/2.13.0": {
"dependencies": {
"Rampastring.Tools": "1.0.0"
},
@@ -25,7 +25,7 @@
}
},
"libraries": {
- "SecondStageUpdater/2.12.18": {
+ "SecondStageUpdater/2.13.0": {
"type": "project",
"serviceable": false,
"sha512": ""
diff --git a/package/Resources/BinariesNET8/Updater/SecondStageUpdater.dll b/package/Resources/BinariesNET8/Updater/SecondStageUpdater.dll
index 1873470de..822d97ba3 100755
Binary files a/package/Resources/BinariesNET8/Updater/SecondStageUpdater.dll and b/package/Resources/BinariesNET8/Updater/SecondStageUpdater.dll differ
diff --git a/package/Resources/BinariesNET8/Updater/SecondStageUpdater.pdb b/package/Resources/BinariesNET8/Updater/SecondStageUpdater.pdb
index 299cc8c2a..a55e40749 100644
Binary files a/package/Resources/BinariesNET8/Updater/SecondStageUpdater.pdb and b/package/Resources/BinariesNET8/Updater/SecondStageUpdater.pdb differ
diff --git a/package/Resources/BinariesNET8/Windows/ClientCore.dll b/package/Resources/BinariesNET8/Windows/ClientCore.dll
index f601eff26..424f3ff67 100644
Binary files a/package/Resources/BinariesNET8/Windows/ClientCore.dll and b/package/Resources/BinariesNET8/Windows/ClientCore.dll differ
diff --git a/package/Resources/BinariesNET8/Windows/ClientCore.pdb b/package/Resources/BinariesNET8/Windows/ClientCore.pdb
index 55fc91882..71e3b5b37 100644
Binary files a/package/Resources/BinariesNET8/Windows/ClientCore.pdb and b/package/Resources/BinariesNET8/Windows/ClientCore.pdb differ
diff --git a/package/Resources/BinariesNET8/Windows/ClientGUI.dll b/package/Resources/BinariesNET8/Windows/ClientGUI.dll
index f0dff8342..a6776e5c1 100644
Binary files a/package/Resources/BinariesNET8/Windows/ClientGUI.dll and b/package/Resources/BinariesNET8/Windows/ClientGUI.dll differ
diff --git a/package/Resources/BinariesNET8/Windows/ClientGUI.pdb b/package/Resources/BinariesNET8/Windows/ClientGUI.pdb
index 8b8624307..706e395de 100644
Binary files a/package/Resources/BinariesNET8/Windows/ClientGUI.pdb and b/package/Resources/BinariesNET8/Windows/ClientGUI.pdb differ
diff --git a/package/Resources/BinariesNET8/Windows/FontStashSharp.MonoGame.dll b/package/Resources/BinariesNET8/Windows/FontStashSharp.MonoGame.dll
new file mode 100644
index 000000000..d075ee17f
Binary files /dev/null and b/package/Resources/BinariesNET8/Windows/FontStashSharp.MonoGame.dll differ
diff --git a/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.dll b/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.dll
index 247b5e550..60a81647b 100644
Binary files a/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.dll and b/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.dll differ
diff --git a/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.pdb b/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.pdb
index 7d40861e0..725278edd 100644
Binary files a/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.pdb and b/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.pdb differ
diff --git a/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.xml b/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.xml
index 71c93fbd0..69e7dcc33 100644
--- a/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.xml
+++ b/package/Resources/BinariesNET8/Windows/Rampastring.XNAUI.WindowsDX.xml
@@ -171,11 +171,6 @@
Plays this sound if it's enabled.
-
-
- Disposes the sound effect.
-
-
Updates the priority of the sound. Returns true if the sound effect is
@@ -184,6 +179,228 @@
Tells how much time has passed since the previous frame.
True if the sound effect is still playing, otherwise false.
+
+
+ Sets the root directory for the ContentManager with XNA vs MonoGame differences.
+
+ The ContentManager instance.
+ The new root directory path.
+
+
+
+ Extension methods for .
+
+
+
+
+ Returns a substring of this string starting at and containing at most
+ UTF-16 code units, ensuring the result does not end with an orphaned high surrogate.
+
+ The string to slice.
+ The zero-based start index of the substring.
+ Maximum number of UTF-16 code units to include in the result. Must be non-negative.
+ The safe substring.
+
+
+
+ Manages font loading and rendering for the UI system.
+ Supports both SpriteFont and TrueType fonts with automatic fallback.
+
+
+
+ For TrueType fonts, FontManager creates a separate FontSystem for each font index.
+ Each FontSystem has a primary font (specified via Path) and optional per-font fallback
+ chain (via Fallback=N pointing to another font index). When a character is not found in
+ the primary font, it falls back through the chain in order.
+
+
+ The Fonts.ini file format supports:
+
+ - [TextShaping] - Optional HarfBuzz text shaping configuration
+ - [Fonts] - Font index definitions with Size, Type, optional Path, and optional Fallback
+
+
+
+
+
+
+ When set before runs, skips the Fonts.ini search and
+ loads only legacy SpriteFontN.xnb assets. Lets clients offer an opt-out from
+ TrueType rendering.
+
+
+
+
+ Gets the current text shaping settings.
+
+
+
+
+ Gets the current font rendering settings.
+
+
+
+
+ Checks if text shaping is currently enabled.
+
+
+
+
+ Creates a new FontSystem with current text shaping settings.
+
+
+
+
+ Loads fonts from the first Fonts.ini found in asset search paths.
+
+
+
+ Loading happens in two phases:
+
+
+ Phase 1: Load configuration from the first Fonts.ini:
+ - [TextShaping] settings
+ - [Fonts] definitions (type, path, size, fallback)
+
+
+ Phase 2: Create font indexes:
+ - For TrueType fonts: Create a FontSystem with primary font first, then follow the per-font fallback chain
+ - For SpriteFonts: Load the .xnb file
+
+
+
+ When non-null, overrides any FontResolutionFactor from [FontRendering]
+ in Fonts.ini. Used by to keep TTF
+ glyphs sharp when the render target is upscaled.
+
+
+
+
+ Loads fonts from a specific Fonts.ini file.
+
+
+
+
+ Creates FontIndex entries from a Fonts.ini file.
+ For each TrueType font, creates a separate FontSystem with the primary font first,
+ then follows the per-font fallback chain to add additional fonts.
+
+
+
+
+ Creates a TrueType font index with its own FontSystem.
+ The FontSystem contains the primary font first, then fonts from
+ the fallback chain (each [FontN] can point to another via Fallback=X).
+
+
+
+
+ Loads a SpriteFont and adds it to the font list.
+
+
+
+
+ Loads legacy SpriteFonts (SpriteFont0, SpriteFont1, etc.) from a search path.
+ This method appends new fonts to the existing font list instead of replacing it.
+
+
+
+
+ Configuration for FontStashSharp glyph rasterization.
+
+
+
+
+ Horizontal blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelWidth. Must be non-negative.
+
+
+
+
+ Vertical blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelHeight. Must be non-negative.
+
+
+
+
+ Multiplier applied to the rasterization size of each glyph.
+ Values > 1 produce sharper output when text is drawn at scales above 1.0
+ at the cost of a larger atlas footprint.
+
+
+
+
+ Width of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ Height of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ How rasterized glyph pixels are produced.
+ matches a premultiplied-alpha SpriteBatch,
+ matches AlphaBlend, and
+ produces hard 1-bit edges for pixel-art fonts.
+
+
+
+
+ Configuration for HarfBuzz text shaping.
+ Text shaping is required for complex scripts (Arabic, Hebrew, Hindi, etc.)
+ and proper rendering of emoji sequences and ligatures.
+
+
+
+
+ Enable HarfBuzz text shaping for complex scripts.
+ When enabled, text will be properly shaped for languages that require it.
+
+
+
+
+ Enable bidirectional text support for mixed LTR/RTL text.
+ Only applies when Enabled is true.
+
+
+
+
+ Size of the shaped text cache.
+ Higher values use more memory but reduce shaping overhead for repeated text.
+ Default: 100
+
+
+
+
+ Returns the value V to plug into (controlHeight - V) / 2 for
+ vertical centering. NOT a geometric height: this is top + bottom of the
+ cap glyph 'H' from the draw origin (i.e. minY + maxY from FontStashSharp's
+ TextBounds), chosen so the cap-glyph midpoint lands at controlHeight / 2
+ independent of descenders. The geometric glyph height would be maxY - minY.
+
+
+
+
+ For TTF fonts, this always returns true because FontStashSharp can dynamically
+ generate glyphs for any character. If a glyph is not available in the font file,
+ a replacement glyph (like � or ?) will be rendered instead.
+
+
+
+
+ Returns a sanitized string safe for rendering. It replaces unpaired surrogates
+ with U+FFFD so FontStashSharp's UTF-16 -> UTF-32 conversion does not throw.
+
+
+
+
+ Replaces unpaired UTF-16 surrogates with U+FFFD. Returns the original
+ string reference unchanged when the input is already valid (the common case),
+ to avoid allocations on the rendering hot path.
+
+
The exception that is thrown when the fails to find a matching
@@ -369,17 +586,13 @@
Allows the user to close the game form by Alt-F4.
-
+
- Provides static methods for drawing.
+ Reloads fonts with a new resolution factor matching the given scale ratio,
+ so TTF glyphs are rasterized at native display quality rather than being
+ scaled up from the render resolution.
-
-
- Clears all potentially existing loaded fonts and then loads fonts from asset loader directories.
-
- A XNA/MonoGame ContentManager instance.
-
Allows direct access to the list of loaded fonts.
@@ -387,16 +600,15 @@
- Returns a version of the given string where all characters that don't
- appear in the given font have been replaced with question marks.
+ Returns a version of the given string that the font renderer can safely display without crashing.
The string.
The index of the font.
- Returns a that has had its width limited to a specific number.
- Characters that'd cross over the width have been cut.
+ Returns a string that has had its width limited to a specific number.
+ Characters that would cross over the width have been cut.
The string to limit.
The index of the font to use.
@@ -664,6 +876,12 @@
The control, of the highest generation, that the mouse cursor is currently positioned on.
+
+
+ If specified, the control blocks other controls on the screen
+ from being interacted with. Defaults to null.
+
+
Sets the rendering (back buffer) resolution of the game.
@@ -1125,18 +1343,39 @@
Raised when the mouse cursor enters the control's area.
+
+
+ Raised during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the left mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the right mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the middle mouse button is pressed down while the
@@ -1158,6 +1397,20 @@
Raised each frame when the mouse cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll vertically.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll horizontally.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the scroll wheel is used to scroll vertically
@@ -1170,6 +1423,13 @@
while the cursor is inside the control.
+
+
+ Raised during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the left mouse button is clicked (pressed and released)
@@ -1182,12 +1442,26 @@
time-frame while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the right mouse button is clicked (pressed and released)
while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the middle mouse button is clicked (pressed and released)
@@ -1727,45 +2001,87 @@
Called when the mouse cursor leaves the control's client rectangle.
+
+
+ Called during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the left mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the right mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the middle mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked on the control's client rectangle.
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked twice on the control's client rectangle.
+
+
+ Called during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the right mouse button has been
+ Called when the right mouse button has been
clicked on the control's client rectangle.
+
+
+ Called during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the middle mouse button has been
+ Called when the middle mouse button has been
clicked on the control's client rectangle.
@@ -1780,9 +2096,23 @@
client rectangle.
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled vertically.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled horizontally.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the scroll wheel has been scrolled on the
+ Called when the scroll wheel has been scrolled on the
control's client rectangle.
@@ -1859,6 +2189,41 @@
If set, the drop-down is opened upwards rather than downwards.
+
+
+ When the selected item's text is too wide for the closed control, it is always
+ cut off at the last fully fitting character so it does not visually overrun the
+ control's bounds. If this property is enabled, an ellipsis ("...") is appended
+ to indicate that the text has been truncated.
+
+
+
+
+ The width of the open dropdown list. Computed in as the
+ maximum of and the widest item's content width, so
+ wide items remain fully visible when the list is expanded.
+
+
+
+
+ Stores the control width used when the dropdown is closed so it can be restored
+ after the expanded list has temporarily widened the control. Null when no closed
+ width has been captured yet, so a legitimate of 0
+ is preserved instead of being treated as "not captured".
+
+
+
+
+ Ensures the framework-visible control width matches the actual visible dropdown
+ width while the list is open, and restores the original width when the list closes.
+
+
+
+
+ Current visible width of the control, accounting for whether the dropdown list
+ is open and may be wider than the closed-state .
+
+
Adds an item into the drop-down.
@@ -1898,6 +2263,18 @@
Returns the index of the item that the cursor currently points to.
+
+
+ Invalidates the cached display text.
+
+
+
+
+ Gets the display text for the selected item, fitted to the control's bounds so
+ it does not visually overrun the control. Appends an ellipsis to indicate
+ truncation when is enabled.
+
+
Draws the drop-down.
diff --git a/package/Resources/BinariesNET8/Windows/Ude.NetStandard.dll b/package/Resources/BinariesNET8/Windows/Ude.NetStandard.dll
deleted file mode 100644
index 2cb9b2f50..000000000
Binary files a/package/Resources/BinariesNET8/Windows/Ude.NetStandard.dll and /dev/null differ
diff --git a/package/Resources/BinariesNET8/Windows/clientdx.deps.json b/package/Resources/BinariesNET8/Windows/clientdx.deps.json
index 9589206f1..6e0275384 100644
--- a/package/Resources/BinariesNET8/Windows/clientdx.deps.json
+++ b/package/Resources/BinariesNET8/Windows/clientdx.deps.json
@@ -6,14 +6,14 @@
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
- "clientdx/2.12.18": {
+ "clientdx/2.13.0": {
"dependencies": {
"ClientGUI": "1.0.0",
"ClientUpdater": "1.0.0",
"DiscordRichPresence": "1.2.1.24",
"Facepunch.Steamworks": "2.4.1",
"Microsoft.Extensions.Hosting": "8.0.0",
- "OpenMcdf": "2.4.1",
+ "OpenMcdf": "3.1.4",
"SixLabors.ImageSharp": "2.1.11",
"System.Management": "8.0.0",
"lzo.net": "0.0.6",
@@ -23,6 +23,14 @@
"clientdx.dll": {}
}
},
+ "Cyotek.Drawing.BitmapFont/2.0.4": {
+ "runtime": {
+ "lib/net5.0/Cyotek.Drawing.BitmapFont.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "2.0.4.0"
+ }
+ }
+ },
"DiscordRichPresence/1.2.1.24": {
"dependencies": {
"Newtonsoft.Json": "13.0.1"
@@ -42,6 +50,92 @@
}
}
},
+ "FontStashSharp.Base/1.2.3": {
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.Base.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.MonoGame/1.5.5": {
+ "dependencies": {
+ "Cyotek.Drawing.BitmapFont": "2.0.4",
+ "FontStashSharp.Base": "1.2.3",
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp": "1.2.3",
+ "StbImageSharp": "2.30.15"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.MonoGame.dll": {
+ "assemblyVersion": "1.5.5.0",
+ "fileVersion": "1.5.5.0"
+ }
+ }
+ },
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp/1.2.3": {
+ "dependencies": {
+ "FontStashSharp.Base": "1.2.3",
+ "StbTrueTypeSharp": "1.26.12"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.TextShapers.HarfBuzz/1.2.3": {
+ "dependencies": {
+ "FontStashSharp.Base": "1.2.3",
+ "HarfBuzzSharp": "8.3.1.2"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.TextShapers.HarfBuzz.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "HarfBuzzSharp/8.3.1.2": {
+ "dependencies": {
+ "HarfBuzzSharp.NativeAssets.Win32": "8.3.1.2",
+ "HarfBuzzSharp.NativeAssets.macOS": "8.3.1.2"
+ },
+ "runtime": {
+ "lib/net8.0/HarfBuzzSharp.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "8.3.1.2"
+ }
+ }
+ },
+ "HarfBuzzSharp.NativeAssets.macOS/8.3.1.2": {
+ "runtimeTargets": {
+ "runtimes/osx/native/libHarfBuzzSharp.dylib": {
+ "rid": "osx",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "HarfBuzzSharp.NativeAssets.Win32/8.3.1.2": {
+ "runtimeTargets": {
+ "runtimes/win-arm64/native/libHarfBuzzSharp.dll": {
+ "rid": "win-arm64",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ },
+ "runtimes/win-x64/native/libHarfBuzzSharp.dll": {
+ "rid": "win-x64",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ },
+ "runtimes/win-x86/native/libHarfBuzzSharp.dll": {
+ "rid": "win-x86",
+ "assetType": "native",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
"ImeSharp/1.4.1": {
"dependencies": {
"TsfSharp": "1.1.0"
@@ -548,11 +642,11 @@
}
}
},
- "OpenMcdf/2.4.1": {
+ "OpenMcdf/3.1.4": {
"runtime": {
- "lib/netstandard2.0/OpenMcdf.dll": {
- "assemblyVersion": "2.4.1.0",
- "fileVersion": "2.4.1.0"
+ "lib/net8.0/OpenMcdf.dll": {
+ "assemblyVersion": "3.1.4.0",
+ "fileVersion": "3.1.4.0"
}
}
},
@@ -695,6 +789,22 @@
}
}
},
+ "StbImageSharp/2.30.15": {
+ "runtime": {
+ "lib/netstandard2.0/StbImageSharp.dll": {
+ "assemblyVersion": "2.30.15.0",
+ "fileVersion": "2.30.15.0"
+ }
+ }
+ },
+ "StbTrueTypeSharp/1.26.12": {
+ "runtime": {
+ "lib/netstandard2.0/StbTrueTypeSharp.dll": {
+ "assemblyVersion": "1.26.12.0",
+ "fileVersion": "1.26.12.0"
+ }
+ }
+ },
"System.Management/8.0.0": {
"runtime": {
"lib/net8.0/System.Management.dll": {
@@ -749,8 +859,8 @@
},
"runtime": {
"ClientCore.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -762,8 +872,8 @@
},
"runtime": {
"ClientGUI.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -774,8 +884,8 @@
},
"runtime": {
"ClientUpdater.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -789,6 +899,8 @@
},
"Rampastring.XNAUI.WindowsDX/1.0.0": {
"dependencies": {
+ "FontStashSharp.MonoGame": "1.5.5",
+ "FontStashSharp.TextShapers.HarfBuzz": "1.2.3",
"MonoGame.Framework.WindowsDX": "3.8.1.303",
"Rampastring.Tools": "1.0.0",
"SixLabors.ImageSharp": "2.1.11",
@@ -811,11 +923,18 @@
}
},
"libraries": {
- "clientdx/2.12.18": {
+ "clientdx/2.13.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
+ "Cyotek.Drawing.BitmapFont/2.0.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-iA6WehGVdMUuNbfsQQDq/Bt+mMd/OqHjiMUtKFLIQd/0pyYh4ehT7FEjTxN9/4OXNKQZsp9bAJgltP2nnswUJg==",
+ "path": "cyotek.drawing.bitmapfont/2.0.4",
+ "hashPath": "cyotek.drawing.bitmapfont.2.0.4.nupkg.sha512"
+ },
"DiscordRichPresence/1.2.1.24": {
"type": "package",
"serviceable": true,
@@ -830,6 +949,55 @@
"path": "facepunch.steamworks/2.4.1",
"hashPath": "facepunch.steamworks.2.4.1.nupkg.sha512"
},
+ "FontStashSharp.Base/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kw8ovakGHz8jCah+H5M7qI8aOvtESF0jQRpcpubXUMsSid86dRO6DoDPlh+Tk/XAW5a3XgzGDgsHfeZTfZTr+Q==",
+ "path": "fontstashsharp.base/1.2.3",
+ "hashPath": "fontstashsharp.base.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.MonoGame/1.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-UTHcfF2qLr06SWl69BCfDw/cguzGPPzICRuJ8xmh/vKHYya9OgrJXglhKU8GRsUmEpv/hc6gwXd4wICgF8c9Qg==",
+ "path": "fontstashsharp.monogame/1.5.5",
+ "hashPath": "fontstashsharp.monogame.1.5.5.nupkg.sha512"
+ },
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xjzgWeiaODbW7DR/kI05V7C3CVtDvtB+4TrgX4EKNpRGzxb42vsvXKWrXORQWU2LCLnPPqdBNNSgtRujnpK2ww==",
+ "path": "fontstashsharp.rasterizers.stbtruetypesharp/1.2.3",
+ "hashPath": "fontstashsharp.rasterizers.stbtruetypesharp.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.TextShapers.HarfBuzz/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XNqav6B77iq1JaN+O+vy7bGE2jEhM5ySMMnNZyFBGDPtd5Fi1PWew6DmVqzvqHDksVdAuGzXWmYd82ODIwQb5A==",
+ "path": "fontstashsharp.textshapers.harfbuzz/1.2.3",
+ "hashPath": "fontstashsharp.textshapers.harfbuzz.1.2.3.nupkg.sha512"
+ },
+ "HarfBuzzSharp/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-fqZTo17dEIn/u/YZ1A6avsmF8BYoLSvDsHm+uDp38wortckHWZhJ5pMwJW97xTeOZ9/oxqwUQfRMkf6ni9s5Gw==",
+ "path": "harfbuzzsharp/8.3.1.2",
+ "hashPath": "harfbuzzsharp.8.3.1.2.nupkg.sha512"
+ },
+ "HarfBuzzSharp.NativeAssets.macOS/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+0NtlZSQA540z6VpVoajXldvAOuj5D+BWceh70U3YApxcpUKD/5hjdbdzvyhRaTSTCSZNjRxeaWpBpgJ1U1YcQ==",
+ "path": "harfbuzzsharp.nativeassets.macos/8.3.1.2",
+ "hashPath": "harfbuzzsharp.nativeassets.macos.8.3.1.2.nupkg.sha512"
+ },
+ "HarfBuzzSharp.NativeAssets.Win32/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qmYJsYtOPVeLg7NQoKO5fq1oc5mRKzdgxBXWICx0R03epZ1RIsuzgWRFhVNN0br3c+J+9rIQhy0SXdBwVv0ebA==",
+ "path": "harfbuzzsharp.nativeassets.win32/8.3.1.2",
+ "hashPath": "harfbuzzsharp.nativeassets.win32.8.3.1.2.nupkg.sha512"
+ },
"ImeSharp/1.4.1": {
"type": "package",
"serviceable": true,
@@ -1096,12 +1264,12 @@
"path": "newtonsoft.json.bson/1.0.2",
"hashPath": "newtonsoft.json.bson.1.0.2.nupkg.sha512"
},
- "OpenMcdf/2.4.1": {
+ "OpenMcdf/3.1.4": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-0XVhI+P6pe80xYntIeF6H4F7AIL4ZolMTI5vkm3QUt9XTnRJht6CNYk1eSfI8YInRble6cw91ypF5llPXzKD/A==",
- "path": "openmcdf/2.4.1",
- "hashPath": "openmcdf.2.4.1.nupkg.sha512"
+ "sha512": "sha512-ncchtCh9YKqutHTlUCrr1llXA65ijGOCjXBM0mL1+WaGouApWDEACWbBHGzuYcAvB+rgW6IgO4AKgmZ2v1moNA==",
+ "path": "openmcdf/3.1.4",
+ "hashPath": "openmcdf.3.1.4.nupkg.sha512"
},
"SharpDX/4.0.1": {
"type": "package",
@@ -1187,6 +1355,20 @@
"path": "sixlabors.imagesharp/2.1.11",
"hashPath": "sixlabors.imagesharp.2.1.11.nupkg.sha512"
},
+ "StbImageSharp/2.30.15": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7QqbupVhz2kcFUPTgMw4iHR9rYDHGundzzee19Mwmd1typ2Lnv8EVJcLJxlkeBM2+4ex0NwsMtdbGSJctp1XCQ==",
+ "path": "stbimagesharp/2.30.15",
+ "hashPath": "stbimagesharp.2.30.15.nupkg.sha512"
+ },
+ "StbTrueTypeSharp/1.26.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hCc6/OsfcPa5VsLECcEU2m78WOshBrKwK42nAodSm9Z5wH68f7n66SoiRLCdGCkDaqbWz2TlX4zYHIjogj1HJA==",
+ "path": "stbtruetypesharp/1.26.12",
+ "hashPath": "stbtruetypesharp.1.26.12.nupkg.sha512"
+ },
"System.Management/8.0.0": {
"type": "package",
"serviceable": true,
diff --git a/package/Resources/BinariesNET8/Windows/clientdx.dll b/package/Resources/BinariesNET8/Windows/clientdx.dll
index 2e94c14e2..ace03a4db 100644
Binary files a/package/Resources/BinariesNET8/Windows/clientdx.dll and b/package/Resources/BinariesNET8/Windows/clientdx.dll differ
diff --git a/package/Resources/BinariesNET8/Windows/clientdx.pdb b/package/Resources/BinariesNET8/Windows/clientdx.pdb
index 54aba3d5d..30f72b142 100644
Binary files a/package/Resources/BinariesNET8/Windows/clientdx.pdb and b/package/Resources/BinariesNET8/Windows/clientdx.pdb differ
diff --git a/package/Resources/BinariesNET8/Windows/runtimes/win-arm64/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/Windows/runtimes/win-arm64/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..2d68b66cb
Binary files /dev/null and b/package/Resources/BinariesNET8/Windows/runtimes/win-arm64/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/Windows/runtimes/win-x64/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/Windows/runtimes/win-x64/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..6e84cf2ac
Binary files /dev/null and b/package/Resources/BinariesNET8/Windows/runtimes/win-x64/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/Windows/runtimes/win-x64/native/steam_api64.dll b/package/Resources/BinariesNET8/Windows/runtimes/win-x64/native/steam_api64.dll
new file mode 100644
index 000000000..0224579a1
Binary files /dev/null and b/package/Resources/BinariesNET8/Windows/runtimes/win-x64/native/steam_api64.dll differ
diff --git a/package/Resources/BinariesNET8/Windows/runtimes/win-x86/native/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/Windows/runtimes/win-x86/native/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..68b23abb4
Binary files /dev/null and b/package/Resources/BinariesNET8/Windows/runtimes/win-x86/native/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/XNA/ClientCore.dll b/package/Resources/BinariesNET8/XNA/ClientCore.dll
index 938e34f87..fc44658c1 100644
Binary files a/package/Resources/BinariesNET8/XNA/ClientCore.dll and b/package/Resources/BinariesNET8/XNA/ClientCore.dll differ
diff --git a/package/Resources/BinariesNET8/XNA/ClientCore.pdb b/package/Resources/BinariesNET8/XNA/ClientCore.pdb
index 6584ddd69..427dc14e7 100644
Binary files a/package/Resources/BinariesNET8/XNA/ClientCore.pdb and b/package/Resources/BinariesNET8/XNA/ClientCore.pdb differ
diff --git a/package/Resources/BinariesNET8/XNA/ClientGUI.dll b/package/Resources/BinariesNET8/XNA/ClientGUI.dll
index 15fb0c236..77c734eec 100644
Binary files a/package/Resources/BinariesNET8/XNA/ClientGUI.dll and b/package/Resources/BinariesNET8/XNA/ClientGUI.dll differ
diff --git a/package/Resources/BinariesNET8/XNA/ClientGUI.pdb b/package/Resources/BinariesNET8/XNA/ClientGUI.pdb
index e2582da5a..fdf317fd7 100644
Binary files a/package/Resources/BinariesNET8/XNA/ClientGUI.pdb and b/package/Resources/BinariesNET8/XNA/ClientGUI.pdb differ
diff --git a/package/Resources/BinariesNET8/XNA/FontStashSharp.XNA.dll b/package/Resources/BinariesNET8/XNA/FontStashSharp.XNA.dll
new file mode 100644
index 000000000..03b34df63
Binary files /dev/null and b/package/Resources/BinariesNET8/XNA/FontStashSharp.XNA.dll differ
diff --git a/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.dll b/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.dll
index 4c4314d03..df0b3d23d 100644
Binary files a/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.dll and b/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.dll differ
diff --git a/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.pdb b/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.pdb
index 32afded93..9c10bf466 100644
Binary files a/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.pdb and b/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.pdb differ
diff --git a/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.xml b/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.xml
index f4949e4c8..7b6ecd13b 100644
--- a/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.xml
+++ b/package/Resources/BinariesNET8/XNA/Rampastring.XNAUI.WindowsXNA.xml
@@ -171,11 +171,6 @@
Plays this sound if it's enabled.
-
-
- Disposes the sound effect.
-
-
Updates the priority of the sound. Returns true if the sound effect is
@@ -184,6 +179,228 @@
Tells how much time has passed since the previous frame.
True if the sound effect is still playing, otherwise false.
+
+
+ Sets the root directory for the ContentManager with XNA vs MonoGame differences.
+
+ The ContentManager instance.
+ The new root directory path.
+
+
+
+ Extension methods for .
+
+
+
+
+ Returns a substring of this string starting at and containing at most
+ UTF-16 code units, ensuring the result does not end with an orphaned high surrogate.
+
+ The string to slice.
+ The zero-based start index of the substring.
+ Maximum number of UTF-16 code units to include in the result. Must be non-negative.
+ The safe substring.
+
+
+
+ Manages font loading and rendering for the UI system.
+ Supports both SpriteFont and TrueType fonts with automatic fallback.
+
+
+
+ For TrueType fonts, FontManager creates a separate FontSystem for each font index.
+ Each FontSystem has a primary font (specified via Path) and optional per-font fallback
+ chain (via Fallback=N pointing to another font index). When a character is not found in
+ the primary font, it falls back through the chain in order.
+
+
+ The Fonts.ini file format supports:
+
+ - [TextShaping] - Optional HarfBuzz text shaping configuration
+ - [Fonts] - Font index definitions with Size, Type, optional Path, and optional Fallback
+
+
+
+
+
+
+ When set before runs, skips the Fonts.ini search and
+ loads only legacy SpriteFontN.xnb assets. Lets clients offer an opt-out from
+ TrueType rendering.
+
+
+
+
+ Gets the current text shaping settings.
+
+
+
+
+ Gets the current font rendering settings.
+
+
+
+
+ Checks if text shaping is currently enabled.
+
+
+
+
+ Creates a new FontSystem with current text shaping settings.
+
+
+
+
+ Loads fonts from the first Fonts.ini found in asset search paths.
+
+
+
+ Loading happens in two phases:
+
+
+ Phase 1: Load configuration from the first Fonts.ini:
+ - [TextShaping] settings
+ - [Fonts] definitions (type, path, size, fallback)
+
+
+ Phase 2: Create font indexes:
+ - For TrueType fonts: Create a FontSystem with primary font first, then follow the per-font fallback chain
+ - For SpriteFonts: Load the .xnb file
+
+
+
+ When non-null, overrides any FontResolutionFactor from [FontRendering]
+ in Fonts.ini. Used by to keep TTF
+ glyphs sharp when the render target is upscaled.
+
+
+
+
+ Loads fonts from a specific Fonts.ini file.
+
+
+
+
+ Creates FontIndex entries from a Fonts.ini file.
+ For each TrueType font, creates a separate FontSystem with the primary font first,
+ then follows the per-font fallback chain to add additional fonts.
+
+
+
+
+ Creates a TrueType font index with its own FontSystem.
+ The FontSystem contains the primary font first, then fonts from
+ the fallback chain (each [FontN] can point to another via Fallback=X).
+
+
+
+
+ Loads a SpriteFont and adds it to the font list.
+
+
+
+
+ Loads legacy SpriteFonts (SpriteFont0, SpriteFont1, etc.) from a search path.
+ This method appends new fonts to the existing font list instead of replacing it.
+
+
+
+
+ Configuration for FontStashSharp glyph rasterization.
+
+
+
+
+ Horizontal blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelWidth. Must be non-negative.
+
+
+
+
+ Vertical blur kernel size used by FontStashSharp when rasterizing glyphs.
+ Maps to FontSystemSettings.KernelHeight. Must be non-negative.
+
+
+
+
+ Multiplier applied to the rasterization size of each glyph.
+ Values > 1 produce sharper output when text is drawn at scales above 1.0
+ at the cost of a larger atlas footprint.
+
+
+
+
+ Width of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ Height of each FontStashSharp atlas page, in pixels.
+
+
+
+
+ How rasterized glyph pixels are produced.
+ matches a premultiplied-alpha SpriteBatch,
+ matches AlphaBlend, and
+ produces hard 1-bit edges for pixel-art fonts.
+
+
+
+
+ Configuration for HarfBuzz text shaping.
+ Text shaping is required for complex scripts (Arabic, Hebrew, Hindi, etc.)
+ and proper rendering of emoji sequences and ligatures.
+
+
+
+
+ Enable HarfBuzz text shaping for complex scripts.
+ When enabled, text will be properly shaped for languages that require it.
+
+
+
+
+ Enable bidirectional text support for mixed LTR/RTL text.
+ Only applies when Enabled is true.
+
+
+
+
+ Size of the shaped text cache.
+ Higher values use more memory but reduce shaping overhead for repeated text.
+ Default: 100
+
+
+
+
+ Returns the value V to plug into (controlHeight - V) / 2 for
+ vertical centering. NOT a geometric height: this is top + bottom of the
+ cap glyph 'H' from the draw origin (i.e. minY + maxY from FontStashSharp's
+ TextBounds), chosen so the cap-glyph midpoint lands at controlHeight / 2
+ independent of descenders. The geometric glyph height would be maxY - minY.
+
+
+
+
+ For TTF fonts, this always returns true because FontStashSharp can dynamically
+ generate glyphs for any character. If a glyph is not available in the font file,
+ a replacement glyph (like � or ?) will be rendered instead.
+
+
+
+
+ Returns a sanitized string safe for rendering. It replaces unpaired surrogates
+ with U+FFFD so FontStashSharp's UTF-16 -> UTF-32 conversion does not throw.
+
+
+
+
+ Replaces unpaired UTF-16 surrogates with U+FFFD. Returns the original
+ string reference unchanged when the input is already valid (the common case),
+ to avoid allocations on the rendering hot path.
+
+
The exception that is thrown when the fails to find a matching
@@ -388,17 +605,13 @@
Allows the user to close the game form by Alt-F4.
-
+
- Provides static methods for drawing.
+ Reloads fonts with a new resolution factor matching the given scale ratio,
+ so TTF glyphs are rasterized at native display quality rather than being
+ scaled up from the render resolution.
-
-
- Clears all potentially existing loaded fonts and then loads fonts from asset loader directories.
-
- A XNA/MonoGame ContentManager instance.
-
Allows direct access to the list of loaded fonts.
@@ -406,16 +619,15 @@
- Returns a version of the given string where all characters that don't
- appear in the given font have been replaced with question marks.
+ Returns a version of the given string that the font renderer can safely display without crashing.
The string.
The index of the font.
- Returns a that has had its width limited to a specific number.
- Characters that'd cross over the width have been cut.
+ Returns a string that has had its width limited to a specific number.
+ Characters that would cross over the width have been cut.
The string to limit.
The index of the font to use.
@@ -683,6 +895,12 @@
The control, of the highest generation, that the mouse cursor is currently positioned on.
+
+
+ If specified, the control blocks other controls on the screen
+ from being interacted with. Defaults to null.
+
+
Sets the rendering (back buffer) resolution of the game.
@@ -1144,18 +1362,39 @@
Raised when the mouse cursor enters the control's area.
+
+
+ Raised during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the left mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the right mouse button is pressed down while the
cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised once when the middle mouse button is pressed down while the
@@ -1177,6 +1416,20 @@
Raised each frame when the mouse cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll vertically.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
+
+
+ Raised during the tunneling phase when the scroll wheel is used to scroll horizontally.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the scroll wheel is used to scroll vertically
@@ -1189,6 +1442,13 @@
while the cursor is inside the control.
+
+
+ Raised during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the left mouse button is clicked (pressed and released)
@@ -1201,12 +1461,26 @@
time-frame while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the right mouse button is clicked (pressed and released)
while the cursor is inside the control's area.
+
+
+ Raised during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before bubbles.
+ If handled, the bubbling phase is suppressed.
+
+
Raised when the middle mouse button is clicked (pressed and released)
@@ -1746,45 +2020,87 @@
Called when the mouse cursor leaves the control's client rectangle.
+
+
+ Called during the tunneling phase when the left mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the left mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the right mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the right mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the middle mouse button is pressed down.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
Called once when the middle mouse button is pressed down while the cursor
is on the control.
+
+
+ Called during the tunneling phase when the left mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked on the control's client rectangle.
- Called when the left mouse button has been
+ Called when the left mouse button has been
clicked twice on the control's client rectangle.
+
+
+ Called during the tunneling phase when the right mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the right mouse button has been
+ Called when the right mouse button has been
clicked on the control's client rectangle.
+
+
+ Called during the tunneling phase when the middle mouse button is clicked.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the middle mouse button has been
+ Called when the middle mouse button has been
clicked on the control's client rectangle.
@@ -1799,9 +2115,23 @@
client rectangle.
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled vertically.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
+
+
+ Called during the tunneling phase when the scroll wheel has been scrolled horizontally.
+ Fires on ancestors from outermost to innermost before .
+ Set to true to suppress the bubbling phase.
+
+
- Called when the scroll wheel has been scrolled on the
+ Called when the scroll wheel has been scrolled on the
control's client rectangle.
@@ -1878,6 +2208,41 @@
If set, the drop-down is opened upwards rather than downwards.
+
+
+ When the selected item's text is too wide for the closed control, it is always
+ cut off at the last fully fitting character so it does not visually overrun the
+ control's bounds. If this property is enabled, an ellipsis ("...") is appended
+ to indicate that the text has been truncated.
+
+
+
+
+ The width of the open dropdown list. Computed in as the
+ maximum of and the widest item's content width, so
+ wide items remain fully visible when the list is expanded.
+
+
+
+
+ Stores the control width used when the dropdown is closed so it can be restored
+ after the expanded list has temporarily widened the control. Null when no closed
+ width has been captured yet, so a legitimate of 0
+ is preserved instead of being treated as "not captured".
+
+
+
+
+ Ensures the framework-visible control width matches the actual visible dropdown
+ width while the list is open, and restores the original width when the list closes.
+
+
+
+
+ Current visible width of the control, accounting for whether the dropdown list
+ is open and may be wider than the closed-state .
+
+
Adds an item into the drop-down.
@@ -1917,6 +2282,18 @@
Returns the index of the item that the cursor currently points to.
+
+
+ Invalidates the cached display text.
+
+
+
+
+ Gets the display text for the selected item, fitted to the control's bounds so
+ it does not visually overrun the control. Appends an ellipsis to indicate
+ truncation when is enabled.
+
+
Draws the drop-down.
diff --git a/package/Resources/BinariesNET8/XNA/Ude.NetStandard.dll b/package/Resources/BinariesNET8/XNA/Ude.NetStandard.dll
deleted file mode 100644
index 2cb9b2f50..000000000
Binary files a/package/Resources/BinariesNET8/XNA/Ude.NetStandard.dll and /dev/null differ
diff --git a/package/Resources/BinariesNET8/XNA/clientxna.deps.json b/package/Resources/BinariesNET8/XNA/clientxna.deps.json
index d03e188ba..5401f4c2f 100644
--- a/package/Resources/BinariesNET8/XNA/clientxna.deps.json
+++ b/package/Resources/BinariesNET8/XNA/clientxna.deps.json
@@ -7,26 +7,31 @@
"targets": {
".NETCoreApp,Version=v8.0": {},
".NETCoreApp,Version=v8.0/win-x86": {
- "clientxna/2.12.18": {
+ "clientxna/2.13.0": {
"dependencies": {
"ClientGUI": "1.0.0",
"ClientUpdater": "1.0.0",
"DiscordRichPresence": "1.2.1.24",
"Facepunch.Steamworks": "2.4.1",
"Microsoft.Extensions.Hosting": "8.0.0",
- "OpenMcdf": "2.4.1",
+ "OpenMcdf": "3.1.4",
"SixLabors.ImageSharp": "2.1.11",
"System.Management": "8.0.0",
"lzo.net": "0.0.6",
- "Microsoft.Xna.Framework": "4.0.0.0",
- "Microsoft.Xna.Framework.Game": "4.0.0.0",
- "Microsoft.Xna.Framework.Graphics": "4.0.0.0",
"Rampastring.XNAUI.WindowsXNA.Reference": "0.1.0.0"
},
"runtime": {
"clientxna.dll": {}
}
},
+ "Cyotek.Drawing.BitmapFont/2.0.4": {
+ "runtime": {
+ "lib/net5.0/Cyotek.Drawing.BitmapFont.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "2.0.4.0"
+ }
+ }
+ },
"DiscordRichPresence/1.2.1.24": {
"dependencies": {
"Newtonsoft.Json": "13.0.1"
@@ -46,6 +51,110 @@
}
}
},
+ "FontStashSharp.Base/1.2.3": {
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.Base.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp/1.2.3": {
+ "dependencies": {
+ "FontStashSharp.Base": "1.2.3",
+ "StbTrueTypeSharp": "1.26.12"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.Rasterizers.StbTrueTypeSharp.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.TextShapers.HarfBuzz/1.2.3": {
+ "dependencies": {
+ "FontStashSharp.Base": "1.2.3",
+ "HarfBuzzSharp": "8.3.1.2"
+ },
+ "runtime": {
+ "lib/netstandard2.0/FontStashSharp.TextShapers.HarfBuzz.dll": {
+ "assemblyVersion": "1.2.3.0",
+ "fileVersion": "1.2.3.0"
+ }
+ }
+ },
+ "FontStashSharp.XNA/1.5.5": {
+ "dependencies": {
+ "Cyotek.Drawing.BitmapFont": "2.0.4",
+ "FontStashSharp.Base": "1.2.3",
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp": "1.2.3",
+ "StbImageSharp": "2.30.15"
+ },
+ "runtime": {
+ "lib/net48/FontStashSharp.XNA.dll": {
+ "assemblyVersion": "1.5.5.0",
+ "fileVersion": "1.5.5.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.Avatar.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.Game.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.GamerServices.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.Graphics.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.Input.Touch.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.Net.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.Storage.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.Video.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.Xact.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ },
+ "lib/net48/Microsoft.Xna.Framework.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.30901.0"
+ }
+ }
+ },
+ "HarfBuzzSharp/8.3.1.2": {
+ "dependencies": {
+ "HarfBuzzSharp.NativeAssets.Win32": "8.3.1.2"
+ },
+ "runtime": {
+ "lib/net8.0/HarfBuzzSharp.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "8.3.1.2"
+ }
+ }
+ },
+ "HarfBuzzSharp.NativeAssets.Win32/8.3.1.2": {
+ "native": {
+ "runtimes/win-x86/native/libHarfBuzzSharp.dll": {
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
"ImeSharp/1.4.1": {
"dependencies": {
"TsfSharp": "1.1.0"
@@ -454,11 +563,11 @@
}
}
},
- "OpenMcdf/2.4.1": {
+ "OpenMcdf/3.1.4": {
"runtime": {
- "lib/netstandard2.0/OpenMcdf.dll": {
- "assemblyVersion": "2.4.1.0",
- "fileVersion": "2.4.1.0"
+ "lib/net8.0/OpenMcdf.dll": {
+ "assemblyVersion": "3.1.4.0",
+ "fileVersion": "3.1.4.0"
}
}
},
@@ -489,6 +598,22 @@
}
}
},
+ "StbImageSharp/2.30.15": {
+ "runtime": {
+ "lib/netstandard2.0/StbImageSharp.dll": {
+ "assemblyVersion": "2.30.15.0",
+ "fileVersion": "2.30.15.0"
+ }
+ }
+ },
+ "StbTrueTypeSharp/1.26.12": {
+ "runtime": {
+ "lib/netstandard2.0/StbTrueTypeSharp.dll": {
+ "assemblyVersion": "1.26.12.0",
+ "fileVersion": "1.26.12.0"
+ }
+ }
+ },
"System.Management/8.0.0": {
"runtime": {
"runtimes/win/lib/net8.0/System.Management.dll": {
@@ -535,8 +660,8 @@
},
"runtime": {
"ClientCore.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -548,8 +673,8 @@
},
"runtime": {
"ClientGUI.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -560,8 +685,8 @@
},
"runtime": {
"ClientUpdater.dll": {
- "assemblyVersion": "2.12.18.0",
- "fileVersion": "2.12.18.0"
+ "assemblyVersion": "2.13.0.0",
+ "fileVersion": "2.13.0.0"
}
}
},
@@ -575,6 +700,8 @@
},
"Rampastring.XNAUI.WindowsXNA/1.0.0": {
"dependencies": {
+ "FontStashSharp.TextShapers.HarfBuzz": "1.2.3",
+ "FontStashSharp.XNA": "1.5.5",
"Rampastring.Tools": "1.0.0",
"SixLabors.ImageSharp": "2.1.11",
"TextCopy": "6.2.1"
@@ -585,30 +712,6 @@
}
}
},
- "Microsoft.Xna.Framework/4.0.0.0": {
- "runtime": {
- "Microsoft.Xna.Framework.dll": {
- "assemblyVersion": "4.0.0.0",
- "fileVersion": "4.0.30901.0"
- }
- }
- },
- "Microsoft.Xna.Framework.Game/4.0.0.0": {
- "runtime": {
- "Microsoft.Xna.Framework.Game.dll": {
- "assemblyVersion": "4.0.0.0",
- "fileVersion": "4.0.30901.0"
- }
- }
- },
- "Microsoft.Xna.Framework.Graphics/4.0.0.0": {
- "runtime": {
- "Microsoft.Xna.Framework.Graphics.dll": {
- "assemblyVersion": "4.0.0.0",
- "fileVersion": "4.0.30901.0"
- }
- }
- },
"Rampastring.XNAUI.WindowsXNA.Reference/0.1.0.0": {
"runtime": {
"Rampastring.XNAUI.WindowsXNA.dll": {
@@ -616,31 +719,22 @@
"fileVersion": "0.1.0.0"
}
}
- },
- "Microsoft.Xna.Framework.GamerServices/4.0.0.0": {
- "runtime": {
- "Microsoft.Xna.Framework.GamerServices.dll": {
- "assemblyVersion": "4.0.0.0",
- "fileVersion": "4.0.30901.0"
- }
- }
- },
- "Microsoft.Xna.Framework.Input.Touch/4.0.0.0": {
- "runtime": {
- "Microsoft.Xna.Framework.Input.Touch.dll": {
- "assemblyVersion": "4.0.0.0",
- "fileVersion": "4.0.30901.0"
- }
- }
}
}
},
"libraries": {
- "clientxna/2.12.18": {
+ "clientxna/2.13.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
+ "Cyotek.Drawing.BitmapFont/2.0.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-iA6WehGVdMUuNbfsQQDq/Bt+mMd/OqHjiMUtKFLIQd/0pyYh4ehT7FEjTxN9/4OXNKQZsp9bAJgltP2nnswUJg==",
+ "path": "cyotek.drawing.bitmapfont/2.0.4",
+ "hashPath": "cyotek.drawing.bitmapfont.2.0.4.nupkg.sha512"
+ },
"DiscordRichPresence/1.2.1.24": {
"type": "package",
"serviceable": true,
@@ -655,6 +749,48 @@
"path": "facepunch.steamworks/2.4.1",
"hashPath": "facepunch.steamworks.2.4.1.nupkg.sha512"
},
+ "FontStashSharp.Base/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kw8ovakGHz8jCah+H5M7qI8aOvtESF0jQRpcpubXUMsSid86dRO6DoDPlh+Tk/XAW5a3XgzGDgsHfeZTfZTr+Q==",
+ "path": "fontstashsharp.base/1.2.3",
+ "hashPath": "fontstashsharp.base.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.Rasterizers.StbTrueTypeSharp/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xjzgWeiaODbW7DR/kI05V7C3CVtDvtB+4TrgX4EKNpRGzxb42vsvXKWrXORQWU2LCLnPPqdBNNSgtRujnpK2ww==",
+ "path": "fontstashsharp.rasterizers.stbtruetypesharp/1.2.3",
+ "hashPath": "fontstashsharp.rasterizers.stbtruetypesharp.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.TextShapers.HarfBuzz/1.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-XNqav6B77iq1JaN+O+vy7bGE2jEhM5ySMMnNZyFBGDPtd5Fi1PWew6DmVqzvqHDksVdAuGzXWmYd82ODIwQb5A==",
+ "path": "fontstashsharp.textshapers.harfbuzz/1.2.3",
+ "hashPath": "fontstashsharp.textshapers.harfbuzz.1.2.3.nupkg.sha512"
+ },
+ "FontStashSharp.XNA/1.5.5": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2KqbZBjRXHb8zDlOksKjS/e2K+3PzdE+xe/9svasRWSeE4mpRMk42O40axU/B1uGAihCseWbehHm0oROP5Ctrg==",
+ "path": "fontstashsharp.xna/1.5.5",
+ "hashPath": "fontstashsharp.xna.1.5.5.nupkg.sha512"
+ },
+ "HarfBuzzSharp/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-fqZTo17dEIn/u/YZ1A6avsmF8BYoLSvDsHm+uDp38wortckHWZhJ5pMwJW97xTeOZ9/oxqwUQfRMkf6ni9s5Gw==",
+ "path": "harfbuzzsharp/8.3.1.2",
+ "hashPath": "harfbuzzsharp.8.3.1.2.nupkg.sha512"
+ },
+ "HarfBuzzSharp.NativeAssets.Win32/8.3.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qmYJsYtOPVeLg7NQoKO5fq1oc5mRKzdgxBXWICx0R03epZ1RIsuzgWRFhVNN0br3c+J+9rIQhy0SXdBwVv0ebA==",
+ "path": "harfbuzzsharp.nativeassets.win32/8.3.1.2",
+ "hashPath": "harfbuzzsharp.nativeassets.win32.8.3.1.2.nupkg.sha512"
+ },
"ImeSharp/1.4.1": {
"type": "package",
"serviceable": true,
@@ -879,12 +1015,12 @@
"path": "newtonsoft.json.bson/1.0.2",
"hashPath": "newtonsoft.json.bson.1.0.2.nupkg.sha512"
},
- "OpenMcdf/2.4.1": {
+ "OpenMcdf/3.1.4": {
"type": "package",
"serviceable": true,
- "sha512": "sha512-0XVhI+P6pe80xYntIeF6H4F7AIL4ZolMTI5vkm3QUt9XTnRJht6CNYk1eSfI8YInRble6cw91ypF5llPXzKD/A==",
- "path": "openmcdf/2.4.1",
- "hashPath": "openmcdf.2.4.1.nupkg.sha512"
+ "sha512": "sha512-ncchtCh9YKqutHTlUCrr1llXA65ijGOCjXBM0mL1+WaGouApWDEACWbBHGzuYcAvB+rgW6IgO4AKgmZ2v1moNA==",
+ "path": "openmcdf/3.1.4",
+ "hashPath": "openmcdf.3.1.4.nupkg.sha512"
},
"SharpGen.Runtime/2.0.0-beta.9": {
"type": "package",
@@ -907,6 +1043,20 @@
"path": "sixlabors.imagesharp/2.1.11",
"hashPath": "sixlabors.imagesharp.2.1.11.nupkg.sha512"
},
+ "StbImageSharp/2.30.15": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7QqbupVhz2kcFUPTgMw4iHR9rYDHGundzzee19Mwmd1typ2Lnv8EVJcLJxlkeBM2+4ex0NwsMtdbGSJctp1XCQ==",
+ "path": "stbimagesharp/2.30.15",
+ "hashPath": "stbimagesharp.2.30.15.nupkg.sha512"
+ },
+ "StbTrueTypeSharp/1.26.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-hCc6/OsfcPa5VsLECcEU2m78WOshBrKwK42nAodSm9Z5wH68f7n66SoiRLCdGCkDaqbWz2TlX4zYHIjogj1HJA==",
+ "path": "stbtruetypesharp/1.26.12",
+ "hashPath": "stbtruetypesharp.1.26.12.nupkg.sha512"
+ },
"System.Management/8.0.0": {
"type": "package",
"serviceable": true,
@@ -960,35 +1110,10 @@
"serviceable": false,
"sha512": ""
},
- "Microsoft.Xna.Framework/4.0.0.0": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Xna.Framework.Game/4.0.0.0": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Xna.Framework.Graphics/4.0.0.0": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- },
"Rampastring.XNAUI.WindowsXNA.Reference/0.1.0.0": {
"type": "reference",
"serviceable": false,
"sha512": ""
- },
- "Microsoft.Xna.Framework.GamerServices/4.0.0.0": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Xna.Framework.Input.Touch/4.0.0.0": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
}
}
}
\ No newline at end of file
diff --git a/package/Resources/BinariesNET8/XNA/clientxna.dll b/package/Resources/BinariesNET8/XNA/clientxna.dll
index 692827130..fe237718b 100644
Binary files a/package/Resources/BinariesNET8/XNA/clientxna.dll and b/package/Resources/BinariesNET8/XNA/clientxna.dll differ
diff --git a/package/Resources/BinariesNET8/XNA/clientxna.pdb b/package/Resources/BinariesNET8/XNA/clientxna.pdb
index aff9800ab..635e825cf 100644
Binary files a/package/Resources/BinariesNET8/XNA/clientxna.pdb and b/package/Resources/BinariesNET8/XNA/clientxna.pdb differ
diff --git a/package/Resources/BinariesNET8/XNA/libHarfBuzzSharp.dll b/package/Resources/BinariesNET8/XNA/libHarfBuzzSharp.dll
new file mode 100644
index 000000000..68b23abb4
Binary files /dev/null and b/package/Resources/BinariesNET8/XNA/libHarfBuzzSharp.dll differ
diff --git a/package/Resources/BinariesNET8/XNA/runtimes/win-x64/native/steam_api64.dll b/package/Resources/BinariesNET8/XNA/runtimes/win-x64/native/steam_api64.dll
new file mode 100644
index 000000000..0224579a1
Binary files /dev/null and b/package/Resources/BinariesNET8/XNA/runtimes/win-x64/native/steam_api64.dll differ
diff --git a/package/Resources/clientdx.exe b/package/Resources/clientdx.exe
index 03fa270d4..b08f24f04 100755
Binary files a/package/Resources/clientdx.exe and b/package/Resources/clientdx.exe differ
diff --git a/package/Resources/clientdx.exe.config b/package/Resources/clientdx.exe.config
index 4a4f8f19b..bdff837dc 100644
--- a/package/Resources/clientdx.exe.config
+++ b/package/Resources/clientdx.exe.config
@@ -4,6 +4,12 @@
+
+
+
+
+
+
diff --git a/package/Resources/clientdx.pdb b/package/Resources/clientdx.pdb
index 97f16544e..f1b8ed655 100644
Binary files a/package/Resources/clientdx.pdb and b/package/Resources/clientdx.pdb differ
diff --git a/package/Resources/clientogl.exe b/package/Resources/clientogl.exe
index 4c2dd5dfa..3928a49cc 100755
Binary files a/package/Resources/clientogl.exe and b/package/Resources/clientogl.exe differ
diff --git a/package/Resources/clientogl.exe.config b/package/Resources/clientogl.exe.config
index 4a4f8f19b..bdff837dc 100644
--- a/package/Resources/clientogl.exe.config
+++ b/package/Resources/clientogl.exe.config
@@ -4,6 +4,12 @@
+
+
+
+
+
+
diff --git a/package/Resources/clientogl.pdb b/package/Resources/clientogl.pdb
index 8e495e55a..b8693f71a 100644
Binary files a/package/Resources/clientogl.pdb and b/package/Resources/clientogl.pdb differ
diff --git a/package/Resources/clientxna.exe b/package/Resources/clientxna.exe
index cc62712f9..acd2672a7 100755
Binary files a/package/Resources/clientxna.exe and b/package/Resources/clientxna.exe differ
diff --git a/package/Resources/clientxna.exe.config b/package/Resources/clientxna.exe.config
index 4a4f8f19b..bdff837dc 100644
--- a/package/Resources/clientxna.exe.config
+++ b/package/Resources/clientxna.exe.config
@@ -4,6 +4,12 @@
+
+
+
+
+
+
diff --git a/package/Resources/clientxna.pdb b/package/Resources/clientxna.pdb
index 95f01ac1c..c07c15a42 100644
Binary files a/package/Resources/clientxna.pdb and b/package/Resources/clientxna.pdb differ
diff --git a/package/updateexec b/package/updateexec
index 263376426..7e460d121 100644
--- a/package/updateexec
+++ b/package/updateexec
@@ -1,4 +1,16 @@
[Delete]
+; 2.13.0 (auto-generated entries for removed/renamed files)
+package\Resources\Binaries\Windows\Ude.NetStandard.dll
+package\Resources\Binaries\XNA\Ude.NetStandard.dll
+package\Resources\BinariesNET8\UniversalGL\Ude.NetStandard.dll
+package\Resources\BinariesNET8\Windows\Ude.NetStandard.dll
+package\Resources\BinariesNET8\XNA\Ude.NetStandard.dll
+package\Resources\Binaries\OpenGL\Ude.NetStandard.dll
+package\Resources\Binaries\steam_api64.dll
+package\Resources\BinariesNET8\steam_api64.dll
+package\Resources\BinariesNET8\OpenGL\Ude.NetStandard.dll
+; end entries
+
package\Resources\Binaries\OpenGL\System.Private.Uri.dll
package\Resources\Binaries\Windows\System.Private.Uri.dll
package\Resources\BinariesNET8\OpenGL\System.Text.Json.dll
@@ -602,3 +614,4 @@ Maps\Yuri's Revenge\Survival\4_defend_liberty_v2_dctanxman.png
Maps\Yuri's Revenge\CTF
Maps\Yuri's Revenge\Demolition
do_not_remove_this_line
+