Beispiel #1
0
/*! 
 Updates the race results based on the results of the race just completed
 Should be called before last_race_completed is updated.
 \author  jfpatry
 \date    Created:  2000-09-24
 \date    Modified: 2000-09-24
 */
static void update_race_results( void )
{
    char *event;
    char *cup;
    bool_t update_score = False;
    char *race_name;
    scalar_t time;
    int herring;
    int score;
    
    if ( g_game.practicing ) {
        open_course_data_t *data;
        data = (open_course_data_t*)get_list_elem_data( cur_elem );
        race_name = data->name;
    } else {
        race_data_t *data;
        data = (race_data_t*)get_list_elem_data( cur_elem );
        race_name = data->name;
    }
    
    event = g_game.current_event;
    cup = g_game.current_cup;
    
    if ( !get_saved_race_results( plyr->name,
                                 event,
                                 cup,
                                 race_name,
                                 g_game.difficulty,
                                 &time,
                                 &herring,
                                 &score ) )
    {
        update_score = True;
    } else if ( !g_game.practicing && !cup_complete ) {
        /* Scores are always overwritten if cup isn't complete */
        update_score = True;
    } else if ( plyr->score > score ) {
        update_score = True;
    } else {
        update_score = False;
    }
    
    if ( update_score ) {
        bool_t result;
        result = 
	    set_saved_race_results( plyr->name,
                               event,
                               cup,
                               race_name,
                               g_game.difficulty,
                               g_game.time,
                               plyr->herring,
                               plyr->score ); 
        if ( !result ) {
            print_warning( IMPORTANT_WARNING,
                          "Couldn't save race results" );
        }
    }
}
Beispiel #2
0
char* editSynchronizeScoresRequest()
{
    
    list_t race_list = NULL;
    list_elem_t cur_elem = NULL;
    player_data_t *plyr = NULL;
    
    open_course_data_t *data;
    
    plyr = get_player_data( local_player() );
    
    g_game.current_event = "__Practice_Event__";
    g_game.current_cup = "__Practice_Cup__";
    g_game.difficulty = 1;
    
    race_list = get_open_courses_list();
    
    cur_elem = get_list_head( race_list );
    
    scalar_t time;
    int herring;
    int score;
    int minutes;
    int seconds;
    int hundredths;
    int i=0;
    char request[10000];
    char* tempRequest;
    strcpy(request,"");
    do
    {
        data = (open_course_data_t*) get_list_elem_data( cur_elem );
        if ( get_saved_race_results( plyr->name,
                                    g_game.current_event,
                                    g_game.current_cup,
                                    data->name,
                                    g_game.difficulty,
                                    &time,
                                    &herring,
                                    &score ) )
        {
            if (i>0) strcat(request,"&");
            get_time_components( time, &minutes, &seconds, &hundredths);
            asprintf(&tempRequest,"piste[%d]=%s&score[%d]=%d&herring[%d]=%d&time[%d]=%02d:%02d:%02d",i,data->name,i,score,i,herring,i,minutes,seconds,hundredths);
            strcat(request,tempRequest);
            free(tempRequest);
            i++;
        }
    }
    while (cur_elem = get_next_list_elem(race_list, cur_elem));
    return request;
}
Beispiel #3
0
/*! 
 Callback called when facebook button is clicked
 \author  Emmanuel de Roux
 \date    Created:  2009-09-12
 \date    Modified: 2000-09-12
 */
static void fb_click_cb( button_t *button, void *userdata )
{
	
	scalar_t time;
	open_course_data_t *data;
	data = (open_course_data_t*)get_list_elem_data( cur_elem );
	char* race_name = data->name;
	
	char* mode = g_game.is_speed_only_mode?(char*)Localize("Time Trial","src/race_select.c"):(char*)Localize("classic","src/race_select.c");
	
	char *event,*cup;
	event = g_game.current_event;
	cup = g_game.current_cup;
	
	player_data_t *plyr = get_player_data( local_player() );
	
	int herring, score;
	int minutes, seconds, hundredths;
	
	if (g_game.practicing) {
		if ( get_saved_race_results( plyr->name,
									 event,
									 cup,
									 race_name,
									 g_game.difficulty,
									 &time,
									 &herring,
									 &score ) )
		{
			get_time_components( time, &minutes, &seconds, &hundredths );
		}
		
		if (!g_game.rankings_loaded) {
			facebookPublishDialogDisplayed = false;
			displayRankingsAfterRace(g_game.race.name,plyr->score,plyr->herring,minutes,seconds,hundredths);	
		}
    }
	
	char* scoreTxt;
	
	if (g_game.is_speed_only_mode) asprintf(&scoreTxt, "%02d:%02d:%02d", minutes, seconds, hundredths);
	else asprintf(&scoreTxt, "%d pts", plyr->score );
	
    if (g_game.rankings_loaded==true) { 
		publishNewHighScore(scoreTxt,race_name,mode,g_game.worldRanking,g_game.countryRanking,g_game.totalRanking);
		facebookPublishDialogDisplayed=True;
	}
	
	free(scoreTxt);
}
Beispiel #4
0
/*! 
 Draws a status message on the screen
 \author  jfpatry
 \date    Created:  2000-09-24
 \date    Modified: 2000-09-24
 */
