Better handling of Points (Preparation for future changes)

Fix some warnings of unused results (show errors on failure!)
This commit is contained in:
Flamefire committed 2013-09-26 13:47:19 +02:00
1 parent 9bfedf3cf0
commit e3f744677e
7 files changed
+129 -137

No files matched your search

+103 -103
View File
@@ -63,8 +63,16 @@ namespace Vocaluxe.Base
_CreditsRessourcesFilePath = Path.Combine(Environment.CurrentDirectory, CSettings.FileCreditsRessourcesDB); _CreditsRessourcesFilePath = Path.Combine(Environment.CurrentDirectory, CSettings.FileCreditsRessourcesDB);
_InitHighscoreDB(); _InitHighscoreDB();
_InitCoverDB(); if (!_InitCoverDB())
_InitCreditsRessourcesDB(); {
CLog.LogError("Error initializing Cover-DB", true, true);
return;
}
if (!_InitCreditsRessourcesDB())
{
CLog.LogError("Error initializing Cover-DB", true, true);
return;
}
GC.Collect(); GC.Collect();
} }
@@ -93,26 +101,6 @@ namespace Vocaluxe.Base
return _GetDataBaseSongInfos(songID, out sArtist, out sTitle, out numPlayed, out dateAdded, _HighscoreFilePath); return _GetDataBaseSongInfos(songID, out sArtist, out sTitle, out numPlayed, out dateAdded, _HighscoreFilePath);
} }
public static void IncreaseSongCounter(SPlayer player)
{
using (var connection = new SQLiteConnection())
{
connection.ConnectionString = "Data Source=" + _HighscoreFilePath;
try
{
connection.Open();
}
catch (Exception) {}
using (var command = new SQLiteCommand(connection))
{
int dataBaseSongID = _GetDataBaseSongID(player, command);
_IncreaseSongCounter(dataBaseSongID, command);
}
}
}
public static void IncreaseSongCounter(int dataBaseSongID) public static void IncreaseSongCounter(int dataBaseSongID)
{ {
using (var connection = new SQLiteConnection()) using (var connection = new SQLiteConnection())
@@ -170,11 +158,27 @@ namespace Vocaluxe.Base
return -1; return -1;
} }
int medley = 0;
int duet = 0;
int shortSong = 0;
switch (player.GameMode)
{
case EGameMode.TR_GAMEMODE_MEDLEY:
medley = 1;
break;
case EGameMode.TR_GAMEMODE_DUET:
duet = 1;
break;
case EGameMode.TR_GAMEMODE_SHORTSONG:
shortSong = 1;
break;
}
using (var command = new SQLiteCommand(connection)) using (var command = new SQLiteCommand(connection))
{ {
int dataBaseSongID = CSongs.GetSong(player.SongID).DataBaseSongID; int dataBaseSongID = CSongs.GetSong(player.SongID).DataBaseSongID;
return _AddScore(CProfiles.GetPlayerName(player.ProfileID), (int)Math.Round(player.Points), player.VoiceNr, player.DateTicks, player.Medley ? 1 : 0, return _AddScore(CProfiles.GetPlayerName(player.ProfileID), (int)Math.Round(player.Points), player.VoiceNr, player.DateTicks, medley,
player.Duet ? 1 : 0, player.ShortSong ? 1 : 0, (int)CProfiles.GetDifficulty(player.ProfileID), dataBaseSongID, command); duet, shortSong, (int)CProfiles.GetDifficulty(player.ProfileID), dataBaseSongID, command);
} }
} }
} }
@@ -243,7 +247,7 @@ namespace Vocaluxe.Base
return lastInsertID; return lastInsertID;
} }
public static void LoadScore(out List<SDBScoreEntry> scores, SPlayer player) public static void LoadScore(out List<SDBScoreEntry> scores, int songID, EGameMode gameMode)
{ {
using (var connection = new SQLiteConnection()) using (var connection = new SQLiteConnection())
{ {
@@ -263,47 +267,51 @@ namespace Vocaluxe.Base
using (var command = new SQLiteCommand(connection)) using (var command = new SQLiteCommand(connection))
{ {
int medley = 0; int medley = 0;
if (player.Medley)
medley = 1;
int duet = 0; int duet = 0;
if (player.Duet)
duet = 1;
int shortSong = 0; int shortSong = 0;
if (player.ShortSong) switch (gameMode)
shortSong = 1;
int dataBaseSongID = _GetDataBaseSongID(player, command);
if (dataBaseSongID >= 0)
{ {
command.CommandText = "SELECT PlayerName, Score, Date, Difficulty, LineNr, id FROM Scores " + case EGameMode.TR_GAMEMODE_MEDLEY:
"WHERE [SongID] = @SongID AND [Medley] = @Medley AND [Duet] = @Duet AND [ShortSong] = @ShortSong " + medley = 1;
"ORDER BY [Score] DESC"; break;
command.Parameters.Add("@SongID", DbType.Int32, 0).Value = dataBaseSongID; case EGameMode.TR_GAMEMODE_DUET:
command.Parameters.Add("@Medley", DbType.Int32, 0).Value = medley; duet = 1;
command.Parameters.Add("@Duet", DbType.Int32, 0).Value = duet; break;
command.Parameters.Add("@ShortSong", DbType.Int32, 0).Value = shortSong; case EGameMode.TR_GAMEMODE_SHORTSONG:
shortSong = 1;
break;
}
SQLiteDataReader reader = command.ExecuteReader(); int dataBaseSongID = _GetDataBaseSongID(songID, command);
if (reader != null && reader.HasRows) if (dataBaseSongID < 0)
return;
command.CommandText = "SELECT PlayerName, Score, Date, Difficulty, LineNr, id FROM Scores " +
"WHERE [SongID] = @SongID AND [Medley] = @Medley AND [Duet] = @Duet AND [ShortSong] = @ShortSong " +
"ORDER BY [Score] DESC";
command.Parameters.Add("@SongID", DbType.Int32, 0).Value = dataBaseSongID;
command.Parameters.Add("@Medley", DbType.Int32, 0).Value = medley;
command.Parameters.Add("@Duet", DbType.Int32, 0).Value = duet;
command.Parameters.Add("@ShortSong", DbType.Int32, 0).Value = shortSong;
SQLiteDataReader reader = command.ExecuteReader();
if (reader != null && reader.HasRows)
{
while (reader.Read())
{ {
while (reader.Read()) var score = new SDBScoreEntry
{ {
var score = new SDBScoreEntry Name = reader.GetString(0),
{ Score = reader.GetInt32(1),
Name = reader.GetString(0), Date = new DateTime(reader.GetInt64(2)).ToString("dd/MM/yyyy"),
Score = reader.GetInt32(1), Difficulty = (EGameDifficulty)reader.GetInt32(3),
Date = new DateTime(reader.GetInt64(2)).ToString("dd/MM/yyyy"), VoiceNr = reader.GetInt32(4),
Difficulty = (EGameDifficulty)reader.GetInt32(3), ID = reader.GetInt32(5)
VoiceNr = reader.GetInt32(4), };
ID = reader.GetInt32(5)
};
scores.Add(score); scores.Add(score);
}
reader.Dispose();
} }
reader.Dispose();
} }
} }
} }
@@ -316,9 +324,9 @@ namespace Vocaluxe.Base
command.ExecuteNonQuery(); command.ExecuteNonQuery();
} }
private static int _GetDataBaseSongID(SPlayer player, SQLiteCommand command) private static int _GetDataBaseSongID(int songID, SQLiteCommand command)
{ {
CSong song = CSongs.GetSong(player.SongID); CSong song = CSongs.GetSong(songID);
if (song == null) if (song == null)
return -1; return -1;
@@ -430,21 +438,35 @@ namespace Vocaluxe.Base
{ {
if (File.Exists(_HighscoreFilePath)) if (File.Exists(_HighscoreFilePath))
{ {
_CreateOrConvert(oldDBFilePath); if (!_CreateOrConvert(oldDBFilePath))
_CreateOrConvert(_HighscoreFilePath); {
_ImportData(oldDBFilePath); CLog.LogError("Cannot init Highscore DB: Error opening database: " + oldDBFilePath, true, true);
return;
File.Delete(oldDBFilePath); }
if (!_CreateOrConvert(_HighscoreFilePath))
{
CLog.LogError("Cannot init Highscore DB: Error opening database: " + _HighscoreFilePath, true, true);
return;
}
if (!_ImportData(oldDBFilePath))
{
CLog.LogError("Cannot init Highscore DB: Error importing data", true, true);
return;
}
} }
else else
{ {
File.Copy(oldDBFilePath, _HighscoreFilePath); File.Copy(oldDBFilePath, _HighscoreFilePath);
_CreateOrConvert(_HighscoreFilePath); if (!_CreateOrConvert(_HighscoreFilePath))
File.Delete(oldDBFilePath); {
CLog.LogError("Cannot init Highscore DB: Error opening database: " + _HighscoreFilePath, true, true);
return;
}
} }
File.Delete(oldDBFilePath);
} }
else else if (!_CreateOrConvert(_HighscoreFilePath))
_CreateOrConvert(_HighscoreFilePath); CLog.LogError("Cannot init Highscore DB: Error opening database: " + _HighscoreFilePath, true, true);
} }
private static void _CreateHighscoreDB(string filePath) private static void _CreateHighscoreDB(string filePath)
@@ -525,6 +547,7 @@ namespace Vocaluxe.Base
/// <returns></returns> /// <returns></returns>
private static bool _CreateOrConvert(string filePath) private static bool _CreateOrConvert(string filePath)
{ {
bool result = true;
using (var connection = new SQLiteConnection()) using (var connection = new SQLiteConnection())
{ {
connection.ConnectionString = "Data Source=" + filePath; connection.ConnectionString = "Data Source=" + filePath;
@@ -565,46 +588,24 @@ namespace Vocaluxe.Base
} }
catch (Exception) {} catch (Exception) {}
if (reader == null) if (reader == null || reader.FieldCount == 0)
{ {
// create new database/tables // create new database/tables
if (version == 1) if (version == 1)
{ {
//Check for USDX 1.1 DB //Check for USDX 1.1 DB
_CreateHighscoreDBV1(filePath); _CreateHighscoreDBV1(filePath);
_ConvertFrom110(filePath); result &= !_ConvertFrom110(filePath);
_UpdateDatabase(1, connection); result &= _UpdateDatabase(1, connection);
_UpdateDatabase(2, connection); result &= _UpdateDatabase(2, connection);
} }
else if (version == 0 && scoresTableExists) else if (version == 0 && scoresTableExists)
{ {
//Check for USDX 1.01 or CMD Mod DB //Check for USDX 1.01 or CMD Mod DB
_CreateHighscoreDBV1(filePath); _CreateHighscoreDBV1(filePath);
_ConvertFrom101(filePath); result &= _ConvertFrom101(filePath);
_UpdateDatabase(1, connection); result &= _UpdateDatabase(1, connection);
_UpdateDatabase(2, connection); result &= _UpdateDatabase(2, connection);
}
else
_CreateHighscoreDB(filePath);
}
else if (reader.FieldCount == 0)
{
// create new database/tables
if (version == 1)
{
//Check for USDX 1.1 DB
_CreateHighscoreDBV1(filePath);
_ConvertFrom110(filePath);
_UpdateDatabase(1, connection);
_UpdateDatabase(2, connection);
}
else if (version == 0 && scoresTableExists)
{
//Check for USDX 1.01 or CMD Mod DB
_CreateHighscoreDBV1(filePath);
_ConvertFrom101(filePath);
_UpdateDatabase(1, connection);
_UpdateDatabase(2, connection);
} }
else else
_CreateHighscoreDB(filePath); _CreateHighscoreDB(filePath);
@@ -616,7 +617,7 @@ namespace Vocaluxe.Base
if (currentVersion < CSettings.DatabaseHighscoreVersion) if (currentVersion < CSettings.DatabaseHighscoreVersion)
{ {
// update database // update database
_UpdateDatabase(currentVersion, connection); result &= _UpdateDatabase(currentVersion, connection);
} }
} }
@@ -625,7 +626,7 @@ namespace Vocaluxe.Base
} }
} }
return true; return result;
} }
/// <summary> /// <summary>
@@ -972,8 +973,7 @@ namespace Vocaluxe.Base
lastDateAdded = dateAdded; lastDateAdded = dateAdded;
} }
} }
if (reader != null) reader.Dispose();
reader.Dispose();
foreach (int id in ids) foreach (int id in ids)
_IncreaseSongCounter(id, command); _IncreaseSongCounter(id, command);
+2 -4
View File
@@ -197,9 +197,7 @@ namespace Vocaluxe.Base
Players[i].CurrentLine = -1; Players[i].CurrentLine = -1;
Players[i].CurrentNote = -1; Players[i].CurrentNote = -1;
Players[i].SongID = -1; Players[i].SongID = -1;
Players[i].Medley = false; Players[i].GameMode = EGameMode.TR_GAMEMODE_NORMAL;
Players[i].Duet = false;
Players[i].ShortSong = false;
Players[i].DateTicks = DateTime.Now.Ticks; Players[i].DateTicks = DateTime.Now.Ticks;
Players[i].SongFinished = false; Players[i].SongFinished = false;
} }
@@ -384,7 +382,7 @@ namespace Vocaluxe.Base
{ {
if (note.StartBeat < nextStart) if (note.StartBeat < nextStart)
{ {
if (note.Hit && note.HitNote.NoteType==ENoteType.Golden) if (note.Hit && note.HitNote.NoteType == ENoteType.Golden)
Players[p].PointsGoldenNotes += note.Points; Players[p].PointsGoldenNotes += note.Points;
Players[p].Points += note.Points; Players[p].Points += note.Points;
} }
+17 -13
View File
@@ -183,24 +183,28 @@ namespace Vocaluxe.Screens
public override void LoadTheme(string xmlPath) public override void LoadTheme(string xmlPath)
{ {
bool ressourceOK = true;
//Vocaluxe-Logo //Vocaluxe-Logo
CDataBase.GetCreditsRessource("Logo_voc.png", ref _TexLogo); ressourceOK &= CDataBase.GetCreditsRessource("Logo_voc.png", ref _TexLogo);
//Little stars for logo //Little stars for logo
CDataBase.GetCreditsRessource("PerfectNoteStar.png", ref _TexPerfectNoteStar); ressourceOK &= CDataBase.GetCreditsRessource("PerfectNoteStar.png", ref _TexPerfectNoteStar);
CDataBase.GetCreditsRessource("redDot.png", ref _TexRedDot); ressourceOK &= CDataBase.GetCreditsRessource("redDot.png", ref _TexRedDot);
CDataBase.GetCreditsRessource("blueDot.png", ref _TexBlueDot); ressourceOK &= CDataBase.GetCreditsRessource("blueDot.png", ref _TexBlueDot);
CDataBase.GetCreditsRessource("brunzel.png", ref _TexNameBrunzel); ressourceOK &= CDataBase.GetCreditsRessource("brunzel.png", ref _TexNameBrunzel);
CDataBase.GetCreditsRessource("Darkice.png", ref _TexNameDarkice); ressourceOK &= CDataBase.GetCreditsRessource("Darkice.png", ref _TexNameDarkice);
CDataBase.GetCreditsRessource("flokuep.png", ref _TexNameFlokuep); ressourceOK &= CDataBase.GetCreditsRessource("flokuep.png", ref _TexNameFlokuep);
CDataBase.GetCreditsRessource("flamefire.png", ref _TexNameFlamefire); ressourceOK &= CDataBase.GetCreditsRessource("flamefire.png", ref _TexNameFlamefire);
CDataBase.GetCreditsRessource("bohning.png", ref _TexNameBohning); ressourceOK &= CDataBase.GetCreditsRessource("bohning.png", ref _TexNameBohning);
CDataBase.GetCreditsRessource("mesand.png", ref _TexNameMesand); ressourceOK &= CDataBase.GetCreditsRessource("mesand.png", ref _TexNameMesand);
CDataBase.GetCreditsRessource("babene03.png", ref _TexNameBabene03); ressourceOK &= CDataBase.GetCreditsRessource("babene03.png", ref _TexNameBabene03);
CDataBase.GetCreditsRessource("pantero.png", ref _TexNamePantero); ressourceOK &= CDataBase.GetCreditsRessource("pantero.png", ref _TexNamePantero);
CDataBase.GetCreditsRessource("Pinky007.png", ref _TexNamePinky007); ressourceOK &= CDataBase.GetCreditsRessource("Pinky007.png", ref _TexNamePinky007);
if (!ressourceOK)
CLog.LogError("Could not load all ressources!", true, true);
//Prepare Text //Prepare Text
int lastY = 280; int lastY = 280;
+1 -1
View File
@@ -239,7 +239,7 @@ namespace Vocaluxe.Screens
for (int round = 0; round < points.NumRounds; round++) for (int round = 0; round < points.NumRounds; round++)
{ {
SPlayer player = points.GetPlayer(round, CGame.NumPlayer)[0]; SPlayer player = points.GetPlayer(round, CGame.NumPlayer)[0];
CDataBase.LoadScore(out _Scores[round], player); CDataBase.LoadScore(out _Scores[round], player.SongID, player.GameMode);
} }
} }
+1 -3
View File
@@ -123,9 +123,7 @@ namespace Vocaluxe.SongQueue
_CurrentSong, _CurrentSong,
_SongQueue[_CurrentSong].SongID, _SongQueue[_CurrentSong].SongID,
players, players,
_SongQueue[_CurrentSong].GameMode == EGameMode.TR_GAMEMODE_MEDLEY, _SongQueue[_CurrentSong].GameMode);
_SongQueue[_CurrentSong].GameMode == EGameMode.TR_GAMEMODE_DUET,
_SongQueue[_CurrentSong].GameMode == EGameMode.TR_GAMEMODE_SHORTSONG);
} }
_CurrentSong++; _CurrentSong++;
} }
+4 -10
View File
@@ -35,15 +35,13 @@ namespace VocaluxeLib.Game
_Rounds[round, player].Points = 0f; _Rounds[round, player].Points = 0f;
_Rounds[round, player].PointsGoldenNotes = 0f; _Rounds[round, player].PointsGoldenNotes = 0f;
_Rounds[round, player].PointsLineBonus = 0f; _Rounds[round, player].PointsLineBonus = 0f;
_Rounds[round, player].Medley = false; _Rounds[round, player].GameMode = EGameMode.TR_GAMEMODE_NORMAL;
_Rounds[round, player].Duet = false;
_Rounds[round, player].ShortSong = false;
_Rounds[round, player].SongFinished = false; _Rounds[round, player].SongFinished = false;
} }
} }
} }
public void SetPoints(int round, int songID, SPlayer[] players, bool medley, bool duet, bool shortSong) public void SetPoints(int round, int songID, SPlayer[] players, EGameMode gameMode)
{ {
long dateTicks = DateTime.Now.Ticks; long dateTicks = DateTime.Now.Ticks;
for (int player = 0; player < players.Length; player++) for (int player = 0; player < players.Length; player++)
@@ -53,9 +51,7 @@ namespace VocaluxeLib.Game
_Rounds[round, player].Points = players[player].Points; _Rounds[round, player].Points = players[player].Points;
_Rounds[round, player].PointsGoldenNotes = players[player].PointsGoldenNotes; _Rounds[round, player].PointsGoldenNotes = players[player].PointsGoldenNotes;
_Rounds[round, player].PointsLineBonus = players[player].PointsLineBonus; _Rounds[round, player].PointsLineBonus = players[player].PointsLineBonus;
_Rounds[round, player].Medley = medley; _Rounds[round, player].GameMode = gameMode;
_Rounds[round, player].Duet = duet;
_Rounds[round, player].ShortSong = shortSong;
_Rounds[round, player].DateTicks = dateTicks; _Rounds[round, player].DateTicks = dateTicks;
_Rounds[round, player].SongFinished = players[player].SongFinished; _Rounds[round, player].SongFinished = players[player].SongFinished;
} }
@@ -87,9 +83,7 @@ namespace VocaluxeLib.Game
players[p].PointsLineBonus = _Rounds[round, p].PointsLineBonus; players[p].PointsLineBonus = _Rounds[round, p].PointsLineBonus;
players[p].SongID = _Rounds[round, p].SongID; players[p].SongID = _Rounds[round, p].SongID;
players[p].VoiceNr = _Rounds[round, p].VoiceNr; players[p].VoiceNr = _Rounds[round, p].VoiceNr;
players[p].Medley = _Rounds[round, p].Medley; players[p].GameMode = _Rounds[round, p].GameMode;
players[p].Duet = _Rounds[round, p].Duet;
players[p].ShortSong = _Rounds[round, p].ShortSong;
players[p].DateTicks = _Rounds[round, p].DateTicks; players[p].DateTicks = _Rounds[round, p].DateTicks;
players[p].SongFinished = _Rounds[round, p].SongFinished; players[p].SongFinished = _Rounds[round, p].SongFinished;
players[p].ProfileID = _Rounds[round, p].ProfileID; players[p].ProfileID = _Rounds[round, p].ProfileID;
+1 -3
View File
@@ -190,9 +190,7 @@ namespace VocaluxeLib
public int CurrentNote; public int CurrentNote;
public int SongID; public int SongID;
public bool Medley; public EGameMode GameMode;
public bool Duet;
public bool ShortSong;
public long DateTicks; public long DateTicks;
public bool SongFinished; public bool SongFinished;
} }