r1
[fishladder.git] / fishladder.c
index b4c0997b0e6b6247854ef8e73b68828663d6aa65..c9f2eb61b5dec0b479fda5e232d4b96bbbe3f927 100644 (file)
@@ -1,7 +1,7 @@
 // Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved
 
 //#define VG_CAPTURE_MODE
-#define VG_STEAM
+//#define VG_STEAM
 #define VG_STEAM_APPID 1218140U
 #include "vg/vg.h"
 #include "fishladder_resources.h"
@@ -307,9 +307,6 @@ static int world_check_pos_ok( v2i co );
 static int cell_interactive( v2i co );
 
 void vg_update(void);
-void leaderboard_found( LeaderboardFindResult_t *pCallback );
-void leaderboard_downloaded( LeaderboardScoresDownloaded_t *pCallback );
-
 static void render_tiles( v2i start, v2i end, v4f const regular_colour, v4f const selected_colour );
 
 void vg_render(void);
@@ -317,11 +314,16 @@ void vg_ui(void);
 
 // Leaderboard stuff
 // -----------------
+#ifdef STEAM_LEADERBOARDS
 void leaderboard_set_score( struct cmp_level *cmp_level, u32 score );
 void leaderboard_dispatch_score(void);
 void leaderboard_found( LeaderboardFindResult_t *pCallback );
 void leaderboard_downloaded( LeaderboardScoresDownloaded_t *pCallback );
 void leaderboard_set_score( struct cmp_level *cmp_level, u32 score );
+#endif
+
+// Console commands
+// ----------------
 static int console_credits( int argc, char const *argv[] );
 static int console_save_map( int argc, char const *argv[] );
 static int console_load_map( int argc, char const *argv[] );
@@ -901,9 +903,9 @@ static int map_load( const char *str, const char *name )
                
                // Level selection area
                
