88 Commits
Author SHA1 Message Date
McSchneidar cf2fa796e2 .NET10 Migration (#946)
Runtime and build
- Move all projects to .NET 10 with SDK-style project files and a shared
  Directory.Build.props (WIN/LINUX, x86/x64 defines)
- Load managed and unmanaged dependencies from libs/managed and
  libs/unmanaged through assembly and native library resolvers
- Compile party modes with Roslyn instead of CodeDom
- Update AppVeyor to the .NET 10 SDK and dotnet test
- Download the FFmpeg and gstreamer runtimes from the dependencies
  repository during the build
- Remove the VC++ 2015-2022 runtime check, no dependency needs it anymore

Graphics and windowing
- Replace the Direct3D 9 renderer with Direct3D 11 (Vortice)
- Pace Direct3D 11 frames with a frame latency waitable swap chain
- Move window, input and message boxes to SDL3
- Replace System.Drawing with SkiaSharp and WinForms with SDL3 and a
  software renderer

Video and audio
- Replace Acinerella with FFmpeg 8.1.3 (FFmpeg.AutoGen)
- Add hardware accelerated video decoding (D3D11VA, DXVA2, VideoToolbox,
  VAAPI, VDPAU) with software fallback
- Convert YUV video frames to RGB on the GPU in Direct3D 11 and OpenGL
- Add the video options HardwareDecoding, GpuColorConversion,
  DecoderThreads and VideoDownscaleResolution
- Update OpenAL to OpenTK 4 and NAudio recording to WasapiRecorder

Fixes
- Fix the song preview start and shorten the reporter buttons
- Fix a crash when opening the highscore without a selected song
- Use the options slide highlight in the party mode screens to avoid
  brightness flicker on VRR displays
- Disable GameInput in the x86 build, SDL3 crashes in GameInputCreate
  on 32-bit systems with the GameInput runtime installed
- Fix a truncation warning in PitchTracker
2026-11-02 08:11:20 +01:00
McSchneidarandFlorian Ostertag 2cdd30c6fc Small improvements for 3 screens (#934)
* Improve profile and player selection screens

- Ask before deleting a profile, Delete only removes a character while editing the name
- Ask to save or discard unsaved profile changes when leaving the profile screen
- Restore the previous name with Escape and prevent empty profile names
- Stop the webcam when leaving the profile screen and discard snapshots on avatar change
- Show inactive profiles dimmed in the profile screen
- Play the missing mic/profile warning each time the player selection is shown
- Fix crash when clicking a profile after removing a player with Delete in fast selection
- Keep the duet part selection when profiles are reloaded
- Only save the player number when it has changed

* Use party mode selection look in statistics screens

- Tiles and selection use the ButtonTile skin like the party mode selection, the selected tile uses the selection color of the skin
- The detail list uses the CoverTextBackground skin, inner cards and row stripes the ButtonTile skin
- More space between the title and the columns of the best list
- Show the date in the recently sung list left aligned inside the list

* Changelog

* Improve sing screen and redesign pause menu

- Fix jumping to the old pause position after restarting or skipping a song in vocals mode
- Keep name and avatar hidden for players without a valid profile
- Show the placeholder avatar for profiles without avatar image
- Hide player information and rating popups during the start countdown
- Fix pause select slides not being shown or hidden
- Show "no more songs" only when Ctrl+S is pressed
- Select "Continue" when opening the pause menu with Escape
- Darken the game behind the pause menu
- Pause buttons as vertical list with icons, hidden buttons leave no gaps (visible buttons are placed in the slots of all pause buttons)
- New PauseButton skin with rounded corners for wide buttons, used for the pause buttons and the vocals volume selection
- Larger pause title centered above the pause panels
- Info panel with cover, title, artist, song progress and player scores
- Vocals volume selection with icon and centered caption in the full width of the info panel, showing five values
- Pause panels and icons are animated together with the pause buttons

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-21 12:05:18 +02:00
McSchneidarandFlorian Ostertag 944022f30b Add knockout tournament party mode (#913)
A new party mode for 3 to 16 players who sing against each other in one-on-one duels. Whoever scores more points moves on, the loser is out, until only the champion is left.

- The bracket is shown mirrored: both halves lead towards the final in the center, where the champion is crowned
- Players are drawn randomly; if the number of players doesn't fill the bracket, some players get a bye in the first round
- Songs are picked randomly from all songs, a category or a playlist, sung as normal, short or medley version, and no song is played twice
- Each player has up to 3 jokers for the whole tournament to skip a song they don't like
- On a tie, the duel is sung again
- The winner of each duel visibly moves on to the next round, and the champion is celebrated at the end

Also fixes "Select random" in the player selection of party modes, which only filled half of the slots.

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-18 10:36:19 +02:00
Quentin Bray 6ffa63b923 Apply R# clean-up for reliability (#877)
* Apply R# clean-up for reliability

- Migrate to NUnit4 Assert.That
- Update dependencise versions
- Fix LangVersion to 9.0 (until net core migration)
- Reformat code
- Apply 'var' style (easier for refactoring)
- Remove redundant parentheses
- Add braces on every condition blocks (1 line)
- Uses new null checking patterns
- Uses AutoProperties when possible
- Uses string scalar type instead of class
- Clean usings
- Add .orig files in git ignore
- Rename some properties to respect defined conventions and US format definition
	- ID -> Id
	- BPM -> Bpm
	- Finish -> End

* Update R# settings according to the clean-up made
2026-06-22 19:52:06 +02:00
Edi316 76d26239bd Grid overview for profile screen (#858)
* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Version 4

* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Fix Out of Bounds Index & Player Selector Cursor

* Add Profile Grid

* Fix Out of Bounds Index & Player Selector Cursor
2026-04-26 20:50:15 +02:00
Edi316 038c5165e1 Fix missing player profiles in Challenge Mode (#865)
* Fix Missing Profiles

* Fix Missing Profiles
2026-04-26 20:49:00 +02:00
MSchneidar 4c984d9f7c Two small fixes (#832)
* Fix for CNameSelection

* Fix for CPlaybackBase
2026-01-25 07:03:58 +01:00
Jiiniasu bbe58f764c Fix: Error when profiles < amount of tiles 2017-11-27 19:26:11 +01:00
Jiiniasu 2dbc84710b Merge remote-tracking branch 'refs/remotes/Vocaluxe/develop' into NamesScroll
# Conflicts:
#	VocaluxeLib/Menu/CNameSelection.cs
2017-11-27 18:55:39 +01:00
Jiiniasu d810aa8ca4 Name Selection Improvements
Fix: Infinite scroll bug with mousewheel
Change: Offset by row instead of page
2017-11-19 12:13:16 +01:00
Florian Küpper 86dc259c17 Merge branch 'develop' into player-guid 2017-11-05 23:32:30 +01:00
Florian Küpper c5bfd46865 Removed outdated xml loading stuff 2017-09-02 18:00:06 +02:00
derivator 1a85f56fb4 Partymodes: Fix "Select random" button selecting invalid profiles
which would happen if the number of visible profiles matched the number of used profiles or if there were more slots than usable profiles
2016-10-19 11:26:02 +02:00
Florian Küpper e3497641dd Use GUID instead of int for player-ids; ID is now unique and saved to player.xml-file 2015-12-23 14:23:55 +01:00
Flamefire cd59b82b7b Fix some resharper warnings and errors 2014-12-02 21:59:33 +01:00
Flamefire 4b0f563a6c Fix crashes/assertion failures on theme/skin change
First step of fixing theme saving (still needs some work)
2014-12-01 22:40:47 +01:00
Flamefire b99f9467de Fix inaccessible buttons 2014-11-27 23:03:04 +01:00
Flamefire 26484ad137 Fix blank screen issue
Also fix some other bugs and improvements (easier party modes, volume fixes, new fields for screens to control volume and popups)
2014-11-27 21:47:02 +01:00
Flamefire dd6b0416b6 Rename XML to lowercase Xml in classes and names for consistency 2014-11-17 19:33:48 +01:00
Flamefire ae7a7fd390 Implement a common Interface for all MenuElements
Also remove CSongMenu and replace it with a factory class
2014-10-19 17:17:39 +02:00
Flamefire d8cce13211 Rename LoadTextures to LoadSkin
(Its also Colors, not only textures!)
2014-10-18 10:42:35 +02:00
Flamefire 3f76d039b6 Change color representation
Allow missing ARGB values (defaults to 1)
Allow Name+ARGB to easily overwrite some values
2014-10-16 22:40:18 +02:00
Flamefire 87f3271046 Remove copy constructors for structs 2014-10-16 21:38:22 +02:00
Flamefire 86fb73ca48 Cleanup not required XML attributes 2014-10-16 21:27:09 +02:00
Flamefire defb2ca6c7 Rewrite Theme Engine 2014-10-08 22:29:02 +02:00
Flamefire 9e5011374f Rename CTheme to CThemes 2014-10-05 17:27:45 +02:00
Flamefire 355d7b4b5f Merge branch 'develop' into Better_Graphics_Handling
Conflicts:
	VocaluxeLib/Menu/CNameSelection.cs
	VocaluxeLib/Menu/CPlaylist.cs
	VocaluxeLib/Menu/CText.cs
	VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs
	VocaluxeLib/Structs.cs
	VocaluxeLib/VocaluxeLib.csproj
	VocaluxeLib/Xml/CXMLReader.cs
2014-10-05 15:09:52 +02:00
Flamefire 89e528c2a6 Factor out CSkin class
Replace usages of GetColor and remove GetColor(..., skinIndex,...)
2014-10-05 13:36:11 +02:00
Flamefire 6ebbf7df6f Introduce example for a more flexible deserialization
Also make the CoverGenerator themes serializeable
Rest is automatic reformatting.
2014-10-01 00:54:04 +02:00
Flamefire c156fa69ab Merge branch 'develop' of git://github.com/flokuep/Vocaluxe into Better_Graphics_Handling
Conflicts:
	Vocaluxe/COSFunctions.cs
	VocaluxeLib/CHelper.cs
	VocaluxeLib/Menu/CStatic.cs
	VocaluxeLib/Structs.cs
2014-09-25 18:49:18 +02:00
Florian Küpper c07441bc63 Load complete theme-date with de-serialization. 2014-09-18 15:35:52 +02:00
Florian Küpper 4f8c482645 Remove unneeded constructors. 2014-09-15 19:44:19 +02:00
Florian Küpper 9ab0ea5f34 Update more LoadTextures-methods. Some changes are a bit ugly, but will removed later. 2014-09-15 19:35:00 +02:00
Flamefire 7f8e974fe1 Rename CTexture to CTextureRef to reflect it is only a reference 2014-09-13 17:51:55 +02:00
Florian Küpper e936fe4126 Added constructors with STheme*-structs, LoadTextures() will be LoadTheme later and set all needed values from theme-struct to object. 2014-09-10 20:44:39 +02:00
Florian Küpper 9cca49745a Added constructors to STheme* for copying. 2014-09-10 11:17:36 +02:00
Florian Küpper 96e50f7723 Changed theme-color-handling. 2014-09-09 21:32:07 +02:00
Florian Küpper b2102b11d9 Add serialization for all theme-elements. 2014-08-26 16:48:30 +02:00
Flamefire 898819fcf5 Fix code issues (naming, unused stuff) 2014-03-12 09:41:34 +01:00
Flamefire 149026ec32 IMPORTANT: Format of all files with Resharper
NO functional changes. If you have problems merging your changes, merge/rebase on previous commit then merge this. Conflicts can easily be resolved (take yours if in doubt)
After that merge next commits
2014-02-26 00:36:00 +01:00
Florian Küpper 94f8dcef3c PartyNames: Fix name-selection. 2013-12-26 13:07:30 +01:00
Florian Küpper 915db881e3 PartyNames: Added button for selecting random. 2013-12-26 13:07:28 +01:00
Florian Küpper f5407f1815 Another fix for name-selection. 2013-12-26 13:07:22 +01:00
Florian Küpper d24c47012c Revert "Revert PartyNames-changes on develop-branch."
This reverts commit 43545ac47f.

Conflicts:
	VocaluxeLib/Menu/CNameSelection.cs
2013-12-26 13:02:06 +01:00
lukeIam 341f03714e Fix: HasFlag(EUserRole.TR_USERROLE_GUEST) does not work (workaround replaced it with !NORMAL) 2013-12-26 13:02:01 +01:00
Florian Küpper 5449d985ef Revert PartyNames-changes on develop-branch. 2013-12-26 13:02:00 +01:00
Florian Küpper bdf28a5daf PartyNames: Added visual feedback for max-player-num. 2013-12-26 13:01:59 +01:00
Florian Küpper 14f5c12d9e Added draft for NameSelection in party-modes. Just extend CMenuPartyNameSelection in a screen.
Developer could use it or not, using it would make creating party-modes much easier.
More additions to this screen will come.
2013-12-26 13:01:58 +01:00
Florian Küpper 0c807862a8 Patch WebserverFlokuepDevelopTest 2013-12-19 09:02:40 +01:00
Florian Küpper 352b0181fa Changed GuestProfile-option on profiles to UserRole. UserRole could now be set from Vocaluxe. 2013-12-19 08:54:27 +01:00