From 52e9b0883f3d1572d01922097f5e4afa67e844ff Mon Sep 17 00:00:00 2001 From: Bradley Bell Date: Tue, 6 Aug 2002 05:12:09 +0000 Subject: [PATCH] shareware stuff --- main/menu.c | 77 +++++++++++++++++++++++++------------------------- main/menu.h | 7 ++++- main/mission.c | 24 +++++++--------- main/newmenu.c | 72 ++++++++++++++++++++++++---------------------- main/piggy.c | 72 ++++++++++++++++++++++------------------------ main/piggy.h | 4 ++- 6 files changed, 129 insertions(+), 127 deletions(-) diff --git a/main/menu.c b/main/menu.c index 24f2d0b6..00900a21 100644 --- a/main/menu.c +++ b/main/menu.c @@ -99,32 +99,32 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. //char *menu_difficulty_text[] = { "Trainee", "Rookie", "Fighter", "Hotshot", "Insane" }; //char *menu_detail_text[] = { "Lowest", "Low", "Medium", "High", "Highest", "", "Custom..." }; -#define MENU_NEW_GAME 0 -#define MENU_GAME 1 -#define MENU_EDITOR 2 -#define MENU_VIEW_SCORES 3 -#define MENU_QUIT 4 -#define MENU_LOAD_GAME 5 -#define MENU_SAVE_GAME 6 -#define MENU_DEMO_PLAY 8 -#define MENU_LOAD_LEVEL 9 -#define MENU_START_IPX_NETGAME 10 -#define MENU_JOIN_IPX_NETGAME 11 -#define MENU_CONFIG 13 -#define MENU_REJOIN_NETGAME 14 -#define MENU_DIFFICULTY 15 -#define MENU_START_SERIAL 18 -#define MENU_HELP 19 -#define MENU_NEW_PLAYER 20 -#define MENU_MULTIPLAYER 21 -#define MENU_STOP_MODEM 22 -#define MENU_SHOW_CREDITS 23 -#define MENU_ORDER_INFO 24 -#define MENU_PLAY_SONG 25 -#define MENU_START_TCP_NETGAME 26 -#define MENU_JOIN_TCP_NETGAME 27 -#define MENU_START_APPLETALK_NETGAME 28 -#define MENU_JOIN_APPLETALK_NETGAME 30 +#define MENU_NEW_GAME 0 +#define MENU_GAME 1 +#define MENU_EDITOR 2 +#define MENU_VIEW_SCORES 3 +#define MENU_QUIT 4 +#define MENU_LOAD_GAME 5 +#define MENU_SAVE_GAME 6 +#define MENU_DEMO_PLAY 8 +#define MENU_LOAD_LEVEL 9 +#define MENU_START_IPX_NETGAME 10 +#define MENU_JOIN_IPX_NETGAME 11 +#define MENU_CONFIG 13 +#define MENU_REJOIN_NETGAME 14 +#define MENU_DIFFICULTY 15 +#define MENU_START_SERIAL 18 +#define MENU_HELP 19 +#define MENU_NEW_PLAYER 20 +#define MENU_MULTIPLAYER 21 +#define MENU_STOP_MODEM 22 +#define MENU_SHOW_CREDITS 23 +#define MENU_ORDER_INFO 24 +#define MENU_PLAY_SONG 25 +#define MENU_START_TCP_NETGAME 26 +#define MENU_JOIN_TCP_NETGAME 27 +#define MENU_START_APPLETALK_NETGAME 28 +#define MENU_JOIN_APPLETALK_NETGAME 30 //ADD_ITEM("Start netgame...", MENU_START_NETGAME, -1 ); //ADD_ITEM("Send net message...", MENU_SEND_NET_MESSAGE, -1 ); @@ -334,7 +334,8 @@ int DoMenu() do { keyd_time_when_last_pressed = timer_get_fixed_seconds(); // .. 20 seconds from now! - if (main_menu_choice < 0 ) main_menu_choice = 0; + if (main_menu_choice < 0 ) + main_menu_choice = 0; Menu_draw_copyright = 1; main_menu_choice = newmenu_do2( "", NULL, num_options, m, autodemo_menu_check, main_menu_choice, Menu_pcx_name); if ( main_menu_choice > -1 ) do_option(menu_choice[main_menu_choice]); @@ -343,7 +344,7 @@ int DoMenu() // if (main_menu_choice != -2) // do_auto_demo = 0; // No more auto demos - if ( Function_mode==FMODE_GAME ) + if ( Function_mode==FMODE_GAME ) gr_palette_fade_out( gr_palette, 32, 0 ); return main_menu_choice; @@ -882,7 +883,7 @@ void do_screen_res_menu() if (i >= 3) i++; -#if 0 //def SHAREWARE +#ifdef SHAREWARE if (i > 1) nm_messagebox(TXT_SORRY, 1, TXT_OK, "High resolution modes are\n" @@ -1017,7 +1018,7 @@ void do_screen_res_menu() } #endif -#if 0 //def SHAREWARE +#ifdef SHAREWARE if (i != 0) nm_messagebox(TXT_SORRY, 1, TXT_OK, "High resolution modes are\n" @@ -1050,7 +1051,7 @@ void do_new_game_menu() default_mission = 0; for (i=0;i",BUILTIN_MISSION); - special_count = count=1; + special_count = count=1; if( !FileFindFirst( search_name, &find ) ) { do { diff --git a/main/newmenu.c b/main/newmenu.c index 57f4e771..7e904dd2 100644 --- a/main/newmenu.c +++ b/main/newmenu.c @@ -83,26 +83,26 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define MAXDISPLAYABLEITEMS 15 -#define LHX(x) ((x)*(MenuHires?2:1)) -#define LHY(y) ((y)*(MenuHires?2.4:1)) - -#define TITLE_FONT HUGE_FONT -#define NORMAL_FONT MEDIUM1_FONT //normal, non-highlighted item -#define SELECTED_FONT MEDIUM2_FONT //highlighted item -#define SUBTITLE_FONT MEDIUM3_FONT - -#define NORMAL_CHECK_BOX "" -#define CHECKED_CHECK_BOX "‚" - -#define NORMAL_RADIO_BOX "" -#define CHECKED_RADIO_BOX "€" -#define CURSOR_STRING "_" -#define SLIDER_LEFT "ƒ" // 131 -#define SLIDER_RIGHT "„" // 132 -#define SLIDER_MIDDLE "…" // 133 -#define SLIDER_MARKER "†" // 134 -#define UP_ARROW_MARKER "‡" // 135 -#define DOWN_ARROW_MARKER "ˆ" // 136 +#define LHX(x) ((x)*(MenuHires?2:1)) +#define LHY(y) ((y)*(MenuHires?2.4:1)) + +#define TITLE_FONT HUGE_FONT +#define NORMAL_FONT MEDIUM1_FONT //normal, non-highlighted item +#define SELECTED_FONT MEDIUM2_FONT //highlighted item +#define SUBTITLE_FONT MEDIUM3_FONT + +#define NORMAL_CHECK_BOX "" +#define CHECKED_CHECK_BOX "‚" + +#define NORMAL_RADIO_BOX "" +#define CHECKED_RADIO_BOX "€" +#define CURSOR_STRING "_" +#define SLIDER_LEFT "ƒ" // 131 +#define SLIDER_RIGHT "„" // 132 +#define SLIDER_MIDDLE "…" // 133 +#define SLIDER_MARKER "†" // 134 +#define UP_ARROW_MARKER "‡" // 135 +#define DOWN_ARROW_MARKER "ˆ" // 136 int newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item * item, void (*subfunction)(int nitems,newmenu_item * items, int * last_key, int citem), int citem, char * filename, int width, int height, int TinyMode ); void show_extra_netgame_info(int choice); @@ -168,11 +168,15 @@ void nm_draw_background1(char * filename) //@@Assert(grd_curcanv->cv_bitmap.bm_w == 320); //@@Assert(grd_curcanv->cv_bitmap.bm_h == 200); -#ifdef SHAREWARE - bmp = gr_create_bitmap(320,200); //high res pcx not available -#else - bmp = gr_create_bitmap(grd_curcanv->cv_bitmap.bm_w,grd_curcanv->cv_bitmap.bm_h); -#endif + { + PCXHeader ph; + CFILE * fp; + + fp = cfopen(filename, "rb"); + PCXHeader_read(&ph, fp); + bmp = gr_create_bitmap(ph.Xmax - ph.Xmin + 1, ph.Ymax - ph.Ymin + 1); + cfclose(fp); + } pcx_error = pcx_read_bitmap(filename,bmp,bmp->bm_type,pal); Assert(pcx_error == PCX_ERROR_NONE); @@ -182,10 +186,10 @@ void nm_draw_background1(char * filename) { //remap stuff. this code is kindof a hack - //now, before we bring up the menu, we need to + //now, before we bring up the menu, we need to //do some stuff to make sure the palette is ok. First, we need to //get our current palette into the 2d's array, so the remapping will - //work. Second, we need to remap the fonts. Third, we need to fill + //work. Second, we need to remap the fonts. Third, we need to fill //in part of the fade tables so the darkening of the menu edges works gr_copy_palette(gr_palette, pal, sizeof(gr_palette)); @@ -658,7 +662,7 @@ int newmenu_do2( char * title, char * subtitle, int nitems, newmenu_item * item, int newmenu_do3( char * title, char * subtitle, int nitems, newmenu_item * item, void (*subfunction)(int nitems,newmenu_item * items, int * last_key, int citem), int citem, char * filename, int width, int height ) { return newmenu_do4( title, subtitle, nitems, item, subfunction, citem, filename, width, height,0 ); - } + } int newmenu_do_fixedfont( char * title, char * subtitle, int nitems, newmenu_item * item, void (*subfunction)(int nitems,newmenu_item * items, int * last_key, int citem), int citem, char * filename, int width, int height){ set_screen_mode(SCREEN_MENU);//hafta set the screen mode before calling or fonts might get changed/freed up if screen res changes @@ -914,13 +918,13 @@ RePaintNewmenu4: aw = average_width; h += string_height+1; // Find the height of all strings } - + // Big hack for allowing the netgame options menu to spill over MaxOnMenu=MAXDISPLAYABLEITEMS; - if (ExtGameStatus==GAMESTAT_NETGAME_OPTIONS || ExtGameStatus==GAMESTAT_MORE_NETGAME_OPTIONS) + if (ExtGameStatus==GAMESTAT_NETGAME_OPTIONS || ExtGameStatus==GAMESTAT_MORE_NETGAME_OPTIONS) MaxOnMenu++; - + if (!TinyMode && (h>((MaxOnMenu+1)*(string_height+1))+(LHY(8)))) { IsScrollBox=1; @@ -960,10 +964,10 @@ RePaintNewmenu4: if (RestoringMenu) { right_offset=0; twidth=0;} - + mprintf(( 0, "Right offset = %d\n", right_offset )); - + // Find min point of menu border // x = (grd_curscreen->sc_w-w)/2; // y = (grd_curscreen->sc_h-h)/2; @@ -979,7 +983,7 @@ RePaintNewmenu4: if ( x < 0 ) x = 0; if ( y < 0 ) y = 0; - + if ( filename != NULL ) { nm_draw_background1( filename ); gr_palette_load(gr_palette); diff --git a/main/piggy.c b/main/piggy.c index 74dcdff8..f46dc3eb 100644 --- a/main/piggy.c +++ b/main/piggy.c @@ -1,3 +1,4 @@ +/* $Id: piggy.c,v 1.15 2002-08-06 05:12:09 btb Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -7,7 +8,7 @@ IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS -AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. +AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ @@ -16,7 +17,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #endif #ifdef RCS -static char rcsid[] = "$Id: piggy.c,v 1.14 2002-08-02 04:57:19 btb Exp $"; +static char rcsid[] = "$Id: piggy.c,v 1.15 2002-08-06 05:12:09 btb Exp $"; #endif @@ -64,17 +65,12 @@ static char rcsid[] = "$Id: piggy.c,v 1.14 2002-08-02 04:57:19 btb Exp $"; #define DEFAULT_PIGFILE_REGISTERED "groupa.pig" #define DEFAULT_PIGFILE_SHAREWARE "d2demo.pig" +#define DEFAULT_HAMFILE_REGISTERED "descent2.ham" +#define DEFAULT_HAMFILE_SHAREWARE "d2demo.ham" - -#ifdef SHAREWARE - #define DEFAULT_HAMFILE "d2demo.ham" - #define DEFAULT_PIGFILE DEFAULT_PIGFILE_SHAREWARE - #define DEFAULT_SNDFILE DEFAULT_HAMFILE //"descent2.s11" -#else - #define DEFAULT_HAMFILE "descent2.ham" - #define DEFAULT_PIGFILE DEFAULT_PIGFILE_REGISTERED - #define DEFAULT_SNDFILE ((digi_sample_rate==SAMPLE_RATE_22K)?"descent2.s22":"descent2.s11") -#endif // end of ifdef SHAREWARE +#define DEFAULT_PIGFILE (cfexist(DEFAULT_PIGFILE_REGISTERED)?DEFAULT_PIGFILE_REGISTERED:DEFAULT_PIGFILE_SHAREWARE) +#define DEFAULT_HAMFILE (cfexist(DEFAULT_HAMFILE_REGISTERED)?DEFAULT_HAMFILE_REGISTERED:DEFAULT_HAMFILE_SHAREWARE) +#define DEFAULT_SNDFILE ((Piggy_hamfile_version < 3)?DEFAULT_HAMFILE_SHAREWARE:(digi_sample_rate==SAMPLE_RATE_22K)?"descent2.s22":"descent2.s11") ubyte *BitmapBits = NULL; ubyte *SoundBits = NULL; @@ -106,6 +102,8 @@ int Num_sound_files_new = 0; BitmapFile AllBitmaps[ MAX_BITMAP_FILES ]; static SoundFile AllSounds[ MAX_SOUND_FILES ]; +int Piggy_hamfile_version = 0; + int piggy_low_memory = 0; int Piggy_bitmap_cache_size = 0; @@ -525,24 +523,23 @@ void piggy_init_pigfile(char *filename) piggy_close_file(); //close old pig if still open - #ifdef SHAREWARE //rename pigfile for shareware - if (stricmp(filename,DEFAULT_PIGFILE_REGISTERED)==0) + //rename pigfile for shareware + if (stricmp(DEFAULT_PIGFILE, DEFAULT_PIGFILE_SHAREWARE) == 0 && stricmp(filename,DEFAULT_PIGFILE_REGISTERED) == 0) filename = DEFAULT_PIGFILE_SHAREWARE; - #endif #ifndef MACINTOSH Piggy_fp = cfopen( filename, "rb" ); #else sprintf(name, ":Data:%s", filename); Piggy_fp = cfopen( name, "rb" ); - + #ifdef SHAREWARE // if we are in the shareware version, we must have the pig by now. if (Piggy_fp == NULL) { Error("Cannot load required file <%s>",name); } #endif // end of if def shareware - + #endif if (!Piggy_fp) { @@ -625,14 +622,14 @@ void piggy_init_pigfile(char *filename) BitmapBits = d_malloc( Piggy_bitmap_cache_size ); if ( BitmapBits == NULL ) Error( "Not enough memory to load bitmaps\n" ); - Piggy_bitmap_cache_data = BitmapBits; + Piggy_bitmap_cache_data = BitmapBits; Piggy_bitmap_cache_next = 0; - + #if defined(MACINTOSH) && defined(SHAREWARE) // load_exit_models(); #endif - Pigfile_initialized=1; + Pigfile_initialized=1; } #define FILENAME_LEN 13 @@ -657,10 +654,9 @@ void piggy_new_pigfile(char *pigname) strlwr(pigname); - #ifdef SHAREWARE //rename pigfile for shareware - if (stricmp(pigname,DEFAULT_PIGFILE_REGISTERED)==0) + //rename pigfile for shareware + if (stricmp(DEFAULT_PIGFILE, DEFAULT_PIGFILE_SHAREWARE) == 0 && stricmp(pigname,DEFAULT_PIGFILE_REGISTERED) == 0) pigname = DEFAULT_PIGFILE_SHAREWARE; - #endif if (strnicmp(Current_pigfile,pigname,sizeof(Current_pigfile))==0) return; //already have correct pig @@ -920,11 +916,7 @@ ubyte bogus_bitmap_initialized=0; digi_sound bogus_sound; #define HAMFILE_ID MAKE_SIG('!','M','A','H') //HAM! -#ifdef SHAREWARE -#define HAMFILE_VERSION 2 -#else #define HAMFILE_VERSION 3 -#endif //version 1 -> 2: save marker_model_num //version 2 -> 3: removed sound files @@ -934,7 +926,7 @@ digi_sound bogus_sound; int read_hamfile() { CFILE * ham_fp = NULL; - int ham_id,ham_version; + int ham_id; int sound_offset = 0; #ifdef MACINTOSH char name[255]; @@ -954,21 +946,25 @@ int read_hamfile() //make sure ham is valid type file & is up-to-date ham_id = cfile_read_int(ham_fp); - ham_version = cfile_read_int(ham_fp); - if (ham_id != HAMFILE_ID || ham_version != HAMFILE_VERSION) { + Piggy_hamfile_version = cfile_read_int(ham_fp); + if (ham_id != HAMFILE_ID) + Error("Cannot open ham file %s\n", DEFAULT_HAMFILE); +#if 0 + if (ham_id != HAMFILE_ID || Piggy_hamfile_version != HAMFILE_VERSION) { Must_write_hamfile = 1; cfclose(ham_fp); //out of date ham return 0; } +#endif - if (ham_version < 3) // hamfile contains sound info + if (Piggy_hamfile_version < 3) // hamfile contains sound info sound_offset = cfile_read_int(ham_fp); #ifndef EDITOR { //int i; - bm_read_all(ham_fp, ham_version); + bm_read_all(ham_fp); cfread( GameBitmapXlat, sizeof(ushort)*MAX_BITMAP_FILES, 1, ham_fp ); // no swap here? //for (i = 0; i < MAX_BITMAP_FILES; i++) { @@ -978,7 +974,7 @@ int read_hamfile() } #endif - if (ham_version < 3) { + if (Piggy_hamfile_version < 3) { int N_sounds; int sound_start; int header_size; @@ -1162,12 +1158,10 @@ int piggy_init(void) piggy_init_pigfile(DEFAULT_PIGFILE); #endif -#ifndef SHAREWARE - ham_ok = read_hamfile(); - snd_ok = read_sndfile(); -#else snd_ok = ham_ok = read_hamfile(); -#endif + + if (Piggy_hamfile_version >= 3) + snd_ok = read_sndfile(); atexit(piggy_close); @@ -1217,7 +1211,7 @@ void piggy_read_sounds(void) if ( SoundOffset[i] > 0 ) { if ( piggy_is_needed(i) ) { cfseek( fp, SoundOffset[i], SEEK_SET ); - + // Read in the sound data!!! snd->data = ptr; ptr += snd->length; diff --git a/main/piggy.h b/main/piggy.h index ce5f8e50..cee65217 100644 --- a/main/piggy.h +++ b/main/piggy.h @@ -1,4 +1,4 @@ -/* $Id: piggy.h,v 1.8 2002-08-02 11:05:26 btb Exp $ */ +/* $Id: piggy.h,v 1.9 2002-08-06 05:12:09 btb Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -30,6 +30,8 @@ typedef struct alias { extern alias alias_list[MAX_ALIASES]; extern int Num_aliases; +extern int Piggy_hamfile_version; + typedef struct bitmap_index { ushort index; } __pack__ bitmap_index; -- 2.39.2