return 0;
}
+void leaderboard_found( LeaderboardFindResult_t *pCallback );
void vg_start(void)
{
+ // Steamworks callbacks
+ sw_leaderboard_found = &leaderboard_found;
+
vg_function_push( (struct vg_cmd){
.name = "_map_write",
.function = console_save_map
.hover = 0xff655959,
.active = 0xff655959
};
+
+static struct
+{
+ SteamLeaderboard_t steam_leaderboard;
+ int leaderboard_matches;
+
+ struct cmp_level *level_selected;
+}
+ui_data;
+
void vg_ui(void)
{
// UI memory
}
};
- static struct cmp_level *level_selected = NULL;
-
// UI Code
ui_global_ctx.cursor[0] = 0;
ui_global_ctx.cursor[1] = 0;
if( i < unlocked )
{
if( gui_button( 2 + i ) == k_button_click )
- level_selected = &levels[i];
-
+ {
+ ui_data.level_selected = &levels[i];
+ ui_data.leaderboard_matches = 0;
+ sw_find_leaderboard( ui_data.level_selected->map_name );
+ }
+
ui_global_ctx.override_colour = 0xffffffff;
gui_text( lvl_info->title, 6, 0 );
ui_global_ctx.cursor[1] += 18;
// Selected level UI
// ============================================================
- if( level_selected )
+ if( ui_data.level_selected )
{
ui_global_ctx.cursor[0] += 16;
ui_global_ctx.cursor[1] += 16;
gui_fill_rect( ui_global_ctx.cursor, 0xff5a4e4d );
ui_global_ctx.cursor[1] += 4;
- gui_text( level_selected->title, 6, 0 );
+ gui_text( ui_data.level_selected->title, 6, 0 );
ui_global_ctx.cursor[1] += 30;
ui_rect_pad( ui_global_ctx.cursor, 8 );
ui_text_use_paragraph( &ui_global_ctx );
ui_global_ctx.cursor[1] += 2;
- gui_text( level_selected->description, 5, 0 );
+ gui_text( ui_data.level_selected->description, 5, 0 );
ui_text_use_title( &ui_global_ctx );
// Buttons at the bottom
if( gui_button( 3000 ) == k_button_click )
{
- level_selected = NULL;
+ ui_data.level_selected = NULL;
}
gui_text( "Back", 6, 0 );
gui_end();
{
gui_override_colours( &flcol_list_complete_a );
if( gui_button( 3002 ) == k_button_click )
- console_changelevel( 1, &level_selected->map_name );
+ {
+ console_changelevel( 1, &ui_data.level_selected->map_name );
+ ui_data.level_selected = NULL;
+ ui_data.leaderboard_matches = 0;
+ }
gui_text( "Play", 6, 0 );
gui_end();
}
}
gui_end_right();
- ui_global_ctx.cursor[0] += 16;
- ui_global_ctx.cursor[3] = 250;
-
- // If has results
- gui_new_node();
+ if( ui_data.leaderboard_matches )
{
- gui_fill_rect( ui_global_ctx.cursor, 0xff5a4e4d );
+ ui_global_ctx.cursor[0] += 16;
+ ui_global_ctx.cursor[3] = 250;
+
+ // If has results
+ gui_new_node();
+ {
+ gui_fill_rect( ui_global_ctx.cursor, 0xff5a4e4d );
+ }
+ gui_end();
}
- gui_end();
}
}
+
+void leaderboard_found( LeaderboardFindResult_t *pCallback )
+{
+ if( !pCallback->m_bLeaderboardFound )
+ vg_error( "Leaderboard could not be found\n" );
+
+ ui_data.steam_leaderboard = pCallback->m_hSteamLeaderboard;
+ ui_data.leaderboard_matches = 0;
+
+ if( ui_data.level_selected )
+ if( !strcmp( sw_get_leaderboard_name( ui_data.steam_leaderboard ), ui_data.level_selected->map_name ) )
+ ui_data.leaderboard_matches = 1;
+}