X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame.c;h=410fec92a79180a7c5b014b1c95e375750c3c171;hp=5ec37c4f4267573c280f49efe33329eccab493f4;hb=820c0cf7d64247d3f75f9cb10d214cbf988557fe;hpb=10a305960c9cc79afceb6c15c410796776bfe58b diff --git a/src/game.c b/src/game.c index 5ec37c4f..410fec92 100644 --- a/src/game.c +++ b/src/game.c @@ -1683,28 +1683,28 @@ int GetElementFromGroupElement(int element) return element; } -static void IncrementPlayerSokobanFieldsNeeded(struct PlayerInfo *player) +static void IncrementPlayerSokobanFieldsNeeded(void) { if (level.sb_fields_needed) - player->sokoban_fields_still_needed++; + local_player->sokoban_fields_still_needed++; } -static void IncrementPlayerSokobanObjectsNeeded(struct PlayerInfo *player) +static void IncrementPlayerSokobanObjectsNeeded(void) { if (level.sb_objects_needed) - player->sokoban_objects_still_needed++; + local_player->sokoban_objects_still_needed++; } -static void DecrementPlayerSokobanFieldsNeeded(struct PlayerInfo *player) +static void DecrementPlayerSokobanFieldsNeeded(void) { - if (player->sokoban_fields_still_needed > 0) - player->sokoban_fields_still_needed--; + if (local_player->sokoban_fields_still_needed > 0) + local_player->sokoban_fields_still_needed--; } -static void DecrementPlayerSokobanObjectsNeeded(struct PlayerInfo *player) +static void DecrementPlayerSokobanObjectsNeeded(void) { - if (player->sokoban_objects_still_needed > 0) - player->sokoban_objects_still_needed--; + if (local_player->sokoban_objects_still_needed > 0) + local_player->sokoban_objects_still_needed--; } static void InitPlayerField(int x, int y, int element, boolean init_game) @@ -1816,11 +1816,11 @@ static void InitField(int x, int y, boolean init_game) break; case EL_SOKOBAN_FIELD_EMPTY: - IncrementPlayerSokobanFieldsNeeded(local_player); + IncrementPlayerSokobanFieldsNeeded(); break; case EL_SOKOBAN_OBJECT: - IncrementPlayerSokobanObjectsNeeded(local_player); + IncrementPlayerSokobanObjectsNeeded(); break; case EL_STONEBLOCK: @@ -4457,7 +4457,7 @@ void InitAmoebaNr(int x, int y) AmoebaCnt2[group_nr]++; } -static void PlayerWins(struct PlayerInfo *player) +static void LevelSolved(void) { if (level.game_engine_type == GAME_ENGINE_TYPE_RND && local_player->players_still_needed > 0) @@ -4465,20 +4465,20 @@ static void PlayerWins(struct PlayerInfo *player) game.LevelSolved = TRUE; - player->GameOver = TRUE; + local_player->GameOver = TRUE; - player->score_final = (level.game_engine_type == GAME_ENGINE_TYPE_EM ? - level.native_em_level->lev->score : - level.game_engine_type == GAME_ENGINE_TYPE_MM ? - game_mm.score : - player->score); - player->health_final = (level.game_engine_type == GAME_ENGINE_TYPE_MM ? - MM_HEALTH(game_mm.laser_overload_value) : - player->health); + local_player->score_final = (level.game_engine_type == GAME_ENGINE_TYPE_EM ? + level.native_em_level->lev->score : + level.game_engine_type == GAME_ENGINE_TYPE_MM ? + game_mm.score : + local_player->score); + local_player->health_final = (level.game_engine_type == GAME_ENGINE_TYPE_MM ? + MM_HEALTH(game_mm.laser_overload_value) : + local_player->health); game.LevelSolved_CountingTime = (game.no_time_limit ? TimePlayed : TimeLeft); - game.LevelSolved_CountingScore = player->score_final; - game.LevelSolved_CountingHealth = player->health_final; + game.LevelSolved_CountingScore = local_player->score_final; + game.LevelSolved_CountingHealth = local_player->health_final; } void GameWon(void) @@ -7952,7 +7952,7 @@ static void StartMoving(int x, int y) local_player->friends_still_needed--; if (!local_player->friends_still_needed && !local_player->GameOver && AllPlayersGone) - PlayerWins(local_player); + LevelSolved(); return; } @@ -9849,7 +9849,7 @@ static void ExecuteCustomElementAction(int x, int y, int element, int page) ExitPlayer(&stored_player[i]); if (AllPlayersGone) - PlayerWins(local_player); + LevelSolved(); break; } @@ -11121,7 +11121,7 @@ static void CheckLevelSolved(void) if (game_em.level_solved && !game_em.game_over) // game won { - PlayerWins(local_player); + LevelSolved(); game_em.game_over = TRUE; @@ -11136,7 +11136,7 @@ static void CheckLevelSolved(void) if (game_sp.level_solved && !game_sp.game_over) // game won { - PlayerWins(local_player); + LevelSolved(); game_sp.game_over = TRUE; @@ -11151,7 +11151,7 @@ static void CheckLevelSolved(void) if (game_mm.level_solved && !game_mm.game_over) // game won { - PlayerWins(local_player); + LevelSolved(); game_mm.game_over = TRUE; @@ -12678,7 +12678,7 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) if ((local_player->friends_still_needed == 0 || IS_SP_ELEMENT(Feld[jx][jy])) && AllPlayersGone) - PlayerWins(local_player); + LevelSolved(); } // this breaks one level: "machine", level 000 @@ -13972,16 +13972,16 @@ static int DigField(struct PlayerInfo *player, { Back[x][y] = EL_SOKOBAN_FIELD_EMPTY; - IncrementPlayerSokobanFieldsNeeded(local_player); - IncrementPlayerSokobanObjectsNeeded(local_player); + IncrementPlayerSokobanFieldsNeeded(); + IncrementPlayerSokobanObjectsNeeded(); } if (Feld[nextx][nexty] == EL_SOKOBAN_FIELD_EMPTY) { Back[nextx][nexty] = EL_SOKOBAN_FIELD_EMPTY; - DecrementPlayerSokobanFieldsNeeded(local_player); - DecrementPlayerSokobanObjectsNeeded(local_player); + DecrementPlayerSokobanFieldsNeeded(); + DecrementPlayerSokobanObjectsNeeded(); // sokoban object was pushed from empty field to sokoban field if (Back[x][y] == EL_EMPTY) @@ -14006,7 +14006,7 @@ static int DigField(struct PlayerInfo *player, { local_player->players_still_needed = 0; - PlayerWins(local_player); + LevelSolved(); PlayLevelSound(x, y, SND_GAME_SOKOBAN_SOLVING); }