void draw_status_msg( int x_org, int y_org, int box_width, int box_height )
{
    char *msg;
    scalar_t time;
    int herring;
    int score;
    font_t *label_font;
    font_t *font;
    char buff[BUFF_LEN];
    bool_t draw_stats = True;
    
    if ( !g_game.practicing ) {
        if ( is_current_race_completed() ) {
            race_data_t *race_data;
            
            if ( cup_complete ) {
                msg = "Best result:";
            } else {
                msg = "Race won! Your result:";
            }
            
            race_data = (race_data_t*)get_list_elem_data( cur_elem );
            
            if ( !get_saved_race_results( plyr->name,
                                         g_game.current_event,
                                         g_game.current_cup,
                                         race_data->name,
                                         g_game.difficulty,
                                         &time,
                                         &herring,
                                         &score ) )
            {
                difficulty_level_t d = g_game.difficulty;
                
                print_warning( IMPORTANT_WARNING,
                              "No saved results for race `%s'.  Using "
                              "race minimum requirements.",
                              race_data->name );
                
                time = g_game.race.time_req[d];
                herring = g_game.race.herring_req[d];
                score = g_game.race.score_req[d];
            }
        } else if ( plyr->lives <= 0 ) {
            msg = "You don't have any lives left.";
            draw_stats = False;
        } else {
            difficulty_level_t d = g_game.difficulty;
            
            time = g_game.race.time_req[d];
            herring = g_game.race.herring_req[d];
            score = g_game.race.score_req[d];
            
            if ( is_current_race_first_incomplete() ) {
                msg = "Needed to advance:";
            } else {
                msg = "You can't enter this race yet.";
                draw_stats = False;
            }
        }
    } else {
        open_course_data_t *data;
        
        data = (open_course_data_t*)get_list_elem_data( cur_elem );
        
        msg = "Best result:";
        
        if ( !get_saved_race_results( plyr->name,
                                     g_game.current_event,
                                     g_game.current_cup,
                                     data->name,
                                     g_game.difficulty,
                                     &time,
                                     &herring,
                                     &score ) )
        {
            /* Don't display anything if no score saved */
            return;
        }
    }
    
#ifdef __APPLE__
#define yTranslation -10
#else
#define yTranslation 0
#endif
    
    if ( !get_font_binding( "race_requirements", &font ) ||
        !get_font_binding( "race_requirements_label", &label_font ) ) 
    {
        print_warning( IMPORTANT_WARNING,
                      "Couldn't get fonts for race requirements" );
    } else {
        glPushMatrix();
        {
            glTranslatef( x_org + 160 * mHeight / 320,
                         y_org + 60 * mHeight / 320+yTranslation * mHeight / 320,
                         0 );
            
            bind_font_texture( label_font );
            draw_string( label_font, msg );
        }
        glPopMatrix();
        
        if ( draw_stats ) {
            glPushMatrix();
            {
                int minutes;
                int seconds;
                int hundredths;
                
                get_time_components( time, &minutes, &seconds, &hundredths );
                
                glTranslatef( x_org + 160 * mHeight / 320,
                             y_org + 44 * mHeight / 320+yTranslation * mHeight / 320,
                             0 );
                
                
                bind_font_texture( label_font );
                draw_string( label_font, "Time: " );
                
                sprintf( buff, "%02d:%02d.%02d",
                        minutes, seconds, hundredths );
                bind_font_texture( font );
                draw_string( font, buff );
                
                bind_font_texture( label_font );
                draw_string( label_font, "    Fish: " );
                
                sprintf( buff, "%03d", herring ); 
                bind_font_texture( font );
                draw_string( font, buff );
            }
            glPopMatrix();
            glPushMatrix();
            {                
                glTranslatef( x_org + 160 * mHeight / 320,
                             y_org + 28 * mHeight / 320+yTranslation * mHeight / 320,
                             0 );
                
                bind_font_texture( label_font );
                draw_string( label_font, "Score: " );
                
                sprintf( buff, "%06d", score );
                bind_font_texture( font );
                draw_string( font, buff );
            }
            glPopMatrix();
        }
    }
}
Beispiel #5
0
/*! 
 Draws a status message on the screen
 \author  jfpatry
 \date    Created:  2000-09-24
 \date    Modified: 2000-09-24
 */
