void ScoreLoopThread::SubmitScore(AppData_t *app, double result, unsigned int mode) { qDebug() << "Submitting score " << result; /* Create a ScoreController */ SC_Error_t rc = SC_Client_CreateScoreController(app->client, &app->scoreController, SubmitScoreCompletionCallback, app); if (rc != SC_OK) { HandleError(app, rc); return; } /* Create and configure the score */ rc = SC_Client_CreateScore(app->client, &app->score); if (rc != SC_OK) { SC_ScoreController_Release(app->scoreController); /* Cleanup Controller */ HandleError(app, rc); return; } SC_Score_SetLevel(app->score, result); SC_Score_SetResult(app->score, result * 100); SC_Score_SetMode(app->score, mode); /* Submit the score */ rc = SC_ScoreController_SubmitScore(app->scoreController, app->score); if (rc != SC_OK) { SC_ScoreController_Release(app->scoreController); /* Cleanup Controller */ SC_Score_Release(app->score); /* Cleanup Score */ HandleError(app, rc); return; } qDebug() << "Submitting Score..."; }
CScores::~CScores() { UnLoad(); if (m_scoresController) SC_ScoresController_Release(m_scoresController); if (m_scoreController) SC_ScoreController_Release(m_scoreController); if (m_rankingController) SC_RankingController_Release(m_rankingController); if (m_userController) SC_UserController_Release(m_userController); }
void ScoreLoopThread::SubmitScoreCompletionCallback(void *userData, SC_Error_t completionStatus) { /* Get the application from userData argument */ AppData_t *app = (AppData_t *) userData; SC_Error_t rc ; /* Check completion status */ if (completionStatus != SC_OK) { SC_ScoreController_Release(app->scoreController); /* Cleanup Controller */ SC_Score_Release(app->score); /* Cleanup Score */ HandleError(app, completionStatus); return; } qDebug() << "Done submitting Score"; /* Cleanup Controller */ SC_ScoreController_Release(app->scoreController); SC_Score_h lastScore; rc = SC_Client_CreateScore(app->client, &lastScore); if (rc != SC_OK) { HandleError(app, rc); return; } SC_Score_SetLevel(lastScore, SC_Score_GetLevel(app->score)); SC_Score_SetResult(lastScore, SC_Score_GetResult(app->score)); SC_Score_SetMode(lastScore, SC_Score_GetMode(app->score)); ScoreData_t scoreData; scoreData.score = lastScore; emit(instance()->SubmitScoreCompleted(&scoreData)); /* Cleanup Score */ SC_Score_Release(app->score); }