mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-10 02:08:20 +00:00
Fix various bugs and make code cleaner.
Still have work to go.
This commit is contained in:
parent
0f307ac4be
commit
1c7ac93d4b
@ -64,7 +64,7 @@ bool Leaderboard::GetRankingQuery(std::string& lookupReturn) const {
|
|||||||
|
|
||||||
void Leaderboard::SetupLeaderboard() {
|
void Leaderboard::SetupLeaderboard() {
|
||||||
std::string queryBase =
|
std::string queryBase =
|
||||||
R"QUERY(
|
R"QUERY(
|
||||||
WITH leaderboardsRanked AS (
|
WITH leaderboardsRanked AS (
|
||||||
SELECT leaderboard.*, charinfo.name,
|
SELECT leaderboard.*, charinfo.name,
|
||||||
RANK() OVER
|
RANK() OVER
|
||||||
@ -278,8 +278,8 @@ std::string FormatInsert(const std::string& columns, const std::string& format,
|
|||||||
const char* updateClause = "UPDATE";
|
const char* updateClause = "UPDATE";
|
||||||
const char* queryType = useUpdate ? updateClause : insertClause;
|
const char* queryType = useUpdate ? updateClause : insertClause;
|
||||||
|
|
||||||
const char* insertFilter = ", character_id = ?, game_id = ?";
|
const char* insertFilter = ", character_id = ?, game_id = ?, timesPlayed = 1";
|
||||||
const char* updateFilter = "WHERE character_id = ? AND game_id = ?";
|
const char* updateFilter = ", timesPlayed = timesPlayed + 1 WHERE character_id = ? AND game_id = ?";
|
||||||
const char* usedFilter = useUpdate ? updateFilter : insertFilter;
|
const char* usedFilter = useUpdate ? updateFilter : insertFilter;
|
||||||
|
|
||||||
constexpr uint16_t STRING_LENGTH = 400;
|
constexpr uint16_t STRING_LENGTH = 400;
|
||||||
@ -293,12 +293,6 @@ std::string FormatInsert(const std::string& columns, const std::string& format,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LeaderboardManager::SaveScore(const LWOOBJID& playerID, GameID gameID, Leaderboard::Type leaderboardType, va_list args) {
|
void LeaderboardManager::SaveScore(const LWOOBJID& playerID, GameID gameID, Leaderboard::Type leaderboardType, va_list args) {
|
||||||
// Increment the numTimes this player has played this game.
|
|
||||||
std::unique_ptr<sql::PreparedStatement> incrementStatement(Database::CreatePreppedStmt("UPDATE leaderboard SET timesPlayed = timesPlayed + 1 WHERE character_id = ? AND game_id = ?;"));
|
|
||||||
incrementStatement->setInt(1, playerID);
|
|
||||||
incrementStatement->setInt(2, gameID);
|
|
||||||
incrementStatement->executeUpdate();
|
|
||||||
|
|
||||||
std::string insertStatement;
|
std::string insertStatement;
|
||||||
std::string selectedColumns;
|
std::string selectedColumns;
|
||||||
std::string insertFormat;
|
std::string insertFormat;
|
||||||
@ -342,10 +336,7 @@ void LeaderboardManager::SaveScore(const LWOOBJID& playerID, GameID gameID, Lead
|
|||||||
insertFormat = "score=%i";
|
insertFormat = "score=%i";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Leaderboard::Type::None: {
|
case Leaderboard::Type::None:
|
||||||
Game::logger->Log("LeaderboardManager", "Warning: Saving leaderboard of type None. Are you sure this is intended?");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: {
|
default: {
|
||||||
Game::logger->Log("LeaderboardManager", "Unknown leaderboard type %i. Cannot save score!", leaderboardType);
|
Game::logger->Log("LeaderboardManager", "Unknown leaderboard type %i. Cannot save score!", leaderboardType);
|
||||||
return;
|
return;
|
||||||
@ -485,12 +476,19 @@ void LeaderboardManager::SaveScore(const LWOOBJID& playerID, GameID gameID, Lead
|
|||||||
} else {
|
} else {
|
||||||
saveQuery = FormatInsert(selectedColumns, insertFormat, argsCopy, false);
|
saveQuery = FormatInsert(selectedColumns, insertFormat, argsCopy, false);
|
||||||
}
|
}
|
||||||
Game::logger->Log("LeaderboardManager", "%s", saveQuery.c_str());
|
|
||||||
if (!saveQuery.empty()) {
|
if (!saveQuery.empty()) {
|
||||||
|
Game::logger->Log("LeaderboardManager", "%s", saveQuery.c_str());
|
||||||
std::unique_ptr<sql::PreparedStatement> insertQuery(Database::CreatePreppedStmt(saveQuery));
|
std::unique_ptr<sql::PreparedStatement> insertQuery(Database::CreatePreppedStmt(saveQuery));
|
||||||
insertQuery->setInt(1, playerID);
|
insertQuery->setInt(1, playerID);
|
||||||
insertQuery->setInt(2, gameID);
|
insertQuery->setInt(2, gameID);
|
||||||
insertQuery->execute();
|
insertQuery->execute();
|
||||||
|
} else {
|
||||||
|
Game::logger->Log("LeaderboardManager", "No new score to save, incrementing numTimesPlayed");
|
||||||
|
// Increment the numTimes this player has played this game.
|
||||||
|
std::unique_ptr<sql::PreparedStatement> incrementStatement(Database::CreatePreppedStmt("UPDATE leaderboard SET timesPlayed = timesPlayed + 1 WHERE character_id = ? AND game_id = ?;"));
|
||||||
|
incrementStatement->setInt(1, playerID);
|
||||||
|
incrementStatement->setInt(2, gameID);
|
||||||
|
incrementStatement->executeUpdate();
|
||||||
}
|
}
|
||||||
va_end(argsCopy);
|
va_end(argsCopy);
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,6 @@ ALTER TABLE leaderboard
|
|||||||
MODIFY time FLOAT NOT NULL DEFAULT 0;
|
MODIFY time FLOAT NOT NULL DEFAULT 0;
|
||||||
|
|
||||||
ALTER TABLE leaderboard CHANGE time bestTime float;
|
ALTER TABLE leaderboard CHANGE time bestTime float;
|
||||||
ALTER TABLE leaderboard CHANGE last_played TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP();
|
ALTER TABLE leaderboard CHANGE last_played last_played TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP();
|
||||||
|
|
||||||
UPDATE leaderboard SET streak = bestTime where game_id = 1864;
|
UPDATE leaderboard SET streak = bestTime where game_id = 1864;
|
||||||
|
@ -75,19 +75,19 @@ TEST_F(LeaderboardTests, LeaderboardSpeedTest) {
|
|||||||
RunTests(1864, Leaderboard::Type::ShootingGallery , Leaderboard::InfoType::Top);
|
RunTests(1864, Leaderboard::Type::ShootingGallery , Leaderboard::InfoType::Top);
|
||||||
// RunTests(1864, Leaderboard::Type::ShootingGallery, Leaderboard::InfoType::MyStanding);
|
// RunTests(1864, Leaderboard::Type::ShootingGallery, Leaderboard::InfoType::MyStanding);
|
||||||
// RunTests(1864, Leaderboard::Type::ShootingGallery, Leaderboard::InfoType::Friends);
|
// RunTests(1864, Leaderboard::Type::ShootingGallery, Leaderboard::InfoType::Friends);
|
||||||
LeaderboardManager::Instance().SaveScore(14231, 1864, Leaderboard::Type::ShootingGallery, 3, 53001, 15.0f, 100);
|
LeaderboardManager::Instance().SaveScore(14231, 1864, Leaderboard::Type::ShootingGallery, 3, 53002, 15.0f, 100);
|
||||||
// RunTests(0, Leaderboard::Type::Racing);
|
// RunTests(0, Leaderboard::Type::Racing);
|
||||||
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::Racing, 3, 260.0f, 250.0f, true);
|
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::Racing, 3, 259.0f, 250.0f, true);
|
||||||
// RunTests(0, Leaderboard::Type::MonumentRace);
|
// RunTests(0, Leaderboard::Type::MonumentRace);
|
||||||
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::MonumentRace, 1, 150);
|
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::MonumentRace, 1, 149);
|
||||||
// RunTests(0, Leaderboard::Type::FootRace);
|
// RunTests(0, Leaderboard::Type::FootRace);
|
||||||
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::FootRace, 1, 150);
|
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::FootRace, 1, 151);
|
||||||
// RunTests(0, Leaderboard::Type::UnusedLeaderboard4);
|
// RunTests(0, Leaderboard::Type::UnusedLeaderboard4);
|
||||||
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::UnusedLeaderboard4, 1, 100);
|
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::UnusedLeaderboard4, 1, 101);
|
||||||
// RunTests(0, Leaderboard::Type::Survival);
|
// RunTests(0, Leaderboard::Type::Survival);
|
||||||
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::Survival, 2, 3000, 15);
|
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::Survival, 2, 3001, 15);
|
||||||
// RunTests(0, Leaderboard::Type::SurvivalNS);
|
// RunTests(0, Leaderboard::Type::SurvivalNS);
|
||||||
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::SurvivalNS, 2, 300, 15);
|
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::SurvivalNS, 2, 301, 15);
|
||||||
// RunTests(0, Leaderboard::Type::Donations);
|
// RunTests(0, Leaderboard::Type::Donations);
|
||||||
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::Donations, 1, 300000);
|
LeaderboardManager::Instance().SaveScore(14231, 0, Leaderboard::Type::Donations, 1, 300001);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user