void draw_status_msg( int x_org, int y_org, int box_width, int box_height )
{
    const char *msg;
    scalar_t time;
    int herring;
    int score;
    font_t *label_font;
    font_t *font;
    char buff[BUFF_LEN];
    bool_t draw_stats = True;
    
    if ( g_game.practicing ) {
        open_course_data_t *data;
        
        data = (open_course_data_t*)get_list_elem_data( cur_elem );
        
        msg = Localize("Best result:","");
        
        if ( !get_saved_race_results( plyr->name,
                                     g_game.current_event,
                                     g_game.current_cup,
                                     data->name,
                                     g_game.difficulty,
                                     &time,
                                     &herring,
                                     &score ) )
        {
            /* Don't display anything if no score saved */
            return;
        }
        
        
#ifdef __APPLE__
#define yTranslation -10
#else
#define yTranslation 0
#endif
        
        if ( !get_font_binding( "race_requirements", &font ) ||
            !get_font_binding( "race_requirements_label", &label_font ) ) 
        {
            print_warning( IMPORTANT_WARNING,
                          "Couldn't get fonts for race requirements" );
        } else {
            glPushMatrix();
            {
                glTranslatef( x_org + 0,
                             y_org + 200+yTranslation,
                             0 );
                
                bind_font_texture( label_font );
                draw_string( label_font, msg );
            }
            glPopMatrix();
            
            if ( draw_stats ) {
                glPushMatrix();
                {
                    int minutes;
                    int seconds;
                    int hundredths;
                    
                    get_time_components( time, &minutes, &seconds, &hundredths );
                    
                    glTranslatef( x_org + 0,
                                 y_org + 184+yTranslation,
                                 0 );
                    
                    
                    bind_font_texture( label_font );
                    draw_string( label_font, Localize("Time: ","") );
                    
                    sprintf( buff, "%02d:%02d.%02d",
                            minutes, seconds, hundredths );
                    bind_font_texture( font );
                    draw_string( font, buff );
#ifdef __APPLE__
                    if (!g_game.is_speed_only_mode || !g_game.practicing) {
#endif
                        bind_font_texture( label_font );
                        draw_string( label_font, Localize("    Fish: ","") );
                        
                        sprintf( buff, "%03d", herring ); 
                        bind_font_texture( font );
                        draw_string( font, buff );
                        
                        bind_font_texture( label_font );
                        draw_string( label_font, Localize("     Score: ","") );
                        
                        sprintf( buff, "%06d", score );
                        bind_font_texture( font );
                        draw_string( font, buff );
#ifdef __APPLE__
                    }
#endif
                }
                glPopMatrix();
            }
        }
    }
}
Beispiel #6
0
/*! 
 Updates the race results based on the results of the race just completed
 Should be called before last_race_completed is updated.
 \author  jfpatry
 \date    Created:  2000-09-24
 \date    Modified: 2000-09-24
 */
static void update_race_results( void )
{
    char *event;
    char *cup;
    bool_t update_score = False;
    char *race_name;
    scalar_t time;
    int herring;
    int score;
	
    if ( g_game.practicing ) {
        open_course_data_t *data;
        data = (open_course_data_t*)get_list_elem_data( cur_elem );
        race_name = data->name;
    } else {
        race_data_t *data;
        data = (race_data_t*)get_list_elem_data( cur_elem );
        race_name = data->name;
    }
    
    event = g_game.current_event;
    cup = g_game.current_cup;
    
    if ( !get_saved_race_results( plyr->name,
                                 event,
                                 cup,
                                 race_name,
                                 g_game.difficulty,
                                 &time,
                                 &herring,
                                 &score ) )
    {
        update_score = True;
    } else if ( !g_game.practicing && !cup_complete ) {
        /* Scores are always overwritten if cup isn't complete */
        update_score = True;
    } else if ( (g_game.is_speed_only_mode && plyr->score < score) || (!g_game.is_speed_only_mode && plyr->score > score) ) {
        update_score = True;
    } else {
        update_score = False;
    }
    
    if ( update_score ) {
		//affiche le message facebook
		char score[BUFF_LEN];
		int minutes, seconds, hundredths;
		get_time_components( g_game.time, &minutes, &seconds, &hundredths );
		if (g_game.is_speed_only_mode) sprintf((char*)score, "%02d:%02d:%02d", minutes, seconds, hundredths );
		else sprintf((char*)score, "%d pts", plyr->score );
		
		char* mode = g_game.is_speed_only_mode?(char*)Localize("Time Trial","src/race_select.c"):(char*)Localize("classic","src/race_select.c");
		//message facebook publié
		//Si cette fonction est executée, elle bloque l'execution de la suivnte grace a une variable statique; voir dans TRFacebookController
		publishFirstScore(score,race_name,mode);
        bool_t result;
        result = 
	    set_saved_race_results( plyr->name,
                               event,
                               cup,
                               race_name,
                               g_game.difficulty,
                               g_game.time,
                               plyr->herring,
                               plyr->score ); 
        if ( !result ) {
            print_warning( IMPORTANT_WARNING,
                          "Couldn't save race results" );
        }
    }
}