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/network.c b/network.c index 6cc26e8..b74a808 100644 --- a/network.c +++ b/network.c @@ -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; }