diff --git a/bomber.h b/bomber.h index 7a2ebf0..86d9b39 100644 --- a/bomber.h +++ b/bomber.h @@ -9,7 +9,6 @@ extern int xcolors[256]; #define IXSIZE 640 #define IYSIZE 480 - #define MYF1 0x180 #define MYF2 0x181 #define MYF3 0x182 @@ -36,9 +35,7 @@ extern int xcolors[256]; #define MYSHIFTED 0x40 #define MYALTED 0x200 - -typedef struct gfxset -{ +typedef struct gfxset { uchar gs_colormap[768]; uchar gs_inout[256]; uchar *gs_pic; @@ -46,15 +43,13 @@ typedef struct gfxset int gs_ysize; } gfxset; -typedef struct figure -{ +typedef struct figure { int xsize,ysize; int xdelta,ydelta; uchar *graphics; } figure; -typedef struct solid -{ +typedef struct solid { int xsize,ysize; uchar *graphics; } solid; @@ -179,7 +174,7 @@ enum tile_types { }; -#define ACT_INVALID 0x88 +// #define ACT_INVALID 0x88 #define ACT_NONE 0 #define ACT_UP 1 #define ACT_DOWN 2 diff --git a/menu.c b/menu.c index 4bb5bcc..4d70bba 100644 --- a/menu.c +++ b/menu.c @@ -173,8 +173,9 @@ static void addexit(char *item,...) { /* game menues */ -char *densities[]={"PACKED","HIGH","MEDIUM","LOW"}; -char *generosities[]={"LOW","MEDIUM","HIGH","RIDICULOUS"}; +static const char *densities[]={"PACKED","HIGH","MEDIUM","LOW"}; +static const char *generosities[]={"LOW","MEDIUM","HIGH","RIDICULOUS"}; +static const char *dis_en_abled[]={"DISABLED","ENABLED"}; static void config_menu(void) { int sel; @@ -187,6 +188,7 @@ static void config_menu(void) { additem("GENEROSITY: %s",generosities[configopts.generosity]); additem("INITIAL FLAME LENGTH: %d",configopts.flames+1); additem("INITIAL NUMBER OF BOMBS: %d",configopts.bombs+1); + additem("SOUND: %s", dis_en_abled[sound_enabled]); sel=domenu(MENU_CONFIG, NULL); switch (sel) { case 0: @@ -207,6 +209,9 @@ static void config_menu(void) { configopts.bombs+=menudelta; configopts.bombs&=7; break; + case 5: + sound_enabled = 1 - sound_enabled; + break; } } } diff --git a/network.c b/network.c index 6cc26e8..e11bbc3 100644 --- a/network.c +++ b/network.c @@ -10,7 +10,7 @@ #define MAXMSG 4096 int udpsocket; -const unsigned char gameversion[4]={0xda,0x01,0x00,0x08}; +const unsigned char gameversion[4]={0xda,0x01,0x00,0x09}; struct netnode netnodes[MAXNETNODES]; @@ -294,14 +294,18 @@ int networktraffic(void) { if (myaction == ACT_QUIT) { for (i = 1; i < MAXNETNODES; ++i) { if (netnodes[i].used) - actions[i]=ACT_QUIT; + actions[i] = ACT_QUIT; } } else { - now=gtime(); - for(;;) { - if(gtime()-now>15) break; - length=getmsg(5); - if(length>0 && *mesg!=PKT_MYDATA) fprintf(stderr, "Strange packet %d\n", (int) *mesg); + for (i = 1; i < MAXNETNODES; ++i) { + if (netnodes[i].used) + actions[i] &= ACT_MASK; /* only keep direction */ + } + now = gtime(); + for (;;) { + if (gtime() - now > 15) break; + length = getmsg(5); + if (length > 0 && *mesg != PKT_MYDATA) fprintf(stderr, "Strange packet %d\n", (int) *mesg); /* check for unexpected old packets... * for example JOIN on frame 0, respond with BEGIN if player already in game * respond with uninvite INVITE on JOIN from others @@ -312,7 +316,7 @@ int networktraffic(void) { count = readuint32(mesg+5); if (count > latestcounts[whosent]) { latestcounts[whosent] = count; - actions[whosent] = mesg[9]; + actions[whosent] = (actions[whosent] & ~ACT_MASK) | mesg[9]; /* don't drop "action" keys */ } } } @@ -322,8 +326,8 @@ int networktraffic(void) { for (i = 1; i < MAXNETNODES; ++i) { if(netnodes[i].used) { sendactions(i); /* send actions to every active node */ - if (actions[i]==ACT_QUIT) - netnodes[i].used=0; /* remove disconnected clients */ + if (actions[i] == ACT_QUIT) + netnodes[i].used = 0; /* remove disconnected clients */ } } return actioncount; @@ -334,7 +338,7 @@ int networktraffic(void) { ++mydatacount; sendmine(mydatacount); - for(;;) { + for (;;) { /* if we got already one packet we only wait 3msec, otherwise 30msec */ long cur = gtime(); if (count >= 0 && cur - now > 3) break; @@ -342,13 +346,13 @@ int networktraffic(void) { length = getmsg(count >= 0 ? 3 : 20); - if (MAXNETNODES*ACTIONHIST+9 != length) continue; + if (MAXNETNODES * ACTIONHIST + 9 != length) continue; if (!isvalidmsg_from_master()) continue; - i = readuint32(mesg+5); + i = readuint32(mesg + 5); if (i < actioncount) continue; count = actioncount = i; - memcpy(actionblock,mesg+9,MAXNETNODES*ACTIONHIST); + memcpy(actionblock, mesg + 9, MAXNETNODES * ACTIONHIST); } return actioncount; } diff --git a/sound.c b/sound.c index 4ca5598..6a1ddc1 100644 --- a/sound.c +++ b/sound.c @@ -11,6 +11,8 @@ #define DATADIR "data" #endif +int sound_enabled = 1; + static char dirlist[]=DATADIR; static int readsound(int num); @@ -181,6 +183,8 @@ int i,file,size,len; } void playsound(int n) { - soundcommands[soundput]=n; - soundput=(soundput+1)&(MAXSOUNDCOMMANDS-1); + if (sound_enabled) { + soundcommands[soundput]=n; + soundput=(soundput+1)&(MAXSOUNDCOMMANDS-1); + } } diff --git a/sound.h b/sound.h index ae173c0..96f20bc 100644 --- a/sound.h +++ b/sound.h @@ -5,4 +5,6 @@ int soundopen(void); void soundclose(void); void playsound(int n); +extern int sound_enabled; + #endif