X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ffiles.c;h=3162e629cf126ba102c242a32018ccad2074f711;hp=d38858203b8fb2a5e527bedd43e22a28c9cbb18b;hb=2174ec0a6b545b47aaea3153ef9a67993fc59a93;hpb=6460301d715f72f7247b3070a5d98c0b56cfdb67 diff --git a/src/files.c b/src/files.c index d3885820..3162e629 100644 --- a/src/files.c +++ b/src/files.c @@ -6792,8 +6792,8 @@ static int SaveLevel_BODY(FILE *file, struct LevelInfo *level) int chunk_size = 0; int x, y; - for (y = 0; y < level->fieldy; y++) - for (x = 0; x < level->fieldx; x++) + for (y = 0; y < level->fieldy; y++) + for (x = 0; x < level->fieldx; x++) if (level->encoding_16bit_field) chunk_size += putFile16BitBE(file, level->field[x][y]); else @@ -7623,9 +7623,10 @@ static int getTapePosSize(struct TapeInfo *tape) { int tape_pos_size = 0; - if (tape->event_mask == GAME_EVENTS_KEYS) + if (tape->use_key_actions) tape_pos_size += tape->num_participating_players; - else + + if (tape->use_mouse_actions) tape_pos_size += 3; // x and y position and mouse button mask tape_pos_size += 1; // tape action delay value @@ -7633,40 +7634,25 @@ static int getTapePosSize(struct TapeInfo *tape) return tape_pos_size; } -static int getGameEventMaskFromTapeEventValue(int value) +static void setTapeActionFlags(struct TapeInfo *tape, int value) { - switch (value) - { - case TAPE_EVENTS_KEYS_ONLY: - return GAME_EVENTS_KEYS; - - case TAPE_EVENTS_MOUSE_ONLY: - return GAME_EVENTS_MOUSE; + tape->use_key_actions = FALSE; + tape->use_mouse_actions = FALSE; - case TAPE_EVENTS_KEYS_AND_MOUSE: - return GAME_EVENTS_KEYS | GAME_EVENTS_MOUSE; + if (value != TAPE_USE_MOUSE_ACTIONS_ONLY) + tape->use_key_actions = TRUE; - default: - return GAME_EVENTS_DEFAULT; - } + if (value != TAPE_USE_KEY_ACTIONS_ONLY) + tape->use_mouse_actions = TRUE; } -static int getTapeEventValueFromGameEventMask(int mask) +static int getTapeActionValue(struct TapeInfo *tape) { - switch (mask) - { - case GAME_EVENTS_KEYS: - return TAPE_EVENTS_KEYS_ONLY; - - case GAME_EVENTS_MOUSE: - return TAPE_EVENTS_MOUSE_ONLY; - - case GAME_EVENTS_KEYS | GAME_EVENTS_MOUSE: - return TAPE_EVENTS_KEYS_AND_MOUSE; - - default: - return TAPE_EVENTS_DEFAULT; - } + return (tape->use_key_actions && + tape->use_mouse_actions ? TAPE_USE_KEY_AND_MOUSE_ACTIONS : + tape->use_key_actions ? TAPE_USE_KEY_ACTIONS_ONLY : + tape->use_mouse_actions ? TAPE_USE_MOUSE_ACTIONS_ONLY : + TAPE_ACTIONS_DEFAULT); } static int LoadTape_VERS(File *file, int chunk_size, struct TapeInfo *tape) @@ -7704,7 +7690,7 @@ static int LoadTape_HEAD(File *file, int chunk_size, struct TapeInfo *tape) } } - tape->event_mask = getGameEventMaskFromTapeEventValue(getFile8Bit(file)); + setTapeActionFlags(tape, getFile8Bit(file)); ReadUnusedBytesFromFile(file, TAPE_CHUNK_HEAD_UNUSED); @@ -7764,15 +7750,7 @@ static int LoadTape_BODY(File *file, int chunk_size, struct TapeInfo *tape) break; } - if (tape->event_mask == GAME_EVENTS_MOUSE) - { - tape->pos[i].action[TAPE_ACTION_LX] = getFile8Bit(file); - tape->pos[i].action[TAPE_ACTION_LY] = getFile8Bit(file); - tape->pos[i].action[TAPE_ACTION_BUTTON] = getFile8Bit(file); - - tape->pos[i].action[TAPE_ACTION_UNUSED] = 0; - } - else + if (tape->use_key_actions) { for (j = 0; j < MAX_PLAYERS; j++) { @@ -7783,6 +7761,13 @@ static int LoadTape_BODY(File *file, int chunk_size, struct TapeInfo *tape) } } + if (tape->use_mouse_actions) + { + tape->pos[i].action[TAPE_ACTION_LX] = getFile8Bit(file); + tape->pos[i].action[TAPE_ACTION_LY] = getFile8Bit(file); + tape->pos[i].action[TAPE_ACTION_BUTTON] = getFile8Bit(file); + } + tape->pos[i].delay = getFile8Bit(file); if (tape->file_version == FILE_VERSION_1_0) @@ -8106,7 +8091,7 @@ static void SaveTape_HEAD(FILE *file, struct TapeInfo *tape) putFile8Bit(file, store_participating_players); - putFile8Bit(file, getTapeEventValueFromGameEventMask(tape->event_mask)); + putFile8Bit(file, getTapeActionValue(tape)); // unused bytes not at the end here for 4-byte alignment of engine_version WriteUnusedBytesToFile(file, TAPE_CHUNK_HEAD_UNUSED); @@ -8133,19 +8118,20 @@ static void SaveTape_BODY(FILE *file, struct TapeInfo *tape) for (i = 0; i < tape->length; i++) { - if (tape->event_mask == GAME_EVENTS_MOUSE) - { - putFile8Bit(file, tape->pos[i].action[TAPE_ACTION_LX]); - putFile8Bit(file, tape->pos[i].action[TAPE_ACTION_LY]); - putFile8Bit(file, tape->pos[i].action[TAPE_ACTION_BUTTON]); - } - else + if (tape->use_key_actions) { for (j = 0; j < MAX_PLAYERS; j++) if (tape->player_participates[j]) putFile8Bit(file, tape->pos[i].action[j]); } + if (tape->use_mouse_actions) + { + putFile8Bit(file, tape->pos[i].action[TAPE_ACTION_LX]); + putFile8Bit(file, tape->pos[i].action[TAPE_ACTION_LY]); + putFile8Bit(file, tape->pos[i].action[TAPE_ACTION_BUTTON]); + } + putFile8Bit(file, tape->pos[i].delay); } } @@ -8519,6 +8505,10 @@ static struct TokenInfo global_setup_tokens[] = TYPE_SWITCH, &setup.prefer_aga_graphics, "prefer_aga_graphics" }, + { + TYPE_SWITCH, + &setup.prefer_lowpass_sounds, "prefer_lowpass_sounds" + }, { TYPE_SWITCH, &setup.game_speed_extended, "game_speed_extended" @@ -9190,6 +9180,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->quick_switch = FALSE; si->input_on_focus = FALSE; si->prefer_aga_graphics = TRUE; + si->prefer_lowpass_sounds = FALSE; si->game_speed_extended = FALSE; si->game_frame_delay = GAME_FRAME_DELAY; si->sp_show_border_elements = FALSE;