Files
Vocaluxe/PartyModes/PartyModeRuleRoulette/CPartyScreenRuleRouletteNames.cs
McSchneidarandFlorian Ostertag d61f90e6fc Add rule roulette party mode (#916)
A new party mode for 2 to 12 players that only needs 2 microphones. Players sing duels against each other, and before every duel a wheel decides the rule for this round. Every player sings equally often, and the player with the most points wins.

- 20 rules: from short songs, medleys, double packs, duets and free song choice to rules that change what counts (golden notes, line bonus, target score, fewer points win, teamwork) or how many points there are (double points, all or nothing, point steal, lead counts, underdog bonus, jokers)
- The rules on the wheel are drawn randomly for each game, or chosen manually: every rule can be set to always, random or never
- Every rule on the wheel comes up once before any rule comes up again; rules already used are dimmed
- Rules that need special songs are only used if the song selection has enough of them
- The wheel spins with a running light that slows down, and the winner is celebrated at the end

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-18 08:30:04 +02:00

74 lines
2.1 KiB
C#

#region license
// This file is part of Vocaluxe.
//
// Vocaluxe is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Vocaluxe is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion
using System;
using System.Collections.Generic;
using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.RuleRoulette
{
public class CPartyScreenRuleRouletteNames : CMenuPartyNameSelection
{
protected override int _ScreenVersion
{
get { return 1; }
}
private new CPartyModeRuleRoulette _PartyMode;
public override void Init()
{
base.Init();
_PartyMode = (CPartyModeRuleRoulette)base._PartyMode;
_AllowChangePlayerNum = false;
_Teams = false;
}
public override void OnShow()
{
base.OnShow();
SetPartyModeData(_PartyMode.GameData.NumPlayer);
while (_PartyMode.GameData.ProfileIds.Count > _NumPlayer)
{
_PartyMode.GameData.ProfileIds.RemoveAt(_PartyMode.GameData.ProfileIds.Count - 1);
}
var ids = new List<Guid>[] { _PartyMode.GameData.ProfileIds };
SetPartyModeProfiles(ids);
}
public override void Back()
{
if (_TeamList.Length == 1)
{
_PartyMode.GameData.ProfileIds = _TeamList[0];
}
_PartyMode.Back();
}
public override void Next()
{
if (_TeamList.Length == 1)
{
_PartyMode.GameData.ProfileIds = _TeamList[0];
}
_PartyMode.Next();
}
}
}