-               for( int i = 0; i < vg_list_size( button_grids ); i ++ )
+               for( int i = 0; i < vg_list_size( career_packs ); i ++ )
                {
-                       struct button_grid *grid = &button_grids[ i ];
+                       struct career_level_pack *grid = &career_packs[ i ];
                        
                        for( int y = 0; y < grid->dims[1]; y ++ )
                        {
@@ -1125,9 +1127,9 @@ static void career_serialize(void)
        
        memset( encoded.reserved, 0, sizeof( encoded.reserved ) );
 
-       for( int i = 0; i < vg_list_size( career_serializable ); i ++ )
+       for( int i = 0; i < vg_list_size( career_packs ); i ++ )
        {
-               struct serializable_set *set = &career_serializable[i];
+               struct career_level_pack *set = &career_packs[i];
                
                for( int j = 0; j < set->count; j ++ )
                {
@@ -1159,23 +1161,26 @@ static void career_pass_level( struct cmp_level *lvl, int score, int upload )
        {
                if( score < lvl->completed_score || lvl->completed_score == 0 )
                {
+                       #ifdef VG_STEAM
                        if( !lvl->is_tutorial && upload )
                                leaderboard_set_score( lvl, score );
-                       
+                       #endif
+
                        lvl->completed_score = score;
                }
                
                if( lvl->unlock ) career_unlock_level( lvl->unlock );
                
+               #ifdef VG_STEAM
                if( lvl->achievement )
                {
                        sw_set_achievement( lvl->achievement );
                }
-               
+
                // Check ALL maps to trigger master engineer
-               for( int i = 0; i < vg_list_size( career_serializable ); i ++ )
+               for( int i = 0; i < vg_list_size( career_packs ); i ++ )
                {
-                       struct serializable_set *set = &career_serializable[i];
+                       struct career_level_pack *set = &career_packs[i];
                        
                        for( int j = 0; j < set->count; j ++ )
                        {
@@ -1185,6 +1190,7 @@ static void career_pass_level( struct cmp_level *lvl, int score, int upload )
                }
                
                sw_set_achievement( "MASTER_ENGINEER" );
+               #endif
        }
 }
 
@@ -1225,9 +1231,9 @@ static void career_load(void)
                vg_info( "No save file... Using blank one\n" );
        
        // Reset memory
-       for( int i = 0; i < vg_list_size( career_serializable ); i ++ )
+       for( int i = 0; i < vg_list_size( career_packs ); i ++ )
        {
-               struct serializable_set *set = &career_serializable[i];
+               struct career_level_pack *set = &career_packs[i];
                
                for( int j = 0; j < set->count; j ++ )
                        career_reset_level( &set->pack[j] );
@@ -1237,9 +1243,9 @@ static void career_load(void)
        // =================================
        
        // Decode everything from dstate
-       for( int i = 0; i < vg_list_size( career_serializable ); i ++ )
+       for( int i = 0; i < vg_list_size( career_packs ); i ++ )
        {
-               struct serializable_set *set = &career_serializable[i];
+               struct career_level_pack *set = &career_packs[i];
                
                for( int j = 0; j < set->count; j ++ )
                {
@@ -1762,8 +1768,10 @@ void vg_update(void)
                                                        if( cell_entry->config == k_cell_type_con_r || cell_entry->config == k_cell_type_con_u 
                                                                || cell_entry->config == k_cell_type_con_l || cell_entry->config == k_cell_type_con_d )
                                                        {
+                                                               #ifdef VG_STEAM
                                                                sw_set_achievement( "CAN_DO_THAT" );
-                                                       
+                                                               #endif
+
                                                                fish->state = k_fish_state_soon_alive;
                                                                
                                                                fish->dir[0] = 0;
@@ -1849,8 +1857,10 @@ void vg_update(void)
                                                        
                                                        if( collide_next_frame || collide_this_frame )
                                                        {
+                                                               #ifdef VG_STEAM
                                                                sw_set_achievement( "BANG" );
-                                                       
+                                                               #endif
+
                                                                // Shatter death (+0.5s)
                                                                float death_time = world.sim_internal_time + ( collide_this_frame? 0.0f: 0.5f );
                                                                
@@ -1988,9 +1998,11 @@ void vg_update(void)
                                }
                                else
                                {
+                                       #ifdef VG_STEAM
                                        if( world.sim_run > 0 )
                                                sw_set_achievement( "GOOD_ENOUGH" );
-                                       
+                                       #endif
+
                                        vg_error( "Level failed :(\n" );
                                }
                                
@@ -2101,9 +2113,6 @@ void vg_update(void)
        }
 }
 
-void leaderboard_found( LeaderboardFindResult_t *pCallback );
-void leaderboard_downloaded( LeaderboardScoresDownloaded_t *pCallback );
-
 static void render_tiles( v2i start, v2i end, v4f const regular_colour, v4f const selected_colour )
 {
        v2i full_start = { 0,0 };
@@ -2301,9 +2310,9 @@ static void level_selection_buttons(void)
        if( vg_get_button_down( "primary" ) )
                select_from = NULL;
        
-       for( int i = 0; i < vg_list_size( button_grids ); i ++ )
+       for( int i = 0; i < vg_list_size( career_packs ); i ++ )
        {
-               struct button_grid *grid = &button_grids[i];
+               struct career_level_pack *grid = &career_packs[i];
                
                int j = 0;
                
@@ -2313,7 +2322,7 @@ static void level_selection_buttons(void)
                        {
                                if( j < grid->count )
                                {
-                                       struct cmp_level *lvl = &grid->levels[ j ];
+                                       struct cmp_level *lvl = &grid->pack[ j ];
                                        
                                        // Determine colour
                                        if( lvl->unlocked )
@@ -2435,6 +2444,7 @@ void vg_render(void)
        glUniformMatrix3fv( SHADER_UNIFORM( shader_tile_main, "uPv" ), 1, GL_FALSE, (float *)vg_pv );
        glUniform1f( SHADER_UNIFORM( shader_tile_main, "uGhost" ), 0.0f );
        glUniform1f( SHADER_UNIFORM( shader_tile_main, "uForeground" ), 0.0f );
+       //glUniform1f( SHADER_UNIFORM( shader_tile_main, "uVisibility" ), sinf( vg_time ) + 1.0f );
        
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -2857,9 +2867,9 @@ void vg_render(void)
 
 void vg_ui(void) {}
 
+#if STEAM_LEADERBOARDS
 void leaderboard_dispatch_score(void)
 {
-#if STEAM_LEADERBOARDS
        sw_upload_leaderboard_score( 
                ui_data.upload_request.level->steam_leaderboard, 
                k_ELeaderboardUploadScoreMethodKeepBest,
@@ -2871,12 +2881,10 @@ void leaderboard_dispatch_score(void)
        ui_data.upload_request.is_waiting = 0;
        
        vg_success( "Dispatched leaderboard score\n" );
-#endif
 }
 
 void leaderboard_found( LeaderboardFindResult_t *pCallback )
 {
-#ifdef STEAM_LEADERBOARDS
        if( !pCallback->m_bLeaderboardFound )
        {
                vg_error( "Leaderboard could not be found\n" );
@@ -2906,12 +2914,10 @@ void leaderboard_found( LeaderboardFindResult_t *pCallback )
                        }
                }
        }
-#endif
 }
 
 void leaderboard_downloaded( LeaderboardScoresDownloaded_t *pCallback )
 {
-#ifdef STEAM_LEADERBOARDS
        // Update UI if this leaderboard matches what we currently have in view
        if( ui_data.level_selected->steam_leaderboard == pCallback->m_hSteamLeaderboard )
        {
@@ -2946,12 +2952,10 @@ void leaderboard_downloaded( LeaderboardScoresDownloaded_t *pCallback )
                        ui_data.leaderboard_show = 0;
        }
        else vg_warn( "Downloaded leaderboard does not match requested!\n" );
-#endif
 }
 
 void leaderboard_set_score( struct cmp_level *cmp_level, u32 score )
 {
-#ifdef STEAM_LEADERBOARDS
        if( ui_data.upload_request.is_waiting )
                vg_warn( "You are uploading leaderboard entries too quickly!\n" );
                
@@ -2964,8 +2968,8 @@ void leaderboard_set_score( struct cmp_level *cmp_level, u32 score )
                leaderboard_dispatch_score();
        else
                sw_find_leaderboard( cmp_level->map_name );
-#endif
 }
+#endif
 
 // CONSOLE COMMANDS
 // ===========================================================================================================
@@ -3247,9 +3251,9 @@ void vg_start(void)
                        size_level_texts = 6*9*7
                ;
                
-               for( int i = 0; i < vg_list_size( career_serializable ); i ++ )
+               for( int i = 0; i < vg_list_size( career_packs ); i ++ )
                {
-                       struct serializable_set *set = &career_serializable[i];
+                       struct career_level_pack *set = &career_packs[i];
                        for( int j = 0; j < set->count; j ++ )
                        {
                                struct cmp_level *lvl = &set->pack[j];
@@ -3358,7 +3362,10 @@ void vg_start(void)
 
 void vg_free(void)
 {
+#ifdef VG_STEAM
        sw_free_opengl();
+#endif
+
        console_save_map( 0, NULL );
        career_serialize();