TJAPlayer3 is a rhythm game application for Windows (and compatible environments). It provides a style of gameplay very similar to that of Taiko no Tatsujin and similar rhythm games, and supports .tja files compatible with a number of other similar rhythm game applications. Download the latest release here: https://github.com/twopointzero/TJAPlayer3/releases
MIT License
158
stars
152
forks
source link
Discord presence - Clean up code and migrate to Lachee's Discord RPC C# library #32
Can you write a one-sentence description of your request?
The current Discord code is messy and depends on unmanaged code, so clean it up and migrate it to Lachee's Discord RPC C# library: https://github.com/Lachee/discord-rpc-csharp
What is the current behavior?
Discord presence code is poorly encapsulated and wraps and calls the deprecated unmanaged Discord RPC library.
What is the expected behavior?
It should be well encapsulated and call a supported library, preferably one which is purely managed code.
What is the motivation / use case for changing the behavior?
Original motivation is Sentry report TJAPLAYER3-K, which describes a crash when starting to play a song. The crash location is at the point of updating Discord presence, and its suspected provocation is an empty note chart.
Reviewing calls to update Discord presence revealed poor encapsulation of the Discord-related code together with manual management of memory utilized by unmanaged code.
It also reminded me that we currently carry the discord-rpc.dll unmanaged library alongside the exe when packaging for release, and it is always nice to eliminate unmanaged code where possible.
Can you write a one-sentence description of your request? The current Discord code is messy and depends on unmanaged code, so clean it up and migrate it to Lachee's Discord RPC C# library: https://github.com/Lachee/discord-rpc-csharp
What is the current behavior? Discord presence code is poorly encapsulated and wraps and calls the deprecated unmanaged Discord RPC library.
What is the expected behavior? It should be well encapsulated and call a supported library, preferably one which is purely managed code.
What is the motivation / use case for changing the behavior?