billr@saab.CNA.TEK.COM (Bill Randle) (12/19/90)
Submitted-by: Eric Van Gestel <ericvg%BLEKUL60.BITNET@cunyvm.cuny.edu> Posting-number: Volume 11, Issue 95 Archive-name: blockbuster/Patch1 Patch-To: blockbuster: Volume 11, Issue 18-20 Environment: SunView #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: README.PCH1 patches01 # Wrapped by billr@saab on Tue Dec 18 10:58:46 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'README.PCH1' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'README.PCH1'\" else echo shar: Extracting \"'README.PCH1'\" \(1094 characters\) sed "s/^X//" >'README.PCH1' <<'END_OF_FILE' XBlockbuster patch1 is largely cosmetic; it takes care of the following: X X1. Allows for 10 digit scores in stead of the current 7. X [Smm overflows on the maximum score for Leprechaun (wacko). Although, to X date, no one has actually done this, >7 digit scores have been reported.] X X2. Fixes get_playground such that it will accept sunview options if the X playground argument is missing, and puts it where it belongs (before main). X X3. Cleans up a number of comments rather badly maulded by the reformatter. X X4. Makes the code portable to ANSI C (thanks hugh@csri.toronto.edu). X X5. The first few stages are a bit faster X [the speed you would have got to after 5 stages]; X while retaining the full effect of Pause blocks (unchanged minimum speed). X Now this still isn't very fast, but reserve your judgment until you've been X round all stages once or twice and start building up a reasonable score. X XOf course, with get_playground added by billr, there is no longer any need Xfor the shell script blockbuster.SKEL; so you may delete it. X X-- Eric Van Gestel (ericvg@cs.kuleuven.ac.be) END_OF_FILE if test 1094 -ne `wc -c <'README.PCH1'`; then echo shar: \"'README.PCH1'\" unpacked with wrong size! fi # end of 'README.PCH1' fi if test -f 'patches01' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'patches01'\" else echo shar: Extracting \"'patches01'\" \(30506 characters\) sed "s/^X//" >'patches01' <<'END_OF_FILE' X*** RATIONAL.orig Thu Aug 23 14:56:10 1990 X--- RATIONAL Thu Aug 23 14:56:33 1990 X*************** X*** 7,9 **** X They can be modified easily, but as this makes it harder to compare scores, X! you should provide a separate play ground. X X--- 7,9 ---- X They can be modified easily, but as this makes it harder to compare scores, X! you should provide a separate playground. X X*************** X*** 11,14 **** X - blockbuster X! Executable for whatever host your on. X! (must be executed from within a play ground directory) X - sun3.50 & sun4 X--- 11,13 ---- X - blockbuster X! Executable for whatever host you're on. X - sun3.50 & sun4 X*************** X*** 16,18 **** X (no crosscompilation though, you must be on a sun3.50 or sun4 X! respectively) X - stagemm X--- 15,17 ---- X (no crosscompilation though, you must be on a sun3.50 or sun4 X! respectively) X - stagemm X*************** X*** 22,25 **** X (You may wish to adjust, rename and put these in your path.) X- - blockbuster.SKEL X- Main program (architecture, and directory independent) X - smm.SKEL X--- 21,22 ---- X*** README.orig Thu Aug 23 14:56:11 1990 X--- README Thu Aug 23 14:56:34 1990 X*************** X*** 20,22 **** X added by Bill Randle (billr@saab.CNA.TEK.COM) 9 August 1990. X! [The man page described the "play_ground" option, but it wasn't X implemented in the code until now.] X--- 20,22 ---- X added by Bill Randle (billr@saab.CNA.TEK.COM) 9 August 1990. X! [The man page described the "playground" option, but it wasn't X implemented in the code until now.] X*** balls_pallet.c.orig Thu Aug 23 14:56:12 1990 X--- balls_pallet.c Thu Aug 23 14:56:36 1990 X*************** X*** 28,33 **** X X! #define draw_ball( ball ) \ X! /* struct Ball *ball */ \ X! pw_rop( stage_win, (int)( (ball)->x ) - 8, (int)( (ball)->y ) - 8, 16, 16, \ X! PIX_XOR, &ball_pr, 0, 0 ) X X--- 28,33 ---- X X! #define draw_ball( ball ) \ X! /* struct Ball *ball */ \ X! pw_rop( stage_win, (int)( (ball)->x ) - 8, (int)( (ball)->y ) - 8, \ X! 16, 16, PIX_XOR, &ball_pr, 0, 0 ) X X*************** X*** 56,75 **** X PIX_XOR, 1 ); X! pw_vector( stage_win, 0, mouse_yI - 1, /* <HC> */ X! 10, mouse_yI - 1, /* <HC> */ X! PIX_XOR, 1 );/* <HC> */ X! pw_vector( stage_win, 0, mouse_yI, X! 10, mouse_yI,/* <HC> */ X! PIX_XOR, 1 );/* <HC> */ X! pw_vector( stage_win, 0, mouse_yI + 1, /* <HC> */ X! 10, mouse_yI + 1, /* <HC> */ X! PIX_XOR, 1 );/* <HC> */ X! pw_vector( stage_win, STAGE_WIDTH_IN_PIXELS - 1, mouse_yI - 1, /* <HC> */ X! STAGE_WIDTH_IN_PIXELS - 11, mouse_yI - 1, /* <HC> */ X! PIX_XOR, 1 );/* <HC> */ X! pw_vector( stage_win, STAGE_WIDTH_IN_PIXELS - 1, mouse_yI, X! STAGE_WIDTH_IN_PIXELS - 11, mouse_yI, /* <HC> */ X! PIX_XOR, 1 );/* <HC> */ X! pw_vector( stage_win, STAGE_WIDTH_IN_PIXELS - 1, mouse_yI + 1, /* <HC> */ X! STAGE_WIDTH_IN_PIXELS - 11, mouse_yI + 1, /* <HC> */ X! PIX_XOR, 1 );/* <HC> */ X } X--- 56,75 ---- X PIX_XOR, 1 ); X! pw_vector( stage_win, 0, mouse_yI - 1, /*<HC>*/ X! 10, mouse_yI - 1, /*<HC>*/ X! PIX_XOR, 1 ); /*<HC>*/ X! pw_vector( stage_win, 0, mouse_yI, /*<HC>*/ X! 10, mouse_yI, /*<HC>*/ X! PIX_XOR, 1 ); /*<HC>*/ X! pw_vector( stage_win, 0, mouse_yI + 1, /*<HC>*/ X! 10, mouse_yI + 1, /*<HC>*/ X! PIX_XOR, 1 ); /*<HC>*/ X! pw_vector( stage_win, STAGE_WIDTH_IN_PIXELS - 1, mouse_yI - 1, /*<HC>*/ X! STAGE_WIDTH_IN_PIXELS - 11, mouse_yI - 1, /*<HC>*/ X! PIX_XOR, 1 ); /*<HC>*/ X! pw_vector( stage_win, STAGE_WIDTH_IN_PIXELS - 1, mouse_yI, /*<HC>*/ X! STAGE_WIDTH_IN_PIXELS - 11, mouse_yI, /*<HC>*/ X! PIX_XOR, 1 ); /*<HC>*/ X! pw_vector( stage_win, STAGE_WIDTH_IN_PIXELS - 1, mouse_yI + 1, /*<HC>*/ X! STAGE_WIDTH_IN_PIXELS - 11, mouse_yI + 1, /*<HC>*/ X! PIX_XOR, 1 ); /*<HC>*/ X } X*************** X*** 133,135 **** X ball->speed = launch_speed; X! ball->x_speed = launch_speed * ( ( ball->quadrant == NE ) ? M_SQRT2_2 X /* NW */ : -M_SQRT2_2 ); X--- 133,136 ---- X ball->speed = launch_speed; X! ball->x_speed = launch_speed * X! ( ( ball->quadrant == NE ) ? M_SQRT2_2 X /* NW */ : -M_SQRT2_2 ); X*************** X*** 195,200 **** X if ( !( ++loop_nhits % LOOP_MAX ) ) X! ball->x -= X! ball->x_speed * ( double ) ( loop_nhits / LOOP_MAX ) + 1; X /* horizontal shift, trying to get out of a bounce loop */ X! /* negative to try to avoid leaving the stage */ X break; X--- 196,200 ---- X if ( !( ++loop_nhits % LOOP_MAX ) ) X! ball->x -= ball->x_speed * ( double ) ( loop_nhits / LOOP_MAX ) + 1; X /* horizontal shift, trying to get out of a bounce loop */ X! /* negative to avoid leaving the stage at the side */ X break; X*************** X*** 265,268 **** X ball->y_speed *= pause; X } X- /* approximative; will be corrected on next pallet deflection */ X show_speeds( ); X--- 265,271 ---- X ball->y_speed *= pause; X+ /* X+ * approximative; will be corrected on next pallet X+ * deflection X+ */ X } X show_speeds( ); X*************** X*** 305,307 **** X if ( ++( brick->nhits ) == 8 ) { X! launch_speed -= ( launch_speed - INIT_SPEED ) * 0.3; X busted = TRUE; X--- 308,310 ---- X if ( ++( brick->nhits ) == 8 ) { X! launch_speed -= ( launch_speed - MIN_SPEED ) * 0.3; X busted = TRUE; X*************** X*** 320,327 **** X * note no check for NEAR_HORIZONTAL and none needed X! * since, X */ X- /* X- * if it gets too horizontal, it probably will hit it X- * again. X- */ X } X--- 323,327 ---- X * note no check for NEAR_HORIZONTAL and none needed X! * since, if it gets too horizontal, it probably will X! * hit it again. X */ X } X*************** X*** 332,336 **** X ball->x_speed += ( ball->x_speed < 0 ) ? -SPEED_INCR_2 X! : SPEED_INCR_2; X ball->y_speed += ( ball->y_speed < 0 ) ? -SPEED_INCR_2 X! : SPEED_INCR_2; X /* X--- 332,336 ---- X ball->x_speed += ( ball->x_speed < 0 ) ? -SPEED_INCR_2 X! : SPEED_INCR_2; X ball->y_speed += ( ball->y_speed < 0 ) ? -SPEED_INCR_2 X! : SPEED_INCR_2; X /* X*************** X*** 349,351 **** X break; X! case 'U': /* undo */ ; X /* effective only after something has been busted */ X--- 349,351 ---- X break; X! case 'U': /* undo */ ; X /* effective only after something has been busted */ X*************** X*** 360,366 **** X break; X! case 'W': /* open window */ ; X brick->code = '%'; X! /* redraw = TRUE */ draw_brick( ball->row, ball->col ); X return ( score_hit ); /* no deflection */ X! case '%': /* closed window */ ; X brick->code = 'W'; X--- 360,366 ---- X break; X! case 'W': /* open window */ ; X brick->code = '%'; X! /* redraw = TRUE; */ draw_brick( ball->row, ball->col ); X return ( score_hit ); /* no deflection */ X! case '%': /* closed window */ ; X brick->code = 'W'; X*************** X*** 576,578 **** X for ( tmp = 0; tmp < MSG_HEIGHT; tmp++ ) X! pw_vector( msg_win, 0, tmp, STAGE_WIDTH_IN_PIXELS - 1, tmp, X PIX_CLR, 1 ); X--- 576,579 ---- X for ( tmp = 0; tmp < MSG_HEIGHT; tmp++ ) X! pw_vector( msg_win, 0, tmp, X! STAGE_WIDTH_IN_PIXELS - 1, tmp, X PIX_CLR, 1 ); X*************** X*** 584,586 **** X /* lets go ! */ X! move_balls( ); /* starts the timer */ X break; X--- 585,587 ---- X /* lets go ! */ X! move_balls( ( Frame ) NULL, 0 ); /* starts the timer */ X break; X*************** X*** 596,598 **** X pallet_x = ( double ) ( pallet_xI = event_x( event ) ); X! mouse_yI = event_y( event ); /* <HC> */ X } X--- 597,599 ---- X pallet_x = ( double ) ( pallet_xI = event_x( event ) ); X! mouse_yI = event_y( event ); /*<HC>*/ X } X*** blockbuster.c.orig Thu Aug 23 14:56:13 1990 X--- blockbuster.c Thu Aug 23 14:56:39 1990 X*************** X*** 27,29 **** X X! DEFINE_ICON_FROM_IMAGE( blockbuster_icon, blockbuster_icon_image ); X X--- 27,29 ---- X X! DEFINE_ICON_FROM_IMAGE( blockbuster_icon, blockbuster_icon_image ) X X*************** X*** 30,32 **** X--- 30,65 ---- X X+ /*** [ANSI] define globals (declared external in blockbuster.h) ***/ X+ Frame frame; X+ Canvas stage_cvs, msg_cvs; X+ Pixwin *stage_win, *msg_win; X+ Pixfont *font; X+ char msg0_buf[55]; X+ struct Brick stage[MAX_ROW + 1][MAX_COL + 1]; X+ struct Ball ball1, ball2, ball3; X+ int launch_quadrant; /* enumeration { NE, NW } */ X+ int launch_row, launch_col; X+ double launch_x, launch_y; X+ int emit_row, emit_col; X+ int pallet_lengthI; /* range MIN_PALLET_LENGTH..MAX_PALLET_LENGTH */ X+ int pallet_heightI; /* range pallet_lengthI..MAX_PALLET_HEIGHT */ X+ int pallet_xI; /* range 0..STAGE_WIDTH_IN_PIXELS */ X+ int pallet_yI; /* range PALLET_MAX_Y+4..PALLET_MIN_Y-12 */ X+ int pallet_row; /* range MAX_ROW-1..MAX_ROW-9 */ X+ double pallet_length, pallet_height, pallet_x, pallet_y; X+ int mouse_yI; /* range 0..STAGE_HEIGHT_IN_PIXELS */ /*<HC>*/ X+ int nb_stages, stage_nb, balls_left, score, score_incr, nbricks, X+ loop_nhits, pallet_modif; X+ double launch_speed; X+ char stage_name[NAME_LENGTH]; X+ int stages[MAX_NB_STAGES]; X+ struct Brick *last_busted_brick; /* NULL == none so far */ X+ char last_busted_code; X+ int last_busted_row, last_busted_col; X+ struct itimerval timeout; X+ char *login; X+ char playground[PATH_LENGTH]; X+ X+ X /*** signal handling ***/ X+ void X catch( sig ) X*************** X*** 87,88 **** X--- 120,181 ---- X X+ /*** pathname of playground; anonymous, named or private ***/ X+ void X+ get_playground( argc, argv ) X+ int argc; X+ char *argv[]; X+ { X+ DIR *dirp; X+ struct direct *dp; X+ struct stat st; X+ int len, found = FALSE; X+ X+ /* set default playground directory */ X+ strcpy( playground, STAGEDIR ); X+ strcat( playground, "/STAGES" ); X+ /* check for additional arguments (specific playground) */ X+ if ( argc > 1 ) { X+ len = strlen( argv[1] ); X+ if ( argv[1][0] == '-' ) { X+ if ( len > 1 ) { X+ /* sunview_options only */ X+ return; X+ } X+ /* list available playgrounds */ X+ printf( "available playgrounds are:\n" ); X+ printf( "\tdefault\n" ); X+ dirp = opendir( STAGEDIR ); X+ for( dp = readdir( dirp ); dp != NULL; X+ dp = readdir( dirp ) ) { X+ if ( !strncmp( dp->d_name, "STAGES.", 7 ) ) X+ printf( "\t%s\n", ( dp->d_name ) + 7 ); X+ } X+ closedir( dirp ); X+ exit( 0 ); X+ } X+ /* it's a playground name or private directory */ X+ if( !strcmp( argv[1], "default" ) ) { X+ /* just in case someone used default */ X+ return; X+ } X+ dirp = opendir( STAGEDIR ); X+ for( dp = readdir( dirp ); dp != NULL; dp = readdir( dirp ) ) { X+ if ( dp->d_namlen == len + 7 && X+ !strcmp( ( dp->d_name ) + 7, argv[1] ) ) { X+ strcat( playground, ( dp->d_name ) + 6 ); X+ return; X+ } X+ } X+ closedir( dirp ); X+ /* it's a private directory */ X+ strcpy( playground, argv[1] ); X+ stat( playground, &st ); X+ if( !(st.st_mode & S_IFDIR) ) { X+ printf( "private playground <%s> not a directory.\n", X+ playground ); X+ exit( 1 ); X+ } X+ } X+ } X+ X+ X /*** blockbuster ***/ X*************** X*** 94,97 **** X Cursor cursor; X- FILE *fd; X- int crosshairs = FALSE; X X--- 187,188 ---- X*************** X*** 138,145 **** X CURSOR_SHOW_CURSOR, FALSE, X! /* X! * CURSOR_SHOW_HORIZ_HAIR, TRUE, CURSOR_HORIZ_HAIR_LENGTH, 12, X! * CURSOR_HORIZ_HAIR_THICKNESS, 3, CURSOR_HORIZ_HAIR_BORDER_GRAVITY, X! * TRUE, ** for some reason this won't work *** ** WORKAROUND: q.v. X! * balls_pallet.c ** X! *//* <HC> */ X 0 ); X--- 229,236 ---- X CURSOR_SHOW_CURSOR, FALSE, X! /**CURSOR_SHOW_HORIZ_HAIR, TRUE, X! **CURSOR_HORIZ_HAIR_LENGTH, 12, X! **CURSOR_HORIZ_HAIR_THICKNESS, 3, X! **CURSOR_HORIZ_HAIR_BORDER_GRAVITY, TRUE, X! *** for some reason this won't work *** X! *** WORKAROUND <HC>: q.v. balls_pallet.c ***/ X 0 ); X*************** X*** 165,226 **** X exit( 0 ); X- } X- X- get_playground( argc, argv ) X- int argc; X- char *argv[]; X- { X- DIR *dirp; X- struct direct *dp; X- struct stat st; X- int len, found; X- X- /* set default playground directory */ X- strcpy( playground, STAGEDIR ); X- strcat( playground, "/" ); X- /* check for additional arguments (specific playground) */ X- if ( argc > 1 ) { X- if ( argv[1][0] == '-' ) { X- /* list available playgrounds */ X- printf( "available playgrounds are:\n" ); X- printf( "\tdefault\n" ); X- dirp = opendir(STAGEDIR); X- for( dp=readdir( dirp ); dp!=NULL; dp=readdir( dirp ) ) { X- if ( !strncmp( dp->d_name, "STAGES.", 7 ) ) X- printf( "\t%s\n", (dp->d_name)+7 ); X- } X- closedir( dirp ); X- exit( 0 ); X- } X- /* it's a playground name or private directory */ X- if( !strcmp( argv[1], "default" ) ) { X- /* just in case someone used default */ X- strcat( playground, "STAGES" ); X- return; X- } X- found = 0; X- len = strlen( argv[1] ); X- dirp = opendir( STAGEDIR ); X- for( dp=readdir( dirp ); dp!=NULL; dp=readdir( dirp ) ) { X- if ( dp->d_namlen == len+7 && X- !strcmp( (dp->d_name)+7, argv[1] ) ) { X- found++; X- break; X- } X- } X- closedir( dirp ); X- if ( found ) X- strcat( playground, dp->d_name ); X- else { X- /* private dir */ X- strcpy( playground, argv[1] ); X- stat( playground, &st ); X- if( !(st.st_mode & S_IFDIR) ) { X- printf( "private playground <%s> not a directory.\n", X- playground ); X- exit( 1 ); X- } X- } X- } else { X- strcat( playground, "STAGES" ); X- } X } X--- 256,257 ---- X*** blockbuster.h.orig Thu Aug 23 14:56:15 1990 X--- blockbuster.h Thu Aug 23 15:22:25 1990 X*************** X*** 7,9 **** X * Compilation: X! * -lsuntool -lsunwindow -lpixrect X */ X--- 7,9 ---- X * Compilation: X! * -lsuntool -lsunwindow -lpixrect -lm X */ X*************** X*** 13,14 **** X--- 13,15 ---- X #include <stdio.h> X+ #include <string.h> X #include <pwd.h> X*************** X*** 21,23 **** X /* X! * #define M_PI 3.14159265358979323846 X * #define M_PI_2 1.57079632679489661923 X--- 22,24 ---- X /* X! * #define M_PI 3.14159265358979323846 X * #define M_PI_2 1.57079632679489661923 X*************** X*** 35,38 **** X X! #define MAX_ROW 42 X! #define MAX_COL 11 X X--- 36,39 ---- X X! #define MAX_ROW 42 X! #define MAX_COL 11 X X*************** X*** 51,56 **** X X! Frame frame; X! Canvas stage_cvs, msg_cvs; X! Pixwin *stage_win, *msg_win; X! Pixfont *font; X X--- 52,57 ---- X X! extern Frame frame; X! extern Canvas stage_cvs, msg_cvs; X! extern Pixwin *stage_win, *msg_win; X! extern Pixfont *font; X X*************** X*** 67,69 **** X X! char msg0_buf[55]; X X--- 68,70 ---- X X! extern char msg0_buf[55]; X X*************** X*** 105,109 **** X #define INIT_BALLS 3 X! #define LOOP_MAX 100 X X! #define INIT_SPEED 3.0 X #define MAX_SPEED 8.0 X--- 106,111 ---- X #define INIT_BALLS 3 X! #define LOOP_MAX 97 /* prime by wish, not need */ X X! #define MIN_SPEED 3.0 X! #define INIT_SPEED 4.0 X #define MAX_SPEED 8.0 X*************** X*** 113,121 **** X #define SPEED_RESOLUTION 60 /* SPEED_LIMIT / SPEED_INCR */ X! #define SPEED_RESOLUTION_FACTOR 5.0 /* SPEED_RESOLUTION / X! * SPEED_LIMI X! * X! /* the stage is a two X! * dimensional array of X! * bricks */ X! struct Brick { X char code; /* Q.V. map_codes */ X--- 115,120 ---- X #define SPEED_RESOLUTION 60 /* SPEED_LIMIT / SPEED_INCR */ X! #define SPEED_RESOLUTION_FACTOR 5.0 /* SPEED_RESOLUTION / SPEED_LIMIT */ X! X! /* the stage is a two dimensional array of bricks */ X! extern struct Brick { X char code; /* Q.V. map_codes */ X*************** X*** 126,128 **** X X! struct Ball { X int quadrant; /* enumeration { NO_BALL, NE, NW, SW, X--- 125,127 ---- X X! extern struct Ball { X int quadrant; /* enumeration { NO_BALL, NE, NW, SW, X*************** X*** 129,137 **** X * SE } */ X! double angle; /* range -M_PI_4..NEAR_HORIZONTAL */ X! /* X! * NW -P4|-P4 NE +NH | +NH >>>>>>+<<<<<< (gap to avoid infinite X! * horizontal bounce loops) +NH | +NH SW -P4|-P4 SE X! */ X int row, col; /* coordinates on the stage */ X! double x, y; /* coordinates in pixels */ X double speed, x_speed, y_speed; /* motion per update in X--- 128,139 ---- X * SE } */ X! double angle; /* range -M_PI_4..NEAR_HORIZONTAL */ X! /** X! ** NW -P4|-P4 NE X! ** +NH | +NH X! ** >>>>>>+<<<<<< (gap to avoid infinite horizontal bounce loops) X! ** +NH | +NH X! ** SW -P4|-P4 SE X! **/ X int row, col; /* coordinates on the stage */ X! double x, y; /* coordinates in pixels */ X double speed, x_speed, y_speed; /* motion per update in X*************** X*** 138,143 **** X * pixels */ X! /* X! * INVARIANT: x_speed == speed * cos( true_angle ) y_speed == speed * X! * sin( true_angle ) X! */ X } ball1, ball2, ball3; X--- 140,146 ---- X * pixels */ X! /** X! ** INVARIANT: X! ** x_speed == speed * cos( true_angle ) X! ** y_speed == speed * sin( true_angle ) X! **/ X } ball1, ball2, ball3; X*************** X*** 144,149 **** X X! int launch_quadrant;/* enumeration { NE, NW } */ X! int launch_row, launch_col; X! double launch_x, launch_y; X! int emit_row, emit_col; X X--- 147,152 ---- X X! extern int launch_quadrant; /* enumeration { NE, NW } */ X! extern int launch_row, launch_col; X! extern double launch_x, launch_y; X! extern int emit_row, emit_col; X X*************** X*** 159,166 **** X X! int pallet_lengthI; /* range MIN_PALLET_LENGTH..MAX_PALLET_LENGTH */ X! int pallet_heightI; /* range pallet_lengthI..MAX_PALLET_HEIGHT */ X! int pallet_xI; /* range 0..STAGE_WIDTH_IN_PIXELS */ X! int pallet_yI; /* range PALLET_MAX_Y+4..PALLET_MIN_Y-12 */ X! int pallet_row; /* range MAX_ROW-1..MAX_ROW-9 */ X! double pallet_length, pallet_height, pallet_x, pallet_y; X X--- 162,169 ---- X X! extern int pallet_lengthI; /* range MIN_PALLET_LENGTH..MAX_PALLET_LENGTH */ X! extern int pallet_heightI; /* range pallet_lengthI..MAX_PALLET_HEIGHT */ X! extern int pallet_xI; /* range 0..STAGE_WIDTH_IN_PIXELS */ X! extern int pallet_yI; /* range PALLET_MAX_Y+4..PALLET_MIN_Y-12 */ X! extern int pallet_row; /* range MAX_ROW-1..MAX_ROW-9 */ X! extern double pallet_length, pallet_height, pallet_x, pallet_y; X X*************** X*** 173,178 **** X */ X! int mouse_yI; /* range 0..STAGE_HEIGHT_IN_PIXELS *//* <HC> */ X X! int nb_stages, stage_nb, balls_left, score, score_incr, nbricks, loop_nhits, pallet_modif; X! double launch_speed; X X--- 176,182 ---- X */ X! extern int mouse_yI; /* range 0..STAGE_HEIGHT_IN_PIXELS */ /*<HC>*/ X X! extern int nb_stages, stage_nb, balls_left, score, score_incr, nbricks, X! loop_nhits, pallet_modif; X! extern double launch_speed; X X*************** X*** 179,181 **** X #define NAME_LENGTH 20 X! char stage_name[NAME_LENGTH]; X X--- 183,185 ---- X #define NAME_LENGTH 20 X! extern char stage_name[NAME_LENGTH]; X X*************** X*** 182,188 **** X #define MAX_NB_STAGES 100 X! int stages[MAX_NB_STAGES]; X X! struct Brick *last_busted_brick; /* NULL == none so far */ X! char last_busted_code; X! int last_busted_row, last_busted_col; X X--- 186,192 ---- X #define MAX_NB_STAGES 100 X! extern int stages[MAX_NB_STAGES]; X X! extern struct Brick *last_busted_brick; /* NULL == none so far */ X! extern char last_busted_code; X! extern int last_busted_row, last_busted_col; X X*************** X*** 191,194 **** X X! Notify_value move_balls( ); /* => timeout events */ X! int move_pallet( );/* => LOC_MOVE events */ X X--- 195,198 ---- X X! extern Notify_value move_balls( ); /* => timeout events */ X! extern int move_pallet( ); /* => LOC_MOVE events */ X X*************** X*** 197,199 **** X X! struct itimerval timeout; X X--- 201,203 ---- X X! extern struct itimerval timeout; X X*************** X*** 204,206 **** X (void) notify_set_itimer_func( frame, move_balls, \ X! ITIMER_REAL, &timeout, ITIMER_NULL ) X #define stop_timer() \ X--- 208,210 ---- X (void) notify_set_itimer_func( frame, move_balls, \ X! ITIMER_REAL, &timeout, ITIMER_NULL ) X #define stop_timer() \ X*************** X*** 207,209 **** X (void) notify_set_itimer_func( frame, move_balls, \ X! ITIMER_REAL, ITIMER_NULL, ITIMER_NULL ) X X--- 211,213 ---- X (void) notify_set_itimer_func( frame, move_balls, \ X! ITIMER_REAL, ITIMER_NULL, ITIMER_NULL ) X X*************** X*** 214,217 **** X X! char *login; X! char playground[PATH_LENGTH]; X X--- 218,221 ---- X X! extern char *login; X! extern char playground[PATH_LENGTH]; X X*** blockbuster.man.orig Thu Aug 23 14:56:16 1990 X--- blockbuster.man Thu Aug 23 14:56:43 1990 X*************** X*** 6,8 **** X .B blockbuster X! .I [play_ground] X .I [sunview_options] X--- 6,8 ---- X .B blockbuster X! .I [playground] X .I [sunview_options] X*************** X*** 9,14 **** X .SH DESCRIPTION X! The play ground is either the anonymous public play ground (no argument), X a named public playground or a privately owned directory. X! The list of available named public play grounds is obtained by giving "-" X! as the play ground argument. X .LP X--- 9,14 ---- X .SH DESCRIPTION X! The playground is either the anonymous public playground (no argument), X a named public playground or a privately owned directory. X! The list of available named public playgrounds is obtained by giving "-" X! as the playground argument. X .LP X*************** X*** 89,91 **** X .SH "CREATION OF PLAY GROUNDS" X! A private play ground can be created in any directory. X The stages can be defined from the ascii map codes using any text editor X--- 89,91 ---- X .SH "CREATION OF PLAY GROUNDS" X! A private playground can be created in any directory. X The stages can be defined from the ascii map codes using any text editor X*************** X*** 96,98 **** X .LP X! Individual stages can be tried in the public play ground "try" (q.v. 'try'), X provided you have write access. X--- 96,98 ---- X .LP X! Individual stages can be tried in the public playground "try" (q.v. 'try'), X provided you have write access. X*************** X*** 183,189 **** X .SH FILES X! {BBexe}/blockbuster.*.exe\h'|30m'executables (per architecture) X! {BBexe}/stagemm.exe\h'|30m'[optional] bookkeeping program (q.v. 'smm') X {BBstg}/stage.skel\h'|30m'skeleton stage (q.v. 'tes') X! {BBstg}/STAGES.\h'|30m'anonymous public play ground X! {BBstg}/STAGES.*\h'|30m'named public play grounds X \h'|30m'(including a try out environment) (q.v. 'try') X--- 183,189 ---- X .SH FILES X! {BBexe}/blockbuster\h'|30m'executable (to be installed) X! {BBexe}/stagemm\h'|30m'[optional] bookkeeping program (q.v. 'smm') X {BBstg}/stage.skel\h'|30m'skeleton stage (q.v. 'tes') X! {BBstg}/STAGES.\h'|30m'anonymous public playground X! {BBstg}/STAGES.*\h'|30m'named public playgrounds X \h'|30m'(including a try out environment) (q.v. 'try') X*************** X*** 190,192 **** X .SH "USEFUL AUXILIARY SHELLSCRIPTS" X- \&'blockbuster' X \&'smm'\h'|6m'stage mini-max (small bookkeeping program) X--- 190,191 ---- X*************** X*** 193,195 **** X \&'tes'\h'|6m'tuned textedit X! \&'try'\h'|6m'try out any individual stage in any play ground X \h'|6m'(using {BBstg}/STAGES.try) X--- 192,194 ---- X \&'tes'\h'|6m'tuned textedit X! \&'try'\h'|6m'try out any individual stage in any playground X \h'|6m'(using {BBstg}/STAGES.try) X*** deflection.c.orig Thu Aug 23 14:56:17 1990 X--- deflection.c Thu Aug 23 14:56:44 1990 X*************** X*** 73,75 **** X ball->quadrant = ( ball->quadrant == SW ) ? NW X! /* SE */ : NE; X else { /* rebound */ X--- 73,75 ---- X ball->quadrant = ( ball->quadrant == SW ) ? NW X! /* SE */ : NE; X else { /* rebound */ X*************** X*** 77,79 **** X ball->quadrant = ( ball->quadrant == SW ) ? NE X! /* SE */ : NW; X }; X--- 77,79 ---- X ball->quadrant = ( ball->quadrant == SW ) ? NE X! /* SE */ : NW; X }; X*************** X*** 88,90 **** X true_angle = ( ball->quadrant == NE ) ? M_PI_4 - ball->angle X! /* NW */ : M_PI_3_4 + ball->angle; X ball->x_speed = ball->speed * cos( true_angle ); X--- 88,90 ---- X true_angle = ( ball->quadrant == NE ) ? M_PI_4 - ball->angle X! /* NW */ : M_PI_3_4 + ball->angle; X ball->x_speed = ball->speed * cos( true_angle ); X*************** X*** 108,110 **** X ball1.angle < -45 || ball1.angle > 45 || X! ball1.x < -pallet_length || ball1.x > pallet_length ) X break; X--- 108,111 ---- X ball1.angle < -45 || ball1.angle > 45 || X! ball1.x < -pallet_length || X! ball1.x > pallet_length ) X break; X*************** X*** 116,117 **** X } X! #endif DEBUG_PDEFL X--- 117,118 ---- X } X! #endif /* DEBUG_PDEFL */ X*** score.c.orig Thu Aug 23 14:56:18 1990 X--- score.c Thu Aug 23 14:56:46 1990 X*************** X*** 60,65 **** X if ( score_board[lows].score > score ) { X! /* X! * an older incomplete game: complete X! * it X! */ X score_board[lows].balls_left *= -1; X--- 60,62 ---- X if ( score_board[lows].score > score ) { X! /* an older incomplete game */ X score_board[lows].balls_left *= -1; X*************** X*** 107,109 **** X if ( score_board[s].balls_left > 99 ) { X! msg( s + 2, sprintf( buf, "%7d (%3d) %8s ", X score_board[s].score, X--- 104,106 ---- X if ( score_board[s].balls_left > 99 ) { X! msg( s + 2, sprintf( buf, "%10d (%3d) %8s ", X score_board[s].score, X*************** X*** 112,114 **** X } else if ( score_board[s].balls_left > 9 ) { X! msg( s + 2, sprintf( buf, "%7d (%2d) %8s ", X score_board[s].score, X--- 109,111 ---- X } else if ( score_board[s].balls_left > 9 ) { X! msg( s + 2, sprintf( buf, "%10d (%2d) %8s ", X score_board[s].score, X*************** X*** 117,119 **** X } else if ( score_board[s].balls_left > 0 ) { X! msg( s + 2, sprintf( buf, "%7d (%1d) %8s ", X score_board[s].score, X--- 114,116 ---- X } else if ( score_board[s].balls_left > 0 ) { X! msg( s + 2, sprintf( buf, "%10d (%1d) %8s ", X score_board[s].score, X*************** X*** 122,124 **** X } else if ( score_board[s].balls_left < -99 ) { X! msg( s + 2, sprintf( buf, "%7d (%3d) + %8s ", X score_board[s].score, X--- 119,121 ---- X } else if ( score_board[s].balls_left < -99 ) { X! msg( s + 2, sprintf( buf, "%10d (%3d) + %8s ", X score_board[s].score, X*************** X*** 127,129 **** X } else if ( score_board[s].balls_left < -9 ) { X! msg( s + 2, sprintf( buf, "%7d (%2d) + %8s ", X score_board[s].score, X--- 124,126 ---- X } else if ( score_board[s].balls_left < -9 ) { X! msg( s + 2, sprintf( buf, "%10d (%2d) + %8s ", X score_board[s].score, X*************** X*** 132,134 **** X } else if ( score_board[s].balls_left < 0 ) { X! msg( s + 2, sprintf( buf, "%7d (%1d) + %8s ", X score_board[s].score, X--- 129,131 ---- X } else if ( score_board[s].balls_left < 0 ) { X! msg( s + 2, sprintf( buf, "%10d (%1d) + %8s ", X score_board[s].score, X*************** X*** 137,139 **** X } else { /* no balls left */ X! msg( s + 2, sprintf( buf, "%7d %8s ", X score_board[s].score, X--- 134,136 ---- X } else { /* no balls left */ X! msg( s + 2, sprintf( buf, "%10d %8s ", X score_board[s].score, X*************** X*** 145,156 **** X if ( balls_left > 99 ) { X! msg( NB_SCORES + 3, sprintf( buf, "%7d (%3d) %8s ", X! score, balls_left, login ) ); X } else if ( balls_left > 9 ) { X! msg( NB_SCORES + 3, sprintf( buf, "%7d (%2d) %8s ", X! score, balls_left, login ) ); X } else if ( balls_left ) { X! msg( NB_SCORES + 3, sprintf( buf, "%7d (%1d) %8s ", X! score, balls_left, login ) ); X } else { /* no balls left */ X! msg( NB_SCORES + 3, sprintf( buf, "%7d <> %8s ", X score, login ) ); X--- 142,153 ---- X if ( balls_left > 99 ) { X! msg( NB_SCORES + 3, sprintf( buf, "%10d (%3d) %8s ", X! score, balls_left, login ) ); X } else if ( balls_left > 9 ) { X! msg( NB_SCORES + 3, sprintf( buf, "%10d (%2d) %8s ", X! score, balls_left, login ) ); X } else if ( balls_left ) { X! msg( NB_SCORES + 3, sprintf( buf, "%10d (%1d) %8s ", X! score, balls_left, login ) ); X } else { /* no balls left */ X! msg( NB_SCORES + 3, sprintf( buf, "%10d <> %8s ", X score, login ) ); X*** stagemm.c.orig Fri Aug 24 14:19:00 1990 X--- stagemm.c Thu Aug 23 18:04:19 1990 X*************** X*** 13,14 **** X--- 13,47 ---- X X+ /*** [ANSI] define globals (declared external in blockbuster.h) ***/ X+ Frame frame; X+ Canvas stage_cvs, msg_cvs; X+ Pixwin *stage_win, *msg_win; X+ Pixfont *font; X+ char msg0_buf[55]; X+ struct Brick stage[MAX_ROW + 1][MAX_COL + 1]; X+ struct Ball ball1, ball2, ball3; X+ int launch_quadrant; /* enumeration { NE, NW } */ X+ int launch_row, launch_col; X+ double launch_x, launch_y; X+ int emit_row, emit_col; X+ int pallet_lengthI; /* range MIN_PALLET_LENGTH..MAX_PALLET_LENGTH */ X+ int pallet_heightI; /* range pallet_lengthI..MAX_PALLET_HEIGHT */ X+ int pallet_xI; /* range 0..STAGE_WIDTH_IN_PIXELS */ X+ int pallet_yI; /* range PALLET_MAX_Y+4..PALLET_MIN_Y-12 */ X+ int pallet_row; /* range MAX_ROW-1..MAX_ROW-9 */ X+ double pallet_length, pallet_height, pallet_x, pallet_y; X+ int mouse_yI; /* range 0..STAGE_HEIGHT_IN_PIXELS */ /*<HC>*/ X+ int nb_stages, stage_nb, balls_left, score, score_incr, nbricks, X+ loop_nhits, pallet_modif; X+ double launch_speed; X+ char stage_name[NAME_LENGTH]; X+ int stages[MAX_NB_STAGES]; X+ struct Brick *last_busted_brick; /* NULL == none so far */ X+ char last_busted_code; X+ int last_busted_row, last_busted_col; X+ struct itimerval timeout; X+ char *login; X+ char playground[PATH_LENGTH]; X+ X+ X+ /*** stagemm ***/ X void END_OF_FILE if test 30506 -ne `wc -c <'patches01'`; then echo shar: \"'patches01'\" unpacked with wrong size! fi # end of 'patches01' fi echo shar: End of shell archive. exit 0