diff options
| author | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-07-10 11:28:59 +0000 |
|---|---|---|
| committer | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-07-10 11:28:59 +0000 |
| commit | bb15df3f3428df7cd2a4482adebcdaa6fc2f516e (patch) | |
| tree | 61993b5576bebeff7cf9dbcecc5fabdf592abfcc /src/modules/modPipe.c | |
| parent | 0eda3185ba30d433029c9a7e725529a801c93d80 (diff) | |
- precisteny kod sietoveho multiplayera
- moduly si mozu mosielat spravy cez sietovy protokol
- opravy chyb v moduloch
- oprava chyby, v textovych poliach sa zobrazuju znaky, ktore ste nestalcili
- director_t* loadDirector(char *s) vracia NULL ak adresar neexistuje ( predtym sa proces zrutil )
git-svn-id: http://opensvn.csie.org/tuxanci_ng@126 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/modules/modPipe.c')
| -rwxr-xr-x | src/modules/modPipe.c | 64 |
1 files changed, 56 insertions, 8 deletions
diff --git a/src/modules/modPipe.c b/src/modules/modPipe.c index efe4230..4a65756 100755 --- a/src/modules/modPipe.c +++ b/src/modules/modPipe.c @@ -170,7 +170,6 @@ static int myAbs(int n) return ( n > 0 ? n : -n ); } - static int getSppedShot(shot_t *shot) { return ( myAbs(shot->px) > myAbs(shot->py) ? myAbs(shot->px) : myAbs(shot->py) ); @@ -239,33 +238,38 @@ static void moveShot(shot_t *shot, int position, int src_x, int src_y, { case TUX_UP : new_x = dist_x + offset; - new_y = dist_y; + new_y = dist_y - ( shot->h + 5 ); break; case TUX_LEFT : - new_x = dist_x; + new_x = dist_x - ( shot->w + 5 ); new_y = dist_y + offset; break; case TUX_RIGHT : - new_x = dist_x + dist_w; + new_x = dist_x + dist_w + 5; new_y = dist_y + offset; break; case TUX_DOWN : new_x = dist_x + offset; - new_y = dist_y + dist_h; + new_y = dist_y + dist_h + 5; break; } - new_x += myAbs(shot->px) * shot->px; - new_y += myAbs(shot->py) * shot->py; + //new_x += myValueOperator(shot->px) * shot->w; + //new_y += myValueOperator(shot->py) * shot->h; moveObjectInSpace(export_fce->fce_getCurrentArena()->spaceShot, shot, new_x, new_y); if( export_fce->fce_getNetTypeGame() == NET_GAME_TYPE_SERVER ) { - export_fce->fce_proto_send_shot_server(PROTO_SEND_ALL, NULL, shot); + char msg[STR_PROTO_SIZE]; + + sprintf(msg, "pipe %d %d %d %d %d %d", + shot->id, shot->x, shot->y, shot->px, shot->py, shot->position); + + export_fce->fce_proto_send_module_server(PROTO_SEND_ALL, NULL, msg); } } @@ -424,6 +428,50 @@ void cmdArena(char *line) if( strncmp(line, "pipe", 4) == 0 )cmd_teleport(line); } +static void proto_pipe(char *msg) +{ + char cmd[STR_PROTO_SIZE]; + int shot_id, x, y, px, py, position; + space_t *space; + shot_t *shot; + + assert( msg != NULL ); + + sscanf(msg, "%s %d %d %d %d %d %d", + cmd, &shot_id, &x, &y, &px, &py, &position); + + + space = export_fce->fce_getCurrentArena()->spaceShot; + + if( ( shot = getObjectFromSpaceWithID(space, shot_id) ) == NULL ) + { + //delObjectFromSpaceWithObject(getCurrentArena()->spaceShot, shot, destroyShot); + + return; + } + + moveObjectInSpace(space, shot, x, y); + shot->isCanKillAuthor = 1; + shot->position = position; + shot->px = px; + shot->py = py; + + if( shot->gun == GUN_LASSER ) + { + transformOnlyLasser(shot); + } +} + +void recvMsg(char *msg) +{ + if( export_fce->fce_getNetTypeGame() == NET_GAME_TYPE_SERVER ) + { + return; + } + + if( strncmp(msg, "pipe", 4) == 0 )proto_pipe(msg); +} + int destroy() { destroySpaceWithObject(spacePipe, destroyPipe); |