X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=1c493508a290286f096830ed58ae3de7ec219057;hb=8690e55ceeb74b13d867e3cdfb9ee991b58b297a;hp=87c054a211c0363e6200dd8670c984c5a90a3d21;hpb=7f8a11cd9d715fb89fd2ed168019fa05753bc5ea;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 87c054a2..1c493508 100644 --- a/src/game.c +++ b/src/game.c @@ -2681,15 +2681,25 @@ static void DisplayGameControlValues(void) if (type == TYPE_INTEGER) { if (nr == GAME_PANEL_LEVEL_NUMBER || + nr == GAME_PANEL_INVENTORY_COUNT || + nr == GAME_PANEL_SCORE || + nr == GAME_PANEL_HIGHSCORE || nr == GAME_PANEL_TIME) { boolean use_dynamic_size = (size == -1 ? TRUE : FALSE); if (use_dynamic_size) // use dynamic number of digits { - int value_change = (nr == GAME_PANEL_LEVEL_NUMBER ? 100 : 1000); - int size1 = (nr == GAME_PANEL_LEVEL_NUMBER ? 2 : 3); - int size2 = size1 + 1; + int value_change = (nr == GAME_PANEL_LEVEL_NUMBER ? 100 : + nr == GAME_PANEL_INVENTORY_COUNT || + nr == GAME_PANEL_TIME ? 1000 : 100000); + int size_add = (nr == GAME_PANEL_LEVEL_NUMBER || + nr == GAME_PANEL_INVENTORY_COUNT || + nr == GAME_PANEL_TIME ? 1 : 2); + int size1 = (nr == GAME_PANEL_LEVEL_NUMBER ? 2 : + nr == GAME_PANEL_INVENTORY_COUNT || + nr == GAME_PANEL_TIME ? 3 : 5); + int size2 = size1 + size_add; int font1 = pos->font; int font2 = pos->font_alt; @@ -5094,7 +5104,14 @@ static int addScoreEntry(struct ScoreInfo *list, struct ScoreEntry *new_entry, // (special case: historic score entries have an empty tape basename entry) if (strEqual(new_entry->tape_basename, entry->tape_basename) && !strEqual(new_entry->tape_basename, UNDEFINED_FILENAME)) + { + // special case: use server score instead of local score value if higher + // (historic scores might have been truncated to 16-bit values locally) + if (score_is_better) + entry->score = new_entry->score; + return -1; + } if (is_better || entry_is_empty) { @@ -5993,6 +6010,10 @@ static void Explode(int ex, int ey, int phase, int mode) return; } + // this can happen if the player was just killed by an explosion + if (GfxElement[x][y] == EL_UNDEFINED) + GfxElement[x][y] = EL_EMPTY; + if (phase == last_phase) { int element; @@ -11750,6 +11771,9 @@ void StartGameActions(boolean init_network_game, boolean record_tape, if (record_tape) TapeStartRecording(new_random_seed); + if (setup.auto_pause_on_start && !tape.pausing) + TapeTogglePause(TAPE_TOGGLE_MANUAL); + if (init_network_game) { SendToServer_LevelFile();