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...";
}
Exemplo n.º 2
0
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);
}