76 Commits
Author SHA1 Message Date
McSchneidarandFlorian Ostertag 6601f41aac Redesign option screens (#931)
* Redesign and improve option screens

- Open the options directly from the main menu with the focus on the navigation, all option screens share a navigation with all categories, song folders and credits
- Navigation and settings use rounded backgrounds like the party mode selection, the current category and setting are highlighted with the selection color of the skin
- Categories can be clicked or switched with Tab, Escape moves the focus to the navigation and leaves the options from there, choosing a category moves the focus to its first setting
- Place the action buttons (delay test, adjust screen, server address, add folder) and the webcam preview inside the settings background
- Center the restart and microphone warnings below the settings background
- Move song folder management to its own screen with a list of all folders, add and remove buttons, a scrollbar and a restart warning
- Add the tile caption option to the game options (only selectable when the song menu is set to tiles)
- Remove the old options selection screen (ScreenOptions)
- Fix configured song folders being ignored when the first entry of the config is empty
- Show the folder dialog in front of the game window
- Fix background music source being overwritten by the karaoke effect setting
- Keep the webcam configuration when no webcam is connected
- Warn when several players are assigned to the same record channel
- Show a warning when no microphone is found
- Remove cover sizes 32 and 64 and keep unknown cover sizes until changed
- Play warning sounds again each time an option screen is shown
- Ignore key pressed events in graphics and server options
- Keep the background music volume in sync in the sound options

* Fix SonarCloud issues

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-21 09:12:04 +02:00
McSchneidar 522003a25f Add Jukebox Mode (#930)
* Add jukebox mode

Songs can now be played without singing, e.g. as a break filler at parties.

- New Jukebox button in the main menu next to Sing and Party, locked without a profile like both of them
- Choose all songs, a category or a playlist, random or in order, and optionally only a part of each song (medley part, 30, 60 or 90 seconds)
- Video in full screen, lyrics without notes and a short song info whenever a new song starts
- Control bar with previous, pause, next, skip intro, audio mode (normal or instrumental), shuffle, repeat, lyrics on/off, queue and "Sing now"
- Queue with search: Enter puts a song next, Enter again plays it right away, songs can also be removed and reordered
- The queue adapts its size to the free space above the lyrics or the control bar
- Control bar and queue fade out after a few seconds without input and come back with the next key press or mouse move
- Works with keyboard, mouse and gamepad
- Smooth transition between songs, the next song is loaded in advance
- "Sing now" starts the current song with the player selection and returns to the jukebox afterwards
- The logo in the main menu is now centered
- New LyricsIcon and QueueRow textures in all Vocaluxe 2024 skins

* Fix SonarCloud issues
2026-10-21 08:49:50 +02:00
McSchneidar e665e31f4a Improved animations (#907)
* Smoother countdown and new menu and in-game animations

- Countdown digits pop in and fade out each second, with a ring of dots showing the remaining part of the second
- Medley countdown uses a smoothed timer and no longer stutters
- Rating popups scale in from below and drift upwards while fading out
- Player scores pulse briefly at the end of a line
- Pause menu fades and scales in and out
- Buttons and select slides pulse briefly when they get selected
- Shared easing functions and a draw transform for animations

* Retrigger CI
2026-10-17 12:39:18 +02:00
McSchneidarandFlorian Ostertag df412b6d33 Two small fixes (#904)
* Fix index check in CSelectSlide.RenameValue

The check used && instead of ||. An index cannot be negative and out
of range at the same time, so the check never returned early and an
invalid index caused an ArgumentOutOfRangeException.

* Allow textures to be disposed more than once

CTextureBase.Dispose threw ObjectDisposedException on a second call.
Dispose must be safe to call multiple times, otherwise freeing a
texture twice crashes the game.

Return early instead. CD3DTexture and COGLTexture also check
IsDisposed first, so a second call does not free the GPU texture
again. This matters for OpenGL, where the texture name may already
belong to another texture.

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-16 05:53:10 +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
Florian Küpper 009a303c28 Merge branch 'release-0.4.1' into develop 2017-10-30 21:30:24 +01:00
Florian Küpper df34766f35 Fixed aspect of avatars 2017-10-08 12:40:59 +02:00
Florian Küpper c5bfd46865 Removed outdated xml loading stuff 2017-09-02 18:00:06 +02:00
lukeIam 4f990e6306 Fix: After deleting a playlist the playlist-selector is out of sync (maybe a fix for #209) 2016-11-21 20:10:16 +01:00
Flamefire 3344a3562f Use new serializer for theme loading
Fix some bugs during load
2014-12-17 00:12:20 +01:00
Flamefire 84e9163b96 Refactor PartyModes in preparation for a more unified name selection and maybe config 2014-12-14 20:40:08 +01:00
Flamefire 1ba0d429a1 Simplify SelectSlides and fix a couple of problems there 2014-12-13 13:52:59 +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 dd6b0416b6 Rename XML to lowercase Xml in classes and names for consistency 2014-11-17 19:33:48 +01:00
Flamefire 10c456cbff Unify name of selected color to SelColor 2014-10-23 00:39:57 +02:00
Flamefire 8c3a50c18f More improvements for objectinteractions
Also removes highlight textures and colors
2014-10-22 13:46:34 +02: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 8109d77ab1 Fix wrong theme stuff 2014-10-16 23:47:52 +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
Flamefire 7f8e974fe1 Rename CTexture to CTextureRef to reflect it is only a reference 2014-09-13 17:51:55 +02:00
Florian Küpper d248292fa3 Update LoadTextures for some elements. 2014-09-12 09:34: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 eba5deba2b Make CSettings contain only constant values to avoid accidental misuse. Everything changeable is in CConfig 2014-03-19 19:54:55 +01:00
Florian Küpper 11df1dd0ad PartyNames: Workaround for right size of select-slide-textures. Anyone better ideas? 2013-12-26 13:07:29 +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
Florian Küpper 5449d985ef Revert PartyNames-changes on develop-branch. 2013-12-26 13:02:00 +01:00
Florian Küpper 830a2a8c9c Some additions to select-slides. 2013-12-26 13:01:57 +01:00
Flamefire 370964ee99 Fix file headers and indentations 2013-09-20 18:09:32 +02:00
Flamefire 762d2c80d2 Code cleanup
Added license stuff
2013-08-22 00:56:58 +02:00
Flamefire 7f5cbbf686 Fixed string comparisons
Added CCursor.ReloadTextures without position flickering
2013-05-10 14:31:20 +02:00
Flamefire 142a690cc6 Using null instead of CTexture(-1) for "no texture" 2013-05-05 20:02:28 +02:00
Flamefire f370693dde Convert STexture to class CTexture 2013-05-04 15:14:02 +02:00
Flamefire 553be47783 Removed unused and temporary stuff 2013-05-01 22:14:34 +02:00
Flamefire b1e28ae7bc More refactoring (mainly LINQ) 2013-04-24 00:41:08 +02:00
Flamefire f53e08607b Small cleanup (join declarations) 2013-04-23 22:14:53 +02:00