Merge pull request #359 from flokuep/develop

Party Mode fixes
This commit is contained in:
Florian Küpper authored and GitHub committed 2017-12-29 12:31:56 +01:00
commit 37d5373992
16 files changed
+155 -131

No files matched your search

-7
View File
@@ -9,13 +9,6 @@ source_lang = English
lang_map = en:English, cs:Czech, de:German, es:Spanish, fr:French, sv:Swedish, nl:Dutch, ast:Asturian, tr:Turkish, hu:Hungarian, it:Italian, ca:Catalan, pt:Portuguese, pl_PL:Polish, da_DK:Danish
type = ANDROID
[vocaluxe.challenge-medley]
file_filter = Output/PartyModes/ChallengeMedley/Languages/<lang>.xml
source_file = Output/PartyModes/ChallengeMedley/Languages/English.xml
source_lang = English
lang_map = en:English, cs:Czech, de:German, es:Spanish, fr:French, sv:Swedish, nl:Dutch, ast:Asturian, tr:Turkish, hu:Hungarian, it:Italian, ca:Catalan, pt:Portuguese, pl_PL:Polish, da_DK:Danish
type = ANDROID
[vocaluxe.game]
file_filter = Output/Languages/<lang>.xml
source_file = Output/Languages/English.xml
+8
View File
@@ -15,6 +15,7 @@
<string name="TR_DEBUG_SONGS">Chansons chargées</string>
<string name="TR_DEBUG_MOUSE">Souris</string>
<string name="TR_DEBUG_MEMORY">Usage de la mémoire</string>
<string name="TR_GAMEMODE">Mode</string>
<string name="TR_GAMEMODE_NORMAL">Normal</string>
<string name="TR_GAMEMODE_DUET">Duo</string>
<string name="TR_GAMEMODE_MEDLEY">Medley</string>
@@ -31,6 +32,10 @@
<string name="TR_USERROLE_NORMAL">Utilisateur normal</string>
<string name="TR_USERROLE_ADMIN">Administrateur</string>
<string name="TR_USERROLE_KEYBOARDUSER">Clavier d'Utilisateur</string>
<string name="TR_SONGSOURCE">Source des chansons</string>
<string name="TR_SONGSOURCE_PLAYLIST">Playlist</string>
<string name="TR_SONGSOURCE_CATEGORY">Catégorie</string>
<string name="TR_SONGSOURCE_ALLSONGS">Toutes les chansons</string>
<string name="TR_CONFIG_SOFTWARE">Logiciel</string>
<string name="TR_CONFIG_OPENGL">OpenGL</string>
<string name="TR_CONFIG_DIRECT3D">Direct3D</string>
@@ -151,6 +156,8 @@
<string name="TR_SCREENSING_BUTTON_CANCEL">Arrêter de chanter</string>
<string name="TR_SCREENSING_BUTTON_CONTINUE">Continuer</string>
<string name="TR_SCREENSING_BUTTON_SKIP">Passer cette chanson</string>
<string name="TR_SCREENSING_BUTTON_RESTART_ROUND">Redémarer le tour</string>
<string name="TR_SCREENSING_BUTTON_RESTART_GAME">Redémarer le jeu</string>
<string name="TR_SCREENSCORE_SCORES">Scores</string>
<string name="TR_SCREENSCORE_RATING">Note</string>
<string name="TR_SCREENSCORE_POINTS">Points</string>
@@ -183,6 +190,7 @@
<string name="TR_SCREENOGAME_SONGMENU">Menu des Chansons</string>
<string name="TR_SCREENOGAME_SONGSORTING">Classement des Chansons</string>
<string name="TR_SCREENOGAME_TABS">Dossiers</string>
<string name="TR_SCREENOGAME_AUTOPLAYPREVIEWS">Démarrage automatique des aperçus</string>
<string name="TR_SCREENOGAME_DIFFICULTY">Difficulté du Jeu</string>
<string name="TR_SCREENOGAME_TIMERMODE">Mode du Minuteur</string>
<string name="TR_SCREENOGAME_HIGHSCORESTYLE">Style meilleur score</string>
+1 -1
View File
@@ -223,7 +223,7 @@
<string name="TR_SCREENOVIDEO_WEBCAMDEVICES">Webcam</string>
<string name="TR_SCREENOVIDEO_WEBCAMRESOLUTION">Risoluzione-Webcam</string>
<string name="TR_SCREENOVIDEO_BUTTON_ADJUSTMENTS">Sistemazione schermo</string>
<string name="TR_SCREENOVIDEOADJUSTMENTS_NOTES">Premi CTR + ALT (+ SHIFT) + Freccia|"+ per sistemare lo schermo</string>
<string name="TR_SCREENOVIDEOADJUSTMENTS_NOTES">Premi CTR + ALT (+ SHIFT) + Freccia|"+\ per sistemare lo schermo</string>
<string name="TR_SCREENOVIDEOADJUSTMENTS_NOTESRESET">CTR + ALT + 0 per ripristinare</string>
<string name="TR_SCREENOVIDEOADJUSTMENTS_TOPLEFT">Sopra a sinistra</string>
<string name="TR_SCREENOVIDEOADJUSTMENTS_TOPRIGHT">Sopra a destra</string>
@@ -11,6 +11,7 @@
<string name="TR_BUTTON_YES">Oui</string>
<string name="TR_BUTTON_NO">Non</string>
<string name="TR_BUTTON_NEXT_ROUND">Tour suivant</string>
<string name="TR_SONGS">Chansons</string>
<string name="TR_SCREENCONFIG_TITLE">Mode Challenge: Configuration</string>
<string name="TR_SCREENCONFIG_NUMPLAYERS">Nombre de joueurs</string>
<string name="TR_SCREENCONFIG_NUMMICS">Nombre de micros</string>
@@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="language">Deutsch</string>
<string name="TR_PARTYMODE_NAME">Challenge Modus</string>
@@ -11,6 +11,7 @@
<string name="TR_BUTTON_YES">Ja</string>
<string name="TR_BUTTON_NO">Nein</string>
<string name="TR_BUTTON_NEXT_ROUND">Nächste Runde</string>
<string name="TR_SONGS">Lieder</string>
<string name="TR_SCREENCONFIG_TITLE">Challenge Modus: Einstellungen</string>
<string name="TR_SCREENCONFIG_NUMPLAYERS">Anzahl der Spieler</string>
<string name="TR_SCREENCONFIG_NUMMICS">Anzahl der Mikrofone</string>
@@ -11,6 +11,7 @@
<string name="TR_BUTTON_YES">Ja</string>
<string name="TR_BUTTON_NO">Nej</string>
<string name="TR_BUTTON_NEXT_ROUND">Nästa omgång</string>
<string name="TR_SONGS">Låtar</string>
<string name="TR_SCREENCONFIG_TITLE">Utmanarläge: Konfiguration</string>
<string name="TR_SCREENCONFIG_NUMPLAYERS">Antal spelare</string>
<string name="TR_SCREENCONFIG_NUMMICS">Antal mikrofoner</string>
@@ -13,22 +13,19 @@
<string name="TR_BUTTON_NEXT_ROUND">Démarrer</string>
<string name="TR_SONGS">Chansons</string>
<string name="TR_TEAM">Equipe</string>
<string name="TR_PLAYLIST">Playlist</string>
<string name="TR_CATEGORY">Catégorie</string>
<string name="TR_ALLSONGS">Toutes les chansons</string>
<string name="TR_SCREENCONFIG_TITLE">Tic-Tac-Toe: Configuration</string>
<string name="TR_SCREENCONFIG_NUMPLAYERST1">Nombre de joueurs dans l'Equipe 1</string>
<string name="TR_SCREENCONFIG_NUMPLAYERST2">Nombre de joueurs dans l'Equipe 2</string>
<string name="TR_SCREENCONFIG_NUMFIELDS">Nombre de champs</string>
<string name="TR_SCREENCONFIG_SONGSOURCE">Source des chansons</string>
<string name="TR_SCREENCONFIG_GAMEMODE">Mode de jeu</string>
<string name="TR_SCREENCONFIG_REFILLJOKERS">Recharger les jokers a chaque tour</string>
<string name="TR_SCREENNAMES_TITLE">Tic-Tac-Toe: Choix des joueurs</string>
<string name="TR_SCREENNAMES_TEAM1">Equipe 1</string>
<string name="TR_SCREENNAMES_TEAM2">Equipe 2</string>
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Sélectionner au hasard</string>
<string name="TR_SCREENMAIN_TITLE">Tic-Tac-Toe</string>
<string name="TR_SCREENMAIN_TEAM_CHOOSE">Choisissez une case.</string>
<string name="TR_SCREENMAIN_NEXT_PLAYER">Prochains joueurs</string>
<string name="TR_SCREENMAIN_POPUP_REALLYEXIT">Voulez vous vraiment quitter Tic-Tac-Toe?</string>
<string name="TR_SCREENMAIN_NEXT_PLAYER">Joueur suivant</string>
<string name="TR_SCREENMAIN_POPUP_REALLYEXIT">Voulez-vous vraiment quitter Tic-Tac-Toe?</string>
<string name="TR_SCREENMAIN_WINNER">Et le gagnant est...</string>
<string name="TR_SCREENMAIN_NOWINNER">Il n'y a pas de gagnant sur ce tour...</string>
</resources>
@@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="language">Deutsch</string>
<string name="TR_PARTYMODE_NAME">Tic-Tac-Toe</string>
@@ -13,15 +13,11 @@
<string name="TR_BUTTON_NEXT_ROUND">Starten</string>
<string name="TR_SONGS">Songs</string>
<string name="TR_TEAM">Team</string>
<string name="TR_PLAYLIST">Playlist</string>
<string name="TR_CATEGORY">Kategorie</string>
<string name="TR_ALLSONGS">Alle Songs</string>
<string name="TR_SCREENCONFIG_TITLE">Tic-Tac-Toe: Einstellungen</string>
<string name="TR_SCREENCONFIG_NUMPLAYERST1">Anzahl der Spieler in Team 1</string>
<string name="TR_SCREENCONFIG_NUMPLAYERST2">Anzahl der Spieler in Team 2</string>
<string name="TR_SCREENCONFIG_NUMFIELDS">Anzahl der Felder</string>
<string name="TR_SCREENCONFIG_SONGSOURCE">Song-Quelle</string>
<string name="TR_SCREENCONFIG_GAMEMODE">Spiel-Modus</string>
<string name="TR_SCREENCONFIG_REFILLJOKERS">Joker nach jeder Runde auffüllen</string>
<string name="TR_SCREENNAMES_TITLE">Tic-Tac-Toe: Spielerwahl</string>
<string name="TR_SCREENNAMES_TEAM1">Team 1</string>
<string name="TR_SCREENNAMES_TEAM2">Team 2</string>
@@ -13,15 +13,11 @@
<string name="TR_BUTTON_NEXT_ROUND">Starta</string>
<string name="TR_SONGS">Låtar</string>
<string name="TR_TEAM">Lag</string>
<string name="TR_PLAYLIST">Spellista</string>
<string name="TR_CATEGORY">Kategori</string>
<string name="TR_ALLSONGS">Alla låtar</string>
<string name="TR_SCREENCONFIG_TITLE">Tripp-Trapp-Trull: Konfiguration</string>
<string name="TR_SCREENCONFIG_NUMPLAYERST1">Antal spelare i lag 1</string>
<string name="TR_SCREENCONFIG_NUMPLAYERST2">Antal spelare i lag 2</string>
<string name="TR_SCREENCONFIG_NUMFIELDS">Antal fält</string>
<string name="TR_SCREENCONFIG_SONGSOURCE">Låtkälla</string>
<string name="TR_SCREENCONFIG_GAMEMODE">Spelläge</string>
<string name="TR_SCREENCONFIG_REFILLJOKERS">Fyll på jokrar varje runda</string>
<string name="TR_SCREENNAMES_TITLE">Tripp-Trapp-Trull: Välj spelare</string>
<string name="TR_SCREENNAMES_TEAM1">Lag 1</string>
<string name="TR_SCREENNAMES_TEAM2">Lag 2</string>
@@ -20,6 +20,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.InteropServices;
using VocaluxeLib.Game;
using VocaluxeLib.Menu;
using VocaluxeLib.Songs;
@@ -138,7 +139,6 @@ namespace VocaluxeLib.PartyModes.Challenge
public int CurrentRoundNr;
public int[] CatSongIndices;
public List<int> Songs;
}
@@ -181,7 +181,6 @@ namespace VocaluxeLib.PartyModes.Challenge
CategoryIndex = 0,
GameMode = EGameMode.TR_GAMEMODE_NORMAL,
NumMedleySongs = 5,
CatSongIndices = null,
Results = null,
Songs = new List<int>()
};
@@ -195,6 +194,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Selection.SongIndex = -1;
_ScreenSongOptions.Selection.CategoryIndex = -1;
if (CBase.Config.GetTabs() == EOffOn.TR_CONFIG_ON && _ScreenSongOptions.Sorting.SongSorting != ESongSorting.TR_CONFIG_NONE)
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
@@ -213,11 +213,7 @@ namespace VocaluxeLib.PartyModes.Challenge
public override void UpdateGame()
{
/*
if (CBase.Songs.IsInCategory() || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF)
_ScreenSongOptions.Selection.RandomOnly = true;
else
_ScreenSongOptions.Selection.RandomOnly = false;*/
}
private IMenu _GetNextScreen()
@@ -320,85 +316,35 @@ namespace VocaluxeLib.PartyModes.Challenge
public override SScreenSongOptions GetScreenSongOptions()
{
_ScreenSongOptions.Selection.RandomOnly = true;
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
switch (GameData.SongSource)
{
case ESongSource.TR_SONGSOURCE_ALLSONGS:
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
_ScreenSongOptions.Sorting.Tabs = CBase.Config.GetTabs();
_ScreenSongOptions.Sorting.FilterPlaylistID = -1;
_ScreenSongOptions.Selection.CategoryChangeAllowed = true;
break;
case ESongSource.TR_SONGSOURCE_CATEGORY:
_ScreenSongOptions.Sorting.SongSorting = GameData.Sorting;
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
_ScreenSongOptions.Sorting.FilterPlaylistID = -1;
if (GameData.CatSongIndices == null)
_CreateCatSongIndices();
_ScreenSongOptions.Selection.SongIndex = GameData.CatSongIndices[GameData.CategoryIndex];
_ScreenSongOptions.Selection.CategoryChangeAllowed = false;
break;
case ESongSource.TR_SONGSOURCE_PLAYLIST:
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Sorting.FilterPlaylistID = GameData.PlaylistID;
_ScreenSongOptions.Selection.CategoryChangeAllowed = false;
break;
}
return _ScreenSongOptions;
}
// ReSharper disable RedundantAssignment
public override void OnSongChange(int songIndex, ref SScreenSongOptions screenSongOptions)
// ReSharper restore RedundantAssignment
{
_ScreenSongOptions.Selection.SongIndex = -1;
if (_ScreenSongOptions.Selection.SelectNextRandomSong && songIndex != -1)
{
_ScreenSongOptions.Selection.SelectNextRandomSong = false;
_CreateCatSongIndices();
if (GameData.CatSongIndices != null)
{
if (GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
}
}
_ScreenSongOptions.Selection.SongIndex = songIndex;
screenSongOptions = _ScreenSongOptions;
}
// ReSharper disable RedundantAssignment
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
// ReSharper restore RedundantAssignment
{
if (GameData.CatSongIndices != null && categoryIndex != -1)
if (categoryIndex != -1 || CBase.Config.GetTabs() == EOffOn.TR_CONFIG_OFF)
{
if (GameData.CatSongIndices[categoryIndex] == -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
else
_ScreenSongOptions.Selection.SongIndex = GameData.CatSongIndices[categoryIndex];
//If category is selected or tabs off: only random song selection
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
_ScreenSongOptions.Selection.RandomOnly = true;
}
else
{
//If no category is selected: let user choose category
_ScreenSongOptions.Selection.SongIndex = -1;
_ScreenSongOptions.Selection.RandomOnly = false;
}
if (GameData.CatSongIndices == null && categoryIndex != -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
if (categoryIndex == -1)
_ScreenSongOptions.Selection.RandomOnly = false;
if (_ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF || categoryIndex != -1)
_ScreenSongOptions.Selection.RandomOnly = true;
_ScreenSongOptions.Selection.CategoryIndex = categoryIndex;
screenSongOptions = _ScreenSongOptions;
}
@@ -469,11 +415,42 @@ namespace VocaluxeLib.PartyModes.Challenge
/// </summary>
private void _PrepareSongSelection()
{
_ScreenSongOptions.Selection.RandomOnly = _ScreenSongOptions.Sorting.Tabs != EOffOn.TR_CONFIG_ON;
_ScreenSongOptions.Selection.CategoryChangeAllowed = false;
_ScreenSongOptions.Selection.RandomOnly = true;
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
switch (GameData.SongSource)
{
case ESongSource.TR_SONGSOURCE_ALLSONGS:
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
_ScreenSongOptions.Sorting.Tabs = CBase.Config.GetTabs();
_ScreenSongOptions.Sorting.FilterPlaylistID = -1;
_ScreenSongOptions.Selection.CategoryIndex = -1;
_ScreenSongOptions.Selection.CategoryChangeAllowed = true;
break;
case ESongSource.TR_SONGSOURCE_CATEGORY:
_ScreenSongOptions.Sorting.SongSorting = GameData.Sorting;
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
_ScreenSongOptions.Sorting.FilterPlaylistID = -1;
_ScreenSongOptions.Selection.CategoryIndex = GameData.CategoryIndex;
_ScreenSongOptions.Selection.CategoryChangeAllowed = false;
break;
case ESongSource.TR_SONGSOURCE_PLAYLIST:
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Sorting.FilterPlaylistID = GameData.PlaylistID;
_ScreenSongOptions.Selection.CategoryChangeAllowed = false;
break;
}
_SetNumJokers();
_SetTeamNames();
GameData.CatSongIndices = null;
}
/// <summary>
@@ -601,39 +578,62 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateScores()
{
//Prepare results table
if (GameData.ResultTable.Count == 0)
{
for (int i = 0; i < GameData.NumPlayer; i++)
{
var row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
var row = new CResultTableRow { PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0 };
GameData.ResultTable.Add(row);
}
GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce];
GameData.Results = new int[GameData.NumRounds, GameData.NumPlayerAtOnce];
for (int i = 0; i < GameData.NumRounds; i++)
{
for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
GameData.Results[i, j] = 0;
}
}
SPlayer[] results = CBase.Game.GetPlayers();
if (results == null)
return;
if (results.Length < GameData.NumPlayerAtOnce)
return;
//Get points from game
CPoints points = CBase.Game.GetPoints();
SPlayer[] players = CBase.Game.GetPlayers();
for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
GameData.Results[GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
//Go over all rounds and sum up points
for (int round = 0; round < points.NumRounds; round++)
{
SPlayer[] res = points.GetPlayer(round, GameData.NumPlayerAtOnce);
List<SStats> points = _GetPointsForPlayer(results);
if (res == null || res.Length < GameData.NumPlayerAtOnce)
return;
for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
{
players[p].Points += res[p].Points;
players[p].PointsGoldenNotes += res[p].PointsGoldenNotes;
players[p].PointsLineBonus += res[p].PointsLineBonus;
}
}
//Calculate average points
for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
{
players[p].Points /= points.NumRounds;
players[p].PointsGoldenNotes /= points.NumRounds;
players[p].PointsLineBonus /= points.NumRounds;
//Save points in GameData
GameData.Results[GameData.CurrentRoundNr - 2, p] = (int)Math.Round(players[p].Points);
}
List<SStats> stats = _GetPointsForPlayer(players);
for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
//Find matching row in results table
int index = -1;
for (int j = 0; j < GameData.ResultTable.Count; j++)
{
if (points[i].ProfileID == GameData.ResultTable[j].PlayerID)
if (stats[i].ProfileID == GameData.ResultTable[j].PlayerID)
{
index = j;
break;
@@ -644,14 +644,14 @@ namespace VocaluxeLib.PartyModes.Challenge
continue;
CResultTableRow row = GameData.ResultTable[index];
//Update results entry
row.NumPlayed++;
row.NumWon += points[i].Won;
row.NumSingPoints += points[i].SingPoints;
row.NumGamePoints += points[i].GamePoints;
row.NumWon += stats[i].Won;
row.NumSingPoints += stats[i].SingPoints;
row.NumGamePoints += stats[i].GamePoints;
GameData.ResultTable[index] = row;
}
GameData.ResultTable.Sort();
@@ -717,18 +717,5 @@ namespace VocaluxeLib.PartyModes.Challenge
return result;
}
private void _CreateCatSongIndices()
{
if (GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
{
GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
for (int i = 1; i < GameData.CatSongIndices.Length; i++)
GameData.CatSongIndices[i] = CBase.Songs.GetNumSongsInCategory(i) + GameData.CatSongIndices[i - 1];
}
if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF)
GameData.CatSongIndices = null;
}
}
}
@@ -20,6 +20,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.InteropServices;
using VocaluxeLib.Game;
using VocaluxeLib.Menu;
using VocaluxeLib.Songs;
@@ -534,13 +535,33 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (!GameData.Rounds[GameData.FieldNr].Finished)
GameData.CurrentRoundNr++;
CPoints points = CBase.Game.GetPoints();
SPlayer[] results = CBase.Game.GetPlayers();
if (results == null)
if (results == null || results.Length < 2)
return;
if (results.Length < 2)
return;
//Sum up all points
for (int r = 0; r < points.NumRounds; r++)
{
SPlayer[] player = points.GetPlayer(r, 2);
for (int i = 0; i < 2; i++)
{
results[i].Points += player[i].Points;
results[i].PointsGoldenNotes += player[i].PointsGoldenNotes;
results[i].PointsLineBonus += player[i].PointsLineBonus;
}
}
//Calc average of points
for (int i = 0; i < 2; i++)
{
results[i].Points /= points.NumRounds;
results[i].PointsGoldenNotes /= points.NumRounds;
results[i].PointsLineBonus /= points.NumRounds;
}
//Decide who has won
GameData.Rounds[GameData.FieldNr].PointsTeam1 = (int)Math.Round(results[0].Points);
GameData.Rounds[GameData.FieldNr].PointsTeam2 = (int)Math.Round(results[1].Points);
GameData.Rounds[GameData.FieldNr].Finished = true;
+6
View File
@@ -17,6 +17,8 @@
//Uncomment to make the engine hit every note
//#define DEBUG_HIT
//Uncomment to only hit notes for player one
//#define DEBUG_HIT_1
using System;
using System.Collections.Generic;
@@ -280,6 +282,8 @@ namespace Vocaluxe.Base
if (notes[note].PointsForBeat > 0 && (CRecord.ToneValid(p)
#if DEBUG_HIT
|| true
#elif DEBUG_HIT_1
|| (true && p == 0)
#endif
))
{
@@ -294,6 +298,8 @@ namespace Vocaluxe.Base
#if DEBUG_HIT
tonePlayer = tone;
#elif DEBUG_HIT_1
if(p == 0) tonePlayer = tone;
#endif
Players[p].NoteDiff = Math.Abs(tone - tonePlayer);
+11 -1
View File
@@ -647,7 +647,15 @@ namespace Vocaluxe.Screens
if (_Sso.Selection.CategoryIndex != CBase.Songs.GetCurrentCategoryIndex())
{
_SelectedCategoryIndex = _Sso.Selection.CategoryIndex;
_SongMenu.EnterSelectedCategory();
if (_SelectedCategoryIndex != -1)
{
_SongMenu.SetSelectedCategory(_SelectedCategoryIndex);
_SongMenu.EnterSelectedCategory();
}
else
{
_SongMenu.LeaveSelectedCategory();
}
}
_SearchActive = _Sso.Sorting.SearchActive;
_SearchText = _Sso.Sorting.SearchString;
@@ -791,7 +799,9 @@ namespace Vocaluxe.Screens
if (_Sso.Selection.RandomOnly && _Sso.Selection.NumJokers != null)
{
//Show and select start button
_Buttons[_ButtonStart].Visible = true;
_SelectElement(_Buttons[_ButtonStart]);
_SongMenu.SmallView = true;
@@ -286,6 +286,11 @@ namespace VocaluxeLib.Menu.SongMenu
_PreviewNr = _SelectionNr;
}
public void LeaveSelectedCategory()
{
_LeaveCategory();
}
public virtual void UnloadSkin() {}
public virtual void LoadSkin()
+1
View File
@@ -40,6 +40,7 @@ namespace VocaluxeLib.Menu.SongMenu
int GetSelectedCategory();
void SetSelectedCategory(int categoryNr);
bool EnterSelectedCategory();
void LeaveSelectedCategory();
// The song that is currently playing (set e.g. by clicking on a song)
int GetPreviewSong();
@@ -63,6 +63,7 @@ namespace VocaluxeLib.PartyModes
_ScreenSongOptions.Selection.NumJokers = null;
_ScreenSongOptions.Selection.TeamNames = null;
_ScreenSongOptions.Selection.SongIndex = -1;
_ScreenSongOptions.Selection.CategoryIndex = -1;
_ScreenSongOptions.Sorting.SearchString = String.Empty;
_ScreenSongOptions.Sorting.SearchActive = false;