X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=640c248624ddd158dd29f6d33d2a9f3b06e677e0;hb=35a6bb2e02a14cb70796f2a165736f515669208c;hp=c8519b390c7500c97d1d3b6507c04b63bd55e94d;hpb=2fe0fbc2a34fd4b50081f1829931dea3ca2c4c1c;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index c8519b39..640c2486 100644 --- a/src/game.c +++ b/src/game.c @@ -129,12 +129,12 @@ void InitGame() local_player->active = TRUE; local_player->local = TRUE; - network_player_action_stored = FALSE; + network_player_action_received = FALSE; /* initial null action */ - SendToServer_MovePlayer(0,0); + SendToServer_MovePlayer(MV_NO_MOVING); @@ -2874,11 +2874,9 @@ void GameActions(byte player_action) int i, x,y, element; int *recorded_player_action; - if (game_status != PLAYING) return; - #ifdef DEBUG action_delay_value = (tape.playing && tape.fast_forward ? FFWD_FRAME_DELAY : GameFrameDelay); @@ -2887,21 +2885,16 @@ void GameActions(byte player_action) (tape.playing && tape.fast_forward ? FFWD_FRAME_DELAY : GAME_FRAME_DELAY); #endif - /* - HandleNetworking(); - - if (game_status != PLAYING) - return; - */ - /* main game synchronization point */ WaitUntilDelayReached(&action_delay, action_delay_value); - if (!network_player_action_stored) + if (!standalone && !network_player_action_received) { + /* #ifdef DEBUG printf("DEBUG: try to get network player actions in time\n"); #endif + */ /* last chance to get network player actions without main loop delay */ HandleNetworking(); @@ -2909,11 +2902,13 @@ void GameActions(byte player_action) if (game_status != PLAYING) return; - if (!network_player_action_stored) + if (!network_player_action_received) { + /* #ifdef DEBUG printf("DEBUG: failed to get network player actions in time\n"); #endif + */ return; } } @@ -2923,13 +2918,17 @@ void GameActions(byte player_action) else recorded_player_action = NULL; - - SendToServer_MovePlayer(player_action, FrameCounter); - + if (!standalone) + SendToServer_MovePlayer(player_action); for(i=0; idynamite--; DrawText(DX_DYNAMITE, DY_DYNAMITE, int2str(local_player->dynamite, 3), FS_SMALL, FC_YELLOW); - DrawGraphicThruMask(SCREENX(jx),SCREENY(jy),GFX_DYNAMIT); + if (IN_SCR_FIELD(SCREENX(jx),SCREENY(jy))) + DrawGraphicThruMask(SCREENX(jx),SCREENY(jy),GFX_DYNAMIT); } else { @@ -4028,7 +4032,8 @@ BOOL PlaceBomb(struct PlayerInfo *player) Store2[jx][jy] = player->element_nr; /* for DynaExplode() */ MovDelay[jx][jy] = 96; player->dynabombs_left--; - DrawGraphicThruMask(SCREENX(jx),SCREENY(jy),GFX_DYNABOMB); + if (IN_SCR_FIELD(SCREENX(jx),SCREENY(jy))) + DrawGraphicThruMask(SCREENX(jx),SCREENY(jy),GFX_DYNABOMB); } return(TRUE);