FREObject getRange(FREContext ctx, void* functionData, uint32_t argc, FREObject argv[]) { FREObject returnObject; FREObject* argV=(FREObject*)malloc(sizeof(FREObject)*2); #if defined(BB10) SC_Range_t aRange = SC_ScoresController_GetRange(scores_controller); FRENewObjectFromInt32(SC_Score_GetMode(aRange.offset), &argV[0]); FRENewObjectFromInt32(SC_Score_GetLevel(aRange.length), &argV[1]); #else argV[0] = SC_ScoresController_GetRangeOffset(scores_controller); argV[1] = SC_ScoresController_GetRangeLength(scores_controller); #endif FRENewObject("com.wallwizz.scoreloop.Range",2,argV,&returnObject,NULL); return returnObject; }
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); }
FREObject getScores(FREContext ctx, void* functionData, uint32_t argc, FREObject argv[]) { SC_ScoreList_h score_list; SC_Score_h aScore; FREObject returnObject; int i,j; unsigned int contextArrayLength = 0; FREGetArrayLength(argv[0],&contextArrayLength); score_list = SC_ScoresController_GetScores(scores_controller); // arrayArgs has the Array arguments. #if defined(BB10) unsigned int scoreListSize = SC_ScoreList_GetCount(score_list); #else unsigned int scoreListSize = SC_ScoreList_GetScoresCount(score_list); #endif FREObject* arrayArgs = (FREObject*)malloc(sizeof(FREObject)*scoreListSize); for(i = 0 ; i < scoreListSize ; i++) { #if defined(BB10) aScore = SC_ScoreList_GetAt(score_list,i); #else aScore = SC_ScoreList_GetScore(score_list,i); #endif FREObject* argV=(FREObject*)malloc(sizeof(FREObject)*6); FRENewObjectFromInt32(SC_Score_GetMode(aScore), &argV[0]); FRENewObjectFromInt32(SC_Score_GetLevel(aScore), &argV[1]); FRENewObjectFromDouble(SC_Score_GetResult(aScore), &argV[2]); FRENewObjectFromDouble(SC_Score_GetMinorResult(aScore), &argV[3]); // Create the 5th argument(User) SC_User_h aUser = SC_Score_GetUser(aScore); SC_String_h scLogin = SC_User_GetLogin(aUser); SC_String_h scEmail = SC_User_GetEmail(aUser); const char * login = ""; const char * email = ""; if(scLogin != NULL) login= SC_String_GetData(scLogin); if(scEmail != NULL) email = SC_String_GetData(scEmail); FREObject* userArgV=(FREObject*)malloc(sizeof(FREObject)*2); FRENewObjectFromUTF8(strlen(login)+1,(const uint8_t*)login, &userArgV[0]); FRENewObjectFromUTF8(strlen(email)+1,(const uint8_t*)email, &userArgV[1]); fprintf(stderr, "username: %s\n", login); FRENewObject((const uint8_t*)"com.wallwizz.scoreloop.User",2,userArgV,&argV[4],NULL); // Create the 6th argument(Context) FREObject* contextArray = (FREObject*)malloc(sizeof(FREObject)*contextArrayLength); for(j = 0; j < contextArrayLength; j++) { FREObject context; FREObject freContextKey; const char * aKey = "test"; SC_String_h scValue = NULL; const char* aValue = NULL; unsigned int length; FREGetArrayElementAt(argv[0], j, &freContextKey); if(FREGetObjectAsUTF8(freContextKey,&length,(const uint8_t**)&aKey) != FRE_OK) fprintf(stderr, "FREGetArrayElementAt Error\n"); fprintf(stderr, "retrieved aKey: %s\n", aKey); SC_Context_h aContext = SC_Score_GetContext(aScore); SC_Context_Get(aContext, aKey, &scValue); if(scValue != NULL) { aValue= SC_String_GetData(scValue); }else{ fprintf(stderr, "scValue NULL\n"); aValue = "not found"; } fprintf(stderr, "retrieved aValue: %s\n", aValue); FREObject* contextArgv=(FREObject*)malloc(sizeof(FREObject)*2); FRENewObjectFromUTF8(strlen(aKey)+1,(const uint8_t*)aKey, &contextArgv[0]); FRENewObjectFromUTF8(strlen(aValue)+1,(const uint8_t*)aValue, &contextArgv[1]); FRENewObject((const uint8_t*)"com.wallwizz.scoreloop.Context",2,contextArgv,&contextArray[j],NULL); free(contextArgv); } FRENewObject((const uint8_t*)"Array",contextArrayLength,contextArray,&argV[5],NULL); FRENewObject((const uint8_t*)"com.wallwizz.scoreloop.Score",6,argV,&arrayArgs[i],NULL); free(contextArray); } FRENewObject((const uint8_t*)"Array",scoreListSize,arrayArgs,&returnObject,NULL); free(arrayArgs); return returnObject; }