* Add team survival party mode A new party mode for two teams that only needs 2 microphones. In every duel one player of each team sings against one of the other team. Whoever loses a duel loses a heart, players without hearts are out, and the team whose players are all out loses. - Every player sings once per round before anyone sings again, the duels are drawn randomly - Teams of different sizes are possible, in the smaller team some players sing a second time per round - Hearts can be the same for everyone or set per player, to balance uneven teams or strong and weak singers - Up to 3 jokers per player to skip a song - On a tie, the duel is sung again - A lost heart is animated, and the winning team is celebrated at the end * Trigger CI rebuild --------- Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
89 lines
3.0 KiB
C#
89 lines
3.0 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.TeamSurvival
|
|
{
|
|
public class CPartyScreenTeamSurvivalNames : CMenuPartyNameSelection
|
|
{
|
|
protected override int _ScreenVersion
|
|
{
|
|
get { return 1; }
|
|
}
|
|
|
|
private new CPartyModeTeamSurvival _PartyMode;
|
|
|
|
public override void Init()
|
|
{
|
|
base.Init();
|
|
_PartyMode = (CPartyModeTeamSurvival)base._PartyMode;
|
|
}
|
|
|
|
public override void OnShow()
|
|
{
|
|
base.OnShow();
|
|
|
|
while (_PartyMode.GameData.ProfileIdsTeam1.Count > _PartyMode.GameData.NumPlayerTeam1)
|
|
{
|
|
_PartyMode.GameData.ProfileIdsTeam1.RemoveAt(_PartyMode.GameData.ProfileIdsTeam1.Count - 1);
|
|
}
|
|
|
|
while (_PartyMode.GameData.ProfileIdsTeam2.Count > _PartyMode.GameData.NumPlayerTeam2)
|
|
{
|
|
_PartyMode.GameData.ProfileIdsTeam2.RemoveAt(_PartyMode.GameData.ProfileIdsTeam2.Count - 1);
|
|
}
|
|
|
|
SetPartyModeData(CPartyModeTeamSurvival.TeamCount, _PartyMode.GameData.NumPlayerTeam1 + _PartyMode.GameData.NumPlayerTeam2,
|
|
new int[] { _PartyMode.GameData.NumPlayerTeam1, _PartyMode.GameData.NumPlayerTeam2 });
|
|
var ids = new List<Guid>[] { _PartyMode.GameData.ProfileIdsTeam1, _PartyMode.GameData.ProfileIdsTeam2 };
|
|
SetPartyModeProfiles(ids);
|
|
}
|
|
|
|
public override void Back()
|
|
{
|
|
_SaveTeams();
|
|
_PartyMode.Back();
|
|
}
|
|
|
|
public override void Next()
|
|
{
|
|
_SaveTeams();
|
|
_PartyMode.GameData.NumPlayerTeam1 = _PartyMode.GameData.ProfileIdsTeam1.Count;
|
|
_PartyMode.GameData.NumPlayerTeam2 = _PartyMode.GameData.ProfileIdsTeam2.Count;
|
|
_PartyMode.Next();
|
|
}
|
|
|
|
private void _SaveTeams()
|
|
{
|
|
if (_TeamList.Length == CPartyModeTeamSurvival.TeamCount)
|
|
{
|
|
_PartyMode.GameData.ProfileIdsTeam1 = _TeamList[0];
|
|
_PartyMode.GameData.ProfileIdsTeam2 = _TeamList[1];
|
|
}
|
|
|
|
if (_NumPlayerTeams.Length == CPartyModeTeamSurvival.TeamCount)
|
|
{
|
|
_PartyMode.GameData.NumPlayerTeam1 = _NumPlayerTeams[0];
|
|
_PartyMode.GameData.NumPlayerTeam2 = _NumPlayerTeams[1];
|
|
}
|
|
}
|
|
}
|
|
}
|