From: Holger Schemel Date: Sat, 26 Nov 2005 12:17:11 +0000 (+0100) Subject: rnd-20051126-1-src X-Git-Tag: 3.1.2^2~48 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=ee749a764df3dfa944c1f9de740ccbeb1cfdef40;p=rocksndiamonds.git rnd-20051126-1-src --- diff --git a/src/cartoons.c b/src/cartoons.c index fc465fac..aa9667c2 100644 --- a/src/cartoons.c +++ b/src/cartoons.c @@ -59,16 +59,7 @@ static void PrepareBackbuffer() boolean ToonNeedsRedraw() { -#if 1 return TRUE; -#else - return (game_status == GAME_MODE_INFO || - game_status == GAME_MODE_LEVELS || - game_status == GAME_MODE_SETUP || - (game_status == GAME_MODE_MAIN && - ((redraw_mask & REDRAW_MICROLEVEL) || - (redraw_mask & REDRAW_MICROLABEL)))); -#endif } void InitToons() diff --git a/src/conftime.h b/src/conftime.h index 9c17eddb..ebad7436 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "[2005-11-25 10:58]" +#define COMPILE_DATE_STRING "[2005-11-26 01:40]" diff --git a/src/editor.c b/src/editor.c index 2558453c..32e9a6d1 100644 --- a/src/editor.c +++ b/src/editor.c @@ -1345,9 +1345,7 @@ static struct ValueTextInfo options_move_stepsize[] = { 4, "normal" }, { 8, "fast" }, { 16, "very fast" }, -#if 1 { 32, "even faster" }, -#endif { -1, NULL } }; @@ -1396,9 +1394,6 @@ static struct ValueTextInfo options_explosion_type[] = { EXPLODES_3X3, "3x3" }, { EXPLODES_CROSS, "3+3" }, { EXPLODES_1X1, "1x1" }, -#if 0 - { EP_INDESTRUCTIBLE, "indestructible" }, -#endif { -1, NULL } }; @@ -1420,17 +1415,11 @@ static struct ValueTextInfo options_change_direct_action[] = { CE_LEFT_BY_PLAYER, "left by player" }, { CE_DROPPED_BY_PLAYER, "dropped/thrown by player" }, { CE_SWITCHED, "switched" }, -#if 1 { CE_HITTING_SOMETHING, "hitting something" }, { CE_HIT_BY_SOMETHING, "hit by something" }, -#else - { CE_HITTING_SOMETHING, "collision" }, -#endif - #if 0 { CE_BLOCKED, "blocked" }, #endif - { CE_IMPACT, "impact (on something)" }, { CE_SMASHED, "smashed (from above)" }, { CE_COUNT_AT_ZERO, "CE count at zero" }, @@ -1449,10 +1438,8 @@ static struct ValueTextInfo options_change_other_action[] = { CE_PLAYER_COLLECTS_X, "player collects" }, { CE_PLAYER_DROPS_X, "player drops/throws" }, { CE_TOUCHING_X, "touching" }, -#if 1 { CE_HITTING_X, "hitting" }, { CE_HIT_BY_X, "hit by" }, -#endif { CE_SWITCH_OF_X, "switch of" }, { CE_CHANGE_OF_X, "change by page of" }, { CE_EXPLOSION_OF_X, "explosion of" }, @@ -1879,7 +1866,6 @@ static struct char *text_left, *text_right, *infotext; } textbutton_info[ED_NUM_TEXTBUTTONS] = { -#if 1 { ED_ELEMENT_SETTINGS_XPOS(0), ED_COUNTER_YPOS(1), GADGET_ID_PROPERTIES_INFO, GADGET_ID_NONE, @@ -1910,26 +1896,6 @@ static struct 8, "Change", NULL, NULL, "Custom element change configuration" }, -#else - { - ED_ELEMENT_SETTINGS_XPOS(0), ED_COUNTER_YPOS(1), - GADGET_ID_PROPERTIES_INFO, GADGET_ID_NONE, - 11, "Information", - NULL, NULL, "Show information about element" - }, - { - ED_ELEMENT_SETTINGS_XPOS(0) + 166, ED_COUNTER_YPOS(1), - GADGET_ID_PROPERTIES_CONFIG, GADGET_ID_NONE, - 11, "Configure", - NULL, NULL, "Configure element properties" - }, - { - ED_ELEMENT_SETTINGS_XPOS(0) + 332, ED_COUNTER_YPOS(1), - GADGET_ID_PROPERTIES_CHANGE, GADGET_ID_NONE, - 11, "Advanced", - NULL, NULL, "Advanced element configuration" - }, -#endif { -1, ED_ELEMENT_SETTINGS_YPOS(2), GADGET_ID_SAVE_AS_TEMPLATE, GADGET_ID_CUSTOM_USE_TEMPLATE, @@ -2785,17 +2751,10 @@ static int editor_el_emerald_mine[] = EL_AMOEBA_WET, EL_AMOEBA_DRY, -#if 1 EL_EM_KEY_1, EL_EM_KEY_2, EL_EM_KEY_3, EL_EM_KEY_4, -#else - EL_EM_KEY_1_FILE, - EL_EM_KEY_2_FILE, - EL_EM_KEY_3_FILE, - EL_EM_KEY_4_FILE, -#endif EL_EM_GATE_1, EL_EM_GATE_2, @@ -3977,209 +3936,6 @@ editor_elements_info[] = } }; -#if 0 - -static struct -{ - short element; - short element_mapped; -} -forum_sketch_element_mapping[] = -{ - { EL_WALL_SLIPPERY, EL_WALL }, - { EL_EXPANDABLE_WALL, EL_WALL }, - { EL_EXPANDABLE_WALL_HORIZONTAL, EL_WALL }, - { EL_EXPANDABLE_WALL_VERTICAL, EL_WALL }, - { EL_EXPANDABLE_WALL_ANY, EL_WALL }, - { EL_WALL_EMERALD, EL_WALL }, - { EL_WALL_DIAMOND, EL_WALL }, - { EL_WALL_BD_DIAMOND, EL_WALL }, - { EL_WALL_EMERALD_YELLOW, EL_WALL }, - { EL_WALL_EMERALD_RED, EL_WALL }, - { EL_WALL_EMERALD_PURPLE, EL_WALL }, - { EL_ACID_POOL_TOPLEFT, EL_WALL }, - { EL_ACID_POOL_TOPRIGHT, EL_WALL }, - { EL_ACID_POOL_BOTTOMLEFT, EL_WALL }, - { EL_ACID_POOL_BOTTOM, EL_WALL }, - { EL_ACID_POOL_BOTTOMRIGHT, EL_WALL }, - { EL_BD_WALL, EL_WALL }, - - { EL_BD_ROCK, EL_ROCK }, - - { EL_SP_ZONK, EL_ROCK }, - { EL_SP_BASE, EL_SAND }, - { EL_SP_MURPHY, EL_PLAYER_1 }, - { EL_SP_INFOTRON, EL_EMERALD }, - { EL_SP_HARDWARE_GRAY, EL_STEELWALL }, - { EL_SP_EXIT_CLOSED, EL_EXIT_OPEN }, - { EL_SP_DISK_ORANGE, EL_BOMB }, - { EL_SP_DISK_RED, EL_BOMB }, - { EL_SP_DISK_YELLOW, EL_BOMB }, - { EL_SP_PORT_RIGHT, EL_GATE_1_GRAY }, - { EL_SP_PORT_DOWN, EL_GATE_1_GRAY }, - { EL_SP_PORT_LEFT, EL_GATE_1_GRAY }, - { EL_SP_PORT_UP, EL_GATE_1_GRAY }, - { EL_SP_GRAVITY_PORT_RIGHT, EL_GATE_1_GRAY }, - { EL_SP_GRAVITY_PORT_DOWN, EL_GATE_1_GRAY }, - { EL_SP_GRAVITY_PORT_LEFT, EL_GATE_1_GRAY }, - { EL_SP_GRAVITY_PORT_UP, EL_GATE_1_GRAY }, - { EL_SP_PORT_VERTICAL, EL_GATE_1_GRAY }, - { EL_SP_PORT_HORIZONTAL, EL_GATE_1_GRAY }, - { EL_SP_PORT_ANY, EL_GATE_1_GRAY }, - { EL_SP_SNIKSNAK, EL_BUG }, - { EL_SP_ELECTRON, EL_SPACESHIP }, - { EL_SP_CHIP_SINGLE, EL_WALL }, - { EL_SP_CHIP_LEFT, EL_WALL }, - { EL_SP_CHIP_RIGHT, EL_WALL }, - { EL_SP_CHIP_TOP, EL_WALL }, - { EL_SP_CHIP_BOTTOM, EL_WALL }, - { EL_SP_HARDWARE_BASE_1, EL_STEELWALL }, - { EL_SP_HARDWARE_GREEN, EL_STEELWALL }, - { EL_SP_HARDWARE_BLUE, EL_STEELWALL }, - { EL_SP_HARDWARE_RED, EL_STEELWALL }, - { EL_SP_HARDWARE_YELLOW, EL_STEELWALL }, - { EL_SP_HARDWARE_BASE_2, EL_STEELWALL }, - { EL_SP_HARDWARE_BASE_3, EL_STEELWALL }, - { EL_SP_HARDWARE_BASE_3, EL_STEELWALL }, - { EL_SP_HARDWARE_BASE_4, EL_STEELWALL }, - { EL_SP_HARDWARE_BASE_5, EL_STEELWALL }, - { EL_SP_HARDWARE_BASE_6, EL_STEELWALL }, - - { EL_STEELWALL_SLIPPERY, EL_STEELWALL }, - - { EL_EXIT_CLOSED, EL_EXIT_OPEN }, - - { EL_DIAMOND, EL_EMERALD }, - { EL_BD_DIAMOND, EL_EMERALD }, - { EL_EMERALD_YELLOW, EL_EMERALD }, - { EL_EMERALD_RED, EL_EMERALD }, - { EL_EMERALD_PURPLE, EL_EMERALD }, - - { EL_AMOEBA_DEAD, EL_AMOEBA }, - { EL_AMOEBA_DROP, EL_AMOEBA }, - { EL_AMOEBA_WET, EL_AMOEBA }, - { EL_AMOEBA_DRY, EL_AMOEBA }, - { EL_AMOEBA_FULL, EL_AMOEBA }, - { EL_BD_AMOEBA, EL_AMOEBA }, - { EL_AMOEBA_TO_DIAMOND, EL_AMOEBA }, - - { EL_DYNAMITE_ACTIVE, EL_DYNAMITE }, - - { EL_GATE_2_GRAY, EL_GATE_1_GRAY }, - { EL_GATE_3_GRAY, EL_GATE_1_GRAY }, - { EL_GATE_4_GRAY, EL_GATE_1_GRAY }, - - { EL_EM_KEY_1, EL_KEY_1 }, - { EL_EM_KEY_2, EL_KEY_2 }, - { EL_EM_KEY_3, EL_KEY_3 }, - { EL_EM_KEY_4, EL_KEY_4 }, - - { EL_EM_GATE_1, EL_GATE_1 }, - { EL_EM_GATE_2, EL_GATE_2 }, - { EL_EM_GATE_3, EL_GATE_3 }, - { EL_EM_GATE_4, EL_GATE_4 }, - - { EL_EM_GATE_1_GRAY, EL_GATE_1_GRAY }, - { EL_EM_GATE_2_GRAY, EL_GATE_1_GRAY }, - { EL_EM_GATE_3_GRAY, EL_GATE_1_GRAY }, - { EL_EM_GATE_4_GRAY, EL_GATE_1_GRAY }, - - { EL_INVISIBLE_SAND, EL_EMPTY }, - { EL_INVISIBLE_WALL, EL_EMPTY }, - { EL_INVISIBLE_STEELWALL, EL_EMPTY }, - - { EL_PACMAN, EL_YAMYAM }, - { EL_DARK_YAMYAM, EL_YAMYAM }, - - { EL_BD_MAGIC_WALL, EL_MAGIC_WALL }, - - { EL_DYNABOMB_INCREASE_NUMBER, EL_BOMB }, - { EL_DYNABOMB_INCREASE_SIZE, EL_BOMB }, - { EL_DYNABOMB_INCREASE_POWER, EL_BOMB }, - { EL_BLACK_ORB, EL_BOMB }, - { EL_DX_SUPABOMB, EL_BOMB }, - - { EL_SOKOBAN_OBJECT, EL_KEY_1 }, - { EL_SOKOBAN_FIELD_EMPTY, EL_GATE_1_GRAY }, - { EL_SOKOBAN_FIELD_FULL, EL_GATE_1 }, - { EL_SOKOBAN_FIELD_PLAYER, EL_PLAYER_1 }, - - { EL_BD_BUTTERFLY_RIGHT, EL_BD_BUTTERFLY }, - { EL_BD_BUTTERFLY_UP, EL_BD_BUTTERFLY }, - { EL_BD_BUTTERFLY_LEFT, EL_BD_BUTTERFLY }, - { EL_BD_BUTTERFLY_DOWN, EL_BD_BUTTERFLY }, - - { EL_BD_FIREFLY_RIGHT, EL_BD_FIREFLY }, - { EL_BD_FIREFLY_UP, EL_BD_FIREFLY }, - { EL_BD_FIREFLY_LEFT, EL_BD_FIREFLY }, - { EL_BD_FIREFLY_DOWN, EL_BD_FIREFLY }, - - { EL_PLAYER_2, EL_PLAYER_1 }, - { EL_PLAYER_3, EL_PLAYER_1 }, - { EL_PLAYER_4, EL_PLAYER_1 }, - - { EL_BUG_RIGHT, EL_BUG }, - { EL_BUG_UP, EL_BUG }, - { EL_BUG_LEFT, EL_BUG }, - { EL_BUG_DOWN, EL_BUG }, - - { EL_SPACESHIP_RIGHT, EL_SPACESHIP }, - { EL_SPACESHIP_UP, EL_SPACESHIP }, - { EL_SPACESHIP_LEFT, EL_SPACESHIP }, - { EL_SPACESHIP_DOWN, EL_SPACESHIP }, - - { EL_PACMAN_RIGHT, EL_YAMYAM }, - { EL_PACMAN_UP, EL_YAMYAM }, - { EL_PACMAN_LEFT, EL_YAMYAM }, - { EL_PACMAN_DOWN, EL_YAMYAM }, - - { -1, -1 } -}; - -static struct -{ - short element; - char *element_string; -} -forum_sketch_element_strings[] = -{ - { EL_PLAYER_1, "p" }, - { EL_EMPTY, "_" }, - { EL_SAND, "s" }, - { EL_ROCK, "b" }, - { EL_EMERALD, "e" }, - { EL_BUG, "u" }, - { EL_SPACESHIP, "h" }, - { EL_BD_FIREFLY, "f" }, - { EL_BD_BUTTERFLY, "b" }, - { EL_AMOEBA, "a" }, - { EL_YAMYAM, "y" }, - { EL_WALL, "w" }, - { EL_STEELWALL, "t" }, - { EL_MAGIC_WALL, "m" }, - { EL_EXIT_OPEN, "x" }, - { EL_DYNAMITE, "d" }, - { EL_KEY_1, "1" }, - { EL_KEY_2, "2" }, - { EL_KEY_3, "3" }, - { EL_KEY_4, "4" }, - { EL_GATE_1, "5" }, - { EL_GATE_2, "6" }, - { EL_GATE_3, "7" }, - { EL_GATE_4, "8" }, - { EL_GATE_1_GRAY, "9" }, - { EL_BOMB, "@" }, - { EL_ROBOT, "r" }, - { EL_ROBOT_WHEEL, "0" }, - { EL_NUT, "n" }, - { EL_CUSTOM_1, "c" }, - { EL_CHAR_QUESTION, "?" }, - - { -1, NULL } -}; - -#endif - /* ----------------------------------------------------------------------------- @@ -4235,42 +3991,32 @@ static char *getElementInfoText(int element) static void ReinitializeElementList() { - static boolean initialized = FALSE; int pos = 0; int i, j; checked_free(editor_elements); -#if 0 - if (!initialized) -#else - /* reload user defined element list for each invocation of level editor */ -#endif - { - /* initialize optional user defined element list */ - LoadUserDefinedEditorElementList(&editor_el_user_defined_ptr, - &num_editor_el_user_defined); + /* reload optional user defined element list for each invocation of editor */ + LoadUserDefinedEditorElementList(&editor_el_user_defined_ptr, + &num_editor_el_user_defined); - /* initialize list of empty elements (used for padding, if needed) */ - for (i = 0; i < ED_NUM_ELEMENTLIST_BUTTONS; i++) - editor_el_empty[i] = EL_EMPTY; + /* initialize list of empty elements (used for padding, if needed) */ + for (i = 0; i < ED_NUM_ELEMENTLIST_BUTTONS; i++) + editor_el_empty[i] = EL_EMPTY; - /* do some sanity checks for each element from element list */ - for (i = 0; editor_elements_info[i].setup_value != NULL; i++) + /* do some sanity checks for each element from element list */ + for (i = 0; editor_elements_info[i].setup_value != NULL; i++) + { + for (j = 0; j < *editor_elements_info[i].element_list_size; j++) { - for (j = 0; j < *editor_elements_info[i].element_list_size; j++) - { - int element = (*editor_elements_info[i].element_list)[j]; + int element = (*editor_elements_info[i].element_list)[j]; - if (element >= NUM_FILE_ELEMENTS) - Error(ERR_WARN, "editor element %d is runtime element", element); + if (element >= NUM_FILE_ELEMENTS) + Error(ERR_WARN, "editor element %d is runtime element", element); - if (strcmp(getElementInfoText(element), INFOTEXT_UNKNOWN_ELEMENT) == 0) - Error(ERR_WARN, "no element description for element %d", element); - } + if (strcmp(getElementInfoText(element), INFOTEXT_UNKNOWN_ELEMENT) == 0) + Error(ERR_WARN, "no element description for element %d", element); } - - initialized = TRUE; } num_editor_elements = 0; @@ -5502,14 +5248,6 @@ static void MapCounterButtons(int id) struct GadgetInfo *gi_down = level_editor_gadget[gadget_id_down]; struct GadgetInfo *gi_text = level_editor_gadget[gadget_id_text]; struct GadgetInfo *gi_up = level_editor_gadget[gadget_id_up]; -#if 0 - char infotext[MAX_OUTPUT_LINESIZE + 1]; - int max_infotext_len = getMaxInfoTextLength(); - int xoffset_left = 0; - int yoffset_left = ED_BORDER_SIZE; - int xoffset_right = getCounterGadgetWidth(); - int yoffset_right = ED_BORDER_SIZE; -#else int xoffset_left = getTextWidthForGadget(counterbutton_info[id].text_left); int xoffset_right = ED_GADGET_TEXT_DISTANCE; int yoffset_above = MINI_TILEX + ED_GADGET_DISTANCE; @@ -5519,7 +5257,6 @@ static void MapCounterButtons(int id) int y_above = gi_down->y - yoffset_above; int x = gi_down->x; int y; /* set after gadget position was modified */ -#endif /* set position for "value1/value2" counter gadgets (score in most cases) */ if (id == ED_COUNTER_ID_ELEMENT_VALUE1 || @@ -5956,40 +5693,6 @@ static int setSelectboxValue(int selectbox_id, int new_value) static void copy_custom_element_settings(int element_from, int element_to) { -#if 0 - struct ElementInfo ei_to_old = element_info[element_to]; - struct ElementInfo *ei_from = &element_info[element_from]; - struct ElementInfo *ei_to = &element_info[element_to]; - int i; - - /* ---------- copy whole element structure ---------- */ - *ei_to = *ei_from; - - /* ---------- restore structure pointers which cannot be copied ---------- */ - ei_to->token_name = ei_to_old.token_name; - ei_to->class_name = ei_to_old.class_name; - ei_to->editor_description = ei_to_old.editor_description; - ei_to->custom_description = ei_to_old.custom_description; - ei_to->change_page = ei_to_old.change_page; - ei_to->change = ei_to_old.change; - ei_to->group = ei_to_old.group; - - /* ---------- copy element base properties ---------- */ - Properties[element_to][EP_BITFIELD_BASE] = - Properties[element_from][EP_BITFIELD_BASE]; - - /* ---------- reinitialize and copy change pages ---------- */ - setElementChangePages(ei_to, ei_to->num_change_pages); - - for (i=0; i < ei_to->num_change_pages; i++) - ei_to->change_page[i] = ei_from->change_page[i]; - - /* ---------- copy group element info ---------- */ - if (ei_from->group != NULL && ei_to->group != NULL) /* group or internal */ - *ei_to->group = *ei_from->group; - -#else - struct ElementInfo *ei_from = &element_info[element_from]; struct ElementInfo *ei_to = &element_info[element_to]; int i, x, y; @@ -6051,8 +5754,6 @@ static void copy_custom_element_settings(int element_from, int element_to) if (ei_from->group != NULL && ei_to->group != NULL) /* group or internal */ *ei_to->group = *ei_from->group; -#endif - /* mark this custom element as modified */ ei_to->modified_settings = TRUE; } @@ -6260,43 +5961,6 @@ static void CopyCustomElementPropertiesToEditor(int element) DONT_COLLIDE_WITH(element) || DONT_RUN_INTO(element)); -#if 0 - /* set explosion type selectbox help value */ - custom_element.explosion_type = - ( -#if 0 - IS_INDESTRUCTIBLE(element) ? EP_INDESTRUCTIBLE : -#endif - CAN_EXPLODE_1X1(element) ? EP_CAN_EXPLODE_1X1 : - CAN_EXPLODE_3X3(element) ? EP_CAN_EXPLODE_3X3 : - CAN_EXPLODE_CROSS(element) ? EP_CAN_EXPLODE_CROSS : - custom_element.explosion_type); - custom_element_properties[EP_CAN_EXPLODE_AT_ALL] = - ( -#if 0 - IS_INDESTRUCTIBLE(element) || -#endif - CAN_EXPLODE_1X1(element) || - CAN_EXPLODE_3X3(element) || - CAN_EXPLODE_CROSS(element)); -#endif - -#if 0 - /* special case: sub-settings dependent from main setting */ -#if 0 - custom_element.can_explode_by_fire = CAN_EXPLODE_BY_FIRE(element); - custom_element.can_explode_smashed = CAN_EXPLODE_SMASHED(element); - custom_element.can_explode_impact = CAN_EXPLODE_IMPACT(element); -#else - if (CAN_EXPLODE_BY_FIRE(element)) - custom_element.can_explode_by_fire = TRUE; - if (CAN_EXPLODE_SMASHED(element)) - custom_element.can_explode_smashed = TRUE; - if (CAN_EXPLODE_IMPACT(element)) - custom_element.can_explode_impact = TRUE; -#endif -#endif - /* ---------- element settings: advanced (custom elements) --------------- */ /* set "change by direct action" selectbox help value */ @@ -6344,7 +6008,6 @@ static void CopyGroupElementPropertiesToEditor(int element) static void CopyClassicElementPropertiesToEditor(int element) { -#if 1 if (ELEM_IS_PLAYER(element) || COULD_MOVE_INTO_ACID(element)) custom_element_properties[EP_CAN_MOVE_INTO_ACID] = getMoveIntoAcidProperty(&level, element); @@ -6352,17 +6015,6 @@ static void CopyClassicElementPropertiesToEditor(int element) if (MAYBE_DONT_COLLIDE_WITH(element)) custom_element_properties[EP_DONT_COLLIDE_WITH] = getDontCollideWithProperty(&level, element); -#else - - if (COULD_MOVE_INTO_ACID(element)) - { - int bit_nr = get_special_property_bit(element, EP_CAN_MOVE_INTO_ACID); - - if (bit_nr > -1) - custom_element_properties[EP_CAN_MOVE_INTO_ACID] = - ((level.can_move_into_acid_bits & (1 << bit_nr)) != 0); - } -#endif } static void CopyElementPropertiesToEditor(int element) @@ -6379,9 +6031,6 @@ static void CopyCustomElementPropertiesToGame(int element) { int i; int access_type_and_layer; -#if 0 - boolean can_explode; -#endif /* mark that this custom element has been modified */ custom_element.modified_settings = TRUE; @@ -6447,48 +6096,6 @@ static void CopyCustomElementPropertiesToGame(int element) custom_element_properties[custom_element.deadliness] = custom_element_properties[EP_DEADLY]; -#if 0 - /* set explosion type property from checkbox and selectbox */ -#if 0 - custom_element_properties[EP_INDESTRUCTIBLE] = FALSE; -#endif - custom_element_properties[EP_CAN_EXPLODE_1X1] = FALSE; - custom_element_properties[EP_CAN_EXPLODE_3X3] = FALSE; - custom_element_properties[EP_CAN_EXPLODE_CROSS] = FALSE; - custom_element_properties[EP_CAN_EXPLODE_BY_FIRE] = FALSE; - custom_element_properties[EP_CAN_EXPLODE_SMASHED] = FALSE; - custom_element_properties[EP_CAN_EXPLODE_IMPACT] = FALSE; - custom_element_properties[custom_element.explosion_type] = - custom_element_properties[EP_CAN_EXPLODE_AT_ALL]; -#endif - -#if 0 - /* special case: sub-settings dependent from main setting */ -#if 0 - can_explode = (custom_element_properties[EP_CAN_EXPLODE_1X1] || - custom_element_properties[EP_CAN_EXPLODE_3X3] || - custom_element_properties[EP_CAN_EXPLODE_CROSS]); - custom_element_properties[EP_CAN_EXPLODE_BY_FIRE] = - (can_explode && custom_element.can_explode_by_fire); - custom_element_properties[EP_CAN_EXPLODE_SMASHED] = - (can_explode && custom_element.can_explode_smashed); - custom_element_properties[EP_CAN_EXPLODE_IMPACT] = - (can_explode && custom_element.can_explode_impact); -#else - if (custom_element_properties[EP_CAN_EXPLODE_1X1] || - custom_element_properties[EP_CAN_EXPLODE_3X3] || - custom_element_properties[EP_CAN_EXPLODE_CROSS]) - { - custom_element_properties[EP_CAN_EXPLODE_BY_FIRE] = - custom_element.can_explode_by_fire; - custom_element_properties[EP_CAN_EXPLODE_SMASHED] = - custom_element.can_explode_smashed; - custom_element_properties[EP_CAN_EXPLODE_IMPACT] = - custom_element.can_explode_impact; - } -#endif -#endif - /* ---------- element settings: advanced (custom elements) --------------- */ /* set player change event from checkbox and selectbox */ @@ -6550,7 +6157,6 @@ static void CopyGroupElementPropertiesToGame(int element) static void CopyClassicElementPropertiesToGame(int element) { -#if 1 if (ELEM_IS_PLAYER(element) || COULD_MOVE_INTO_ACID(element)) setMoveIntoAcidProperty(&level, element, custom_element_properties[EP_CAN_MOVE_INTO_ACID]); @@ -6558,21 +6164,6 @@ static void CopyClassicElementPropertiesToGame(int element) if (MAYBE_DONT_COLLIDE_WITH(element)) setDontCollideWithProperty(&level, element, custom_element_properties[EP_DONT_COLLIDE_WITH]); -#else - - if (COULD_MOVE_INTO_ACID(element)) - { - int bit_nr = get_special_property_bit(element, EP_CAN_MOVE_INTO_ACID); - - if (bit_nr > -1) - { - level.can_move_into_acid_bits &= ~(1 << bit_nr); - - if (custom_element_properties[EP_CAN_MOVE_INTO_ACID]) - level.can_move_into_acid_bits |= (1 << bit_nr); - } - } -#endif } static void CopyElementPropertiesToGame(int element) @@ -6612,11 +6203,6 @@ void DrawLevelEd() BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, DOOR_GFX_PAGEX6, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE, DX, DY); -#if 0 - /* draw mouse button brush elements */ - RedrawDrawingElements(); -#endif - /* draw bigger door */ DrawSpecialEditorDoor(); @@ -6627,9 +6213,6 @@ void DrawLevelEd() redraw_mask |= REDRAW_ALL; ReinitializeElementListButtons(); /* custom element may look different */ -#if 0 - ModifyEditorElementList(); /* may be needed for custom elements */ -#endif UnmapTapeButtons(); MapControlButtons(); @@ -7064,8 +6647,6 @@ static boolean PrintInfoText(char *text, int font_nr, int start_line) return TRUE; } -#if 1 - static int PrintElementDescriptionFromFile(char *filename, int start_line) { int font_nr = FONT_TEXT_2; @@ -7082,97 +6663,6 @@ static int PrintElementDescriptionFromFile(char *filename, int start_line) max_lines_per_screen); } -#else - -static int PrintElementDescriptionFromFile(char *filename, int start_line) -{ - int font_nr = FONT_TEXT_2; - int font_width = getFontWidth(font_nr); - int font_height = getFontHeight(font_nr); - int pad_x = ED_ELEMENT_SETTINGS_XPOS(0); - int pad_y = ED_ELEMENT_SETTINGS_YPOS(0) + ED_BORDER_SIZE; - int sx = SX + pad_x; - int sy = SY + pad_y; - int max_chars_per_line = (SXSIZE - 2 * pad_x) / font_width; - int max_lines_per_screen = (SYSIZE - pad_y) / font_height - 1; - int current_line = start_line; - char line[MAX_LINE_LEN]; - char buffer[max_chars_per_line + 1]; - int buffer_len; - FILE *file; - - if (current_line >= max_lines_per_screen) - return 0; - - if (filename == NULL) - return 0; - - if (!(file = fopen(filename, MODE_READ))) - return 0; - - buffer[0] = '\0'; - buffer_len = 0; - - while (!feof(file) && current_line < max_lines_per_screen) - { - char *line_ptr; - boolean last_line_was_empty = TRUE; - - /* read next line of input file */ - if (!fgets(line, MAX_LINE_LEN, file)) - break; - - /* skip comments (lines directly beginning with '#') */ - if (line[0] == '#') - continue; - - /* cut trailing newline from input line */ - for (line_ptr = line; *line_ptr; line_ptr++) - { - if (*line_ptr == '\n' || *line_ptr == '\r') - { - *line_ptr = '\0'; - break; - } - } - - if (strlen(line) == 0) /* special case: force empty line */ - strcpy(line, "\n"); - - line_ptr = line; - - while (*line_ptr && current_line < max_lines_per_screen) - { - boolean buffer_filled = RenderLineToBuffer(&line_ptr, - buffer, &buffer_len, - last_line_was_empty, - max_chars_per_line); - if (buffer_filled) - { - DrawText(sx, sy + current_line * font_height, buffer, font_nr); - current_line++; - - last_line_was_empty = (buffer_len == 0); - - buffer[0] = '\0'; - buffer_len = 0; - } - } - } - - fclose(file); - - if (buffer_len > 0 && current_line < max_lines_per_screen) - { - DrawText(sx, sy + current_line * font_height, buffer, font_nr); - current_line++; - } - - return (current_line - start_line); -} - -#endif - static void DrawPropertiesTabulatorGadgets() { struct GadgetInfo *gd_gi = level_editor_gadget[GADGET_ID_PROPERTIES_INFO]; @@ -7417,17 +6907,10 @@ static struct { EL_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING }, { EL_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING }, { EL_KEY_4, &level.score[SC_KEY], TEXT_COLLECTING }, -#if 1 { EL_EM_KEY_1, &level.score[SC_KEY], TEXT_COLLECTING }, { EL_EM_KEY_2, &level.score[SC_KEY], TEXT_COLLECTING }, { EL_EM_KEY_3, &level.score[SC_KEY], TEXT_COLLECTING }, { EL_EM_KEY_4, &level.score[SC_KEY], TEXT_COLLECTING }, -#else - { EL_EM_KEY_1_FILE, &level.score[SC_KEY], TEXT_COLLECTING }, - { EL_EM_KEY_2_FILE, &level.score[SC_KEY], TEXT_COLLECTING }, - { EL_EM_KEY_3_FILE, &level.score[SC_KEY], TEXT_COLLECTING }, - { EL_EM_KEY_4_FILE, &level.score[SC_KEY], TEXT_COLLECTING }, -#endif { EL_EMC_KEY_5, &level.score[SC_KEY], TEXT_COLLECTING }, { EL_EMC_KEY_6, &level.score[SC_KEY], TEXT_COLLECTING }, { EL_EMC_KEY_7, &level.score[SC_KEY], TEXT_COLLECTING }, @@ -7986,6 +7469,7 @@ static void DrawArc(int from_x, int from_y, int to_x, int to_y, } #define DRAW_CIRCLES_BUTTON_AVAILABLE 0 + #if DRAW_CIRCLES_BUTTON_AVAILABLE static void DrawCircle(int from_x, int from_y, int to_x, int to_y, int element, boolean change_level) @@ -8073,35 +7557,6 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y, int element = brush_buffer[x][y]; int element_mapped = element; -#if 0 - char *element_string = "?"; - int k; - - for (k = 0; forum_sketch_element_mapping[k].element != -1; k++) - { - if (forum_sketch_element_mapping[k].element == element) - { - element_mapped = forum_sketch_element_mapping[k].element_mapped; - break; - } - } - - if (IS_CUSTOM_ELEMENT(element)) - element_mapped = EL_CUSTOM_1; - - for (k = 0; forum_sketch_element_strings[k].element != -1; k++) - { - if (forum_sketch_element_strings[k].element == element_mapped) - { - element_string = forum_sketch_element_strings[k].element_string; - break; - } - } - - printf("`%s", element_string); - -#else - if (IS_CUSTOM_ELEMENT(element)) element_mapped = EL_CUSTOM_START; else if (IS_GROUP_ELEMENT(element)) @@ -8110,7 +7565,6 @@ static void CopyBrushExt(int from_x, int from_y, int to_x, int to_y, element_mapped = EL_UNKNOWN; printf("%c%03d", (mode == CB_DUMP_BRUSH ? '`' : 'ΒΈ'), element_mapped); -#endif } printf("\n"); @@ -8573,12 +8027,12 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) return; #if 1 - if (!IS_VALID_BUTTON(button) && !button_release_event) + if (!IS_VALID_BUTTON(button)) return; -#else +#endif + if (!button && !button_release_event) return; -#endif /* automatically switch to 'single item' drawing mode, if needed */ actual_drawing_function = @@ -9464,16 +8918,7 @@ static void HandleControlButtons(struct GadgetInfo *gi) level_editor_test_game = TRUE; -#if 1 StartGameActions(FALSE, setup.autorecord, NEW_RANDOMIZE); -#else - if (setup.autorecord) - TapeStartRecording(); - - game_status = GAME_MODE_PLAYING; - - InitGame(); -#endif } break; @@ -9789,35 +9234,16 @@ static void HandleDrawingAreaInfo(struct GadgetInfo *gi) break; } -#if 1 if (actual_drawing_function == GADGET_ID_PICK_ELEMENT) sprintf(infotext, "%s: %d, %d", text, lx, ly); else sprintf(infotext, "%s: %d, %d", text, ABS(lx - start_lx) + 1, ABS(ly - start_ly) + 1); -#else - if (actual_drawing_function == GADGET_ID_PICK_ELEMENT) - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, - "%s: %d, %d", infotext, lx, ly); - else - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, - "%s: %d, %d", infotext, - ABS(lx - start_lx) + 1, ABS(ly - start_ly) + 1); -#endif } -#if 1 else if (actual_drawing_function == GADGET_ID_PICK_ELEMENT) strncpy(infotext, getElementInfoText(Feld[lx][ly]), max_infotext_len); else sprintf(infotext, "Level position: %d, %d", lx, ly); -#else - else if (actual_drawing_function == GADGET_ID_PICK_ELEMENT) - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, - "%s", getElementInfoText(Feld[lx][ly])); - else - DrawTextF(INFOTEXT_XPOS - SX, INFOTEXT_YPOS - SY, FONT_TEXT_2, - "Level position: %d, %d", lx, ly); -#endif } /* misuse this function to draw brush cursor, if needed */ diff --git a/src/events.c b/src/events.c index 8c3be2c4..d7d023e7 100644 --- a/src/events.c +++ b/src/events.c @@ -104,10 +104,8 @@ static boolean NextValidEvent(Event *event) if (FilterMouseMotionEvents(event)) handle_this_event = TRUE; -#if 1 if (SkipPressedMouseMotionEvent(event)) handle_this_event = FALSE; -#endif if (handle_this_event) return TRUE; @@ -322,11 +320,6 @@ void HandleButtonEvent(ButtonEvent *event) else button_status = MB_RELEASED; -#if 0 - printf("::: button %s\n", event->type == EVENT_BUTTONPRESS ? - "pressed" : "released"); -#endif - HandleButton(event->x, event->y, button_status); } @@ -335,17 +328,11 @@ void HandleMotionEvent(MotionEvent *event) if (!PointerInWindow(window)) return; /* window and pointer are on different screens */ -#if 1 if (button_status == MB_RELEASED && game_status != GAME_MODE_EDITOR) return; -#endif motion_status = TRUE; -#if 0 - printf("::: %d, %d\n", event->x, event->y); -#endif - HandleButton(event->x, event->y, button_status); } @@ -696,23 +683,7 @@ void HandleKey(Key key, int key_status) if (game_status == GAME_MODE_MAIN && key == setup.shortcut.toggle_pause) { -#if 1 StartGameActions(options.network, setup.autorecord, NEW_RANDOMIZE); -#else - if (setup.autorecord) - TapeStartRecording(); - -#if defined(NETWORK_AVALIABLE) - if (options.network) - SendToServer_StartPlaying(); - else -#endif - { - game_status = GAME_MODE_PLAYING; - StopAnimation(); - InitGame(); - } -#endif return; } @@ -884,32 +855,6 @@ void HandleKey(Key key, int key_status) } break; -#if 0 - case KSYM_a: - if (ScrollStepSize == TILEX/8) - ScrollStepSize = TILEX/4; - else - ScrollStepSize = TILEX/8; - printf("ScrollStepSize == %d\n", ScrollStepSize); - break; -#endif - -#if 0 - case KSYM_m: - if (MoveSpeed == 8) - { - MoveSpeed = 4; - ScrollStepSize = TILEX/4; - } - else - { - MoveSpeed = 8; - ScrollStepSize = TILEX/8; - } - printf("MoveSpeed == %d\n", MoveSpeed); - break; -#endif - case KSYM_f: ScrollStepSize = TILEX/8; printf("ScrollStepSize == %d (1/8)\n", ScrollStepSize); @@ -934,26 +879,6 @@ void HandleKey(Key key, int key_status) printf("::: currently using game engine version %d\n", game.engine_version); break; - -#if 0 - - case KSYM_z: - { - int i; - - for (i = 0; i < MAX_PLAYERS; i++) - { - printf("Player %d:\n", i); - printf(" jx == %d, jy == %d\n", - stored_player[i].jx, stored_player[i].jy); - printf(" last_jx == %d, last_jy == %d\n", - stored_player[i].last_jx, stored_player[i].last_jy); - } - printf("\n"); - } - - break; -#endif #endif default: diff --git a/src/files.c b/src/files.c index f5275728..1c9d6e9b 100644 --- a/src/files.c +++ b/src/files.c @@ -178,11 +178,6 @@ static void setLevelInfoToDefaults(struct LevelInfo *level) level->block_last_field = FALSE; /* EM does not block by default */ level->sp_block_last_field = TRUE; /* SP blocks the last field */ -#if 0 /* !!! THIS IS NOT A LEVEL SETTING => LOGIC MOVED TO "game.c" !!! */ - level->block_delay = 8; /* when blocking, block 8 frames */ - level->sp_block_delay = 9; /* SP indeed blocks 9 frames, not 8 */ -#endif - level->can_move_into_acid_bits = ~0; /* everything can move into acid */ level->dont_collide_with_bits = ~0; /* always deadly when colliding */ @@ -572,48 +567,6 @@ static int getFiletypeFromID(char *filetype_id) return filetype; } -#if 0 -static void OLD_determineLevelFileInfo_Filename(struct LevelFileInfo *lfi) -{ - /* special case: level number is negative => check for level template file */ - if (lfi->nr < 0) - { - setLevelFileInfo_SingleLevelFilename(lfi, LEVEL_FILE_TYPE_RND); - - return; - } - - if (leveldir_current->level_filename != NULL) - { - int filetype = getFiletypeFromID(leveldir_current->level_filetype); - - /* check for file name/pattern specified in "levelinfo.conf" */ - setLevelFileInfo_SingleLevelFilename(lfi, filetype); - - if (fileExists(lfi->filename)) - return; - } - - /* check for native Rocks'n'Diamonds level file */ - setLevelFileInfo_SingleLevelFilename(lfi, LEVEL_FILE_TYPE_RND); - if (fileExists(lfi->filename)) - return; - - /* check for classic Emerald Mine level file */ - setLevelFileInfo_SingleLevelFilename(lfi, LEVEL_FILE_TYPE_EM); - if (fileExists(lfi->filename)) - return; - - /* check for various packed level file formats */ - setLevelFileInfo_PackedLevelFilename(lfi, LEVEL_FILE_TYPE_UNKNOWN); - if (fileExists(lfi->filename)) - return; - - /* no known level file found -- try to use default values */ - setLevelFileInfo_SingleLevelFilename(lfi, LEVEL_FILE_TYPE_UNKNOWN); -} -#endif - static void determineLevelFileInfo_Filename(struct LevelFileInfo *lfi) { int nr = lfi->nr; @@ -692,7 +645,6 @@ static void determineLevelFileInfo_Filetype(struct LevelFileInfo *lfi) lfi->type = getFileTypeFromBasename(lfi->basename); } -#if 1 static void setLevelFileInfo(struct LevelFileInfo *level_file_info, int nr) { /* always start with reliable default values */ @@ -704,24 +656,6 @@ static void setLevelFileInfo(struct LevelFileInfo *level_file_info, int nr) determineLevelFileInfo_Filetype(level_file_info); } -#else - -static struct LevelFileInfo *getLevelFileInfo(int nr) -{ - static struct LevelFileInfo level_file_info; - - /* always start with reliable default values */ - setFileInfoToDefaults(&level_file_info); - - level_file_info.nr = nr; /* set requested level number */ - - determineLevelFileInfo_Filename(&level_file_info); - determineLevelFileInfo_Filetype(&level_file_info); - - return &level_file_info; -} -#endif - /* ------------------------------------------------------------------------- */ /* functions for loading R'n'D level */ /* ------------------------------------------------------------------------- */ @@ -730,7 +664,6 @@ int getMappedElement(int element) { /* remap some (historic, now obsolete) elements */ -#if 1 switch (element) { case EL_PLAYER_OBSOLETE: @@ -773,18 +706,6 @@ int getMappedElement(int element) } break; } -#else - if (element >= NUM_FILE_ELEMENTS) - { - Error(ERR_WARN, "invalid level element %d", element); - - element = EL_UNKNOWN; - } - else if (element == EL_PLAYER_OBSOLETE) - element = EL_PLAYER_1; - else if (element == EL_KEY_OBSOLETE) - element = EL_KEY_1; -#endif return element; } @@ -1299,14 +1220,12 @@ static int LoadLevel_CUS4(FILE *file, int chunk_size, struct LevelInfo *level) change->trigger_side = getFile8Bit(file); -#if 1 change->trigger_player = getFile8Bit(file); change->trigger_page = getFile8Bit(file); change->trigger_page = (change->trigger_page == CH_PAGE_ANY_FILE ? CH_PAGE_ANY : (1 << change->trigger_page)); -#if 1 change->has_action = getFile8Bit(file); change->action_type = getFile8Bit(file); change->action_mode = getFile8Bit(file); @@ -1314,16 +1233,6 @@ static int LoadLevel_CUS4(FILE *file, int chunk_size, struct LevelInfo *level) /* some free bytes for future change property values and padding */ ReadUnusedBytesFromFile(file, 1); -#else - /* some free bytes for future change property values and padding */ - ReadUnusedBytesFromFile(file, 6); -#endif - -#else - - /* some free bytes for future change property values and padding */ - ReadUnusedBytesFromFile(file, 8); -#endif } /* mark this custom element as modified */ @@ -1936,7 +1845,7 @@ static void OLD_LoadLevelFromFileInfo_EM(struct LevelInfo *level, level->field[x][y] = EL_PLAYER_2; } -#else +#endif void CopyNativeLevel_RND_to_EM(struct LevelInfo *level) { @@ -2146,8 +2055,6 @@ static void LoadLevelFromFileInfo_EM(struct LevelInfo *level, level->no_valid_file = TRUE; } -#endif - void CopyNativeLevel_RND_to_Native(struct LevelInfo *level) { if (level->game_engine_type == GAME_ENGINE_TYPE_EM) @@ -2568,22 +2475,8 @@ static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename) #endif /* determine correct game engine version of current level */ -#if 1 if (!leveldir_current->latest_engine) -#else - if (IS_LEVELCLASS_CONTRIB(leveldir_current) || - IS_LEVELCLASS_PRIVATE(leveldir_current) || - IS_LEVELCLASS_UNDEFINED(leveldir_current)) -#endif { -#if 0 - printf("\n::: This level is private or contributed: '%s'\n", filename); -#endif - -#if 0 - printf("\n::: Use the stored game engine version for this level\n"); -#endif - /* For all levels which are not forced to use the latest game engine version (normally user contributed, private and undefined levels), use the version of the game engine the levels were created for. @@ -2594,21 +2487,9 @@ static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename) pre-2.0 levels, where the game version is still taken from the file format version used to store the level -- see above). */ -#if 1 /* player was faster than enemies in 1.0.0 and before */ if (level->file_version == FILE_VERSION_1_0) level->double_speed = TRUE; -#else - /* do some special adjustments to support older level versions */ - if (level->file_version == FILE_VERSION_1_0) - { - Error(ERR_WARN, "level file '%s' has version number 1.0", filename); - Error(ERR_WARN, "using high speed movement for player"); - - /* player was faster than monsters in (pre-)1.0 levels */ - level->double_speed = TRUE; - } -#endif /* default behaviour for EM style gems was "slippery" only in 2.0.1 */ if (level->game_version == VERSION_IDENT(2,0,1,0)) @@ -2653,38 +2534,9 @@ static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename) } } } - -#if 0 /* !!! MOVED TO "game.c", BECAUSE CAN CHANGE INSIDE LEVEL EDITOR !!! */ -#if 1 /* USE_NEW_BLOCK_STYLE */ - /* blocking the last field when moving was corrected in version 3.1.1 */ - if (level->game_version < VERSION_IDENT(3,1,1,0)) - { -#if 0 - printf("::: %d\n", level->block_last_field); -#endif - - /* even "not blocking" was blocking the last field for one frame */ - level->block_delay = (level->block_last_field ? 7 : 1); - level->sp_block_delay = (level->sp_block_last_field ? 7 : 1); - - level->block_last_field = TRUE; - level->sp_block_last_field = TRUE; - } -#endif -#endif - } else /* always use the latest game engine version */ { -#if 0 - printf("\n::: ALWAYS USE LATEST ENGINE FOR THIS LEVEL: [%d] '%s'\n", - leveldir_current->sort_priority, filename); -#endif - -#if 0 - printf("\n::: Use latest game engine version for this level.\n"); -#endif - /* For all levels which are forced to use the latest game engine version (normally all but user contributed, private and undefined levels), set the game engine version to the actual version; this allows for actual @@ -2693,11 +2545,6 @@ static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename) of the corresponding game more accurate, while (hopefully) not breaking existing levels created from other players. */ -#if 0 - printf("::: changing engine from %d to %d\n", - level->game_version, GAME_VERSION_ACTUAL); -#endif - level->game_version = GAME_VERSION_ACTUAL; /* Set special EM style gems behaviour: EM style gems slip down from @@ -2710,10 +2557,6 @@ static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename) if (level->file_version < FILE_VERSION_2_0) level->em_slippery_gems = TRUE; } - -#if 0 - printf("::: => %d\n", level->game_version); -#endif } static void LoadLevel_InitElements(struct LevelInfo *level, char *filename) @@ -2751,31 +2594,6 @@ static void LoadLevel_InitElements(struct LevelInfo *level, char *filename) } } -#if 0 - /* !!! TESTS SHOWED THAT THIS CODE SEGMENT IS NOT NEEDED FOR ANY LEVEL !!! */ - - /* some custom element change events get mapped since version 3.0.3 */ -#if 1 - if (level->game_version >= VERSION_IDENT(3,0,3,0) && - level->game_version <= VERSION_IDENT(3,2,0,3)) -#endif - { - for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) - { - int element = EL_CUSTOM_START + i; - - if (HAS_CHANGE_EVENT(element, CE_BY_PLAYER_OBSOLETE) || - HAS_CHANGE_EVENT(element, CE_BY_COLLISION_OBSOLETE)) - { - SET_CHANGE_EVENT(element, CE_BY_PLAYER_OBSOLETE, FALSE); - SET_CHANGE_EVENT(element, CE_BY_COLLISION_OBSOLETE, FALSE); - - SET_CHANGE_EVENT(element, CE_BY_DIRECT_ACTION, TRUE); - } - } - } -#endif - /* initialize "can_change" field for old levels with only one change page */ if (level->game_version <= VERSION_IDENT(3,0,2,0)) { @@ -2842,31 +2660,6 @@ static void LoadLevel_InitElements(struct LevelInfo *level, char *filename) } } -#if 0 - /* set default push delay values (corrected since version 3.0.7-1) */ - if (level->game_version < VERSION_IDENT(3,0,7,1)) - { - game.default_push_delay_fixed = 2; - game.default_push_delay_random = 8; - } - else - { - game.default_push_delay_fixed = 8; - game.default_push_delay_random = 8; - } - - /* set uninitialized push delay values of custom elements in older levels */ - for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) - { - int element = EL_CUSTOM_START + i; - - if (element_info[element].push_delay_fixed == -1) - element_info[element].push_delay_fixed = game.default_push_delay_fixed; - if (element_info[element].push_delay_random == -1) - element_info[element].push_delay_random = game.default_push_delay_random; - } -#endif - /* map elements that have changed in newer versions */ level->amoeba_content = getMappedElementByVersion(level->amoeba_content, level->game_version); @@ -2887,37 +2680,9 @@ static void LoadLevel_InitPlayfield(struct LevelInfo *level, char *filename) /* map elements that have changed in newer versions */ for (y = 0; y < level->fieldy; y++) - { for (x = 0; x < level->fieldx; x++) - { - int element = level->field[x][y]; - -#if 1 - element = getMappedElementByVersion(element, level->game_version); -#else - if (level->game_version <= VERSION_IDENT(2,2,0,0)) - { - /* map game font elements */ - element = (element == EL_CHAR('[') ? EL_CHAR_AUMLAUT : - element == EL_CHAR('\\') ? EL_CHAR_OUMLAUT : - element == EL_CHAR(']') ? EL_CHAR_UUMLAUT : - element == EL_CHAR('^') ? EL_CHAR_COPYRIGHT : element); - } - - if (level->game_version < VERSION_IDENT(3,0,0,0)) - { - /* map Supaplex gravity tube elements */ - element = (element == EL_SP_GRAVITY_PORT_LEFT ? EL_SP_PORT_LEFT : - element == EL_SP_GRAVITY_PORT_RIGHT ? EL_SP_PORT_RIGHT : - element == EL_SP_GRAVITY_PORT_UP ? EL_SP_PORT_UP : - element == EL_SP_GRAVITY_PORT_DOWN ? EL_SP_PORT_DOWN : - element); - } -#endif - - level->field[x][y] = element; - } - } + level->field[x][y] = getMappedElementByVersion(level->field[x][y], + level->game_version); /* copy elements to runtime playfield array */ for (x = 0; x < MAX_LEV_FIELDX; x++) @@ -2934,7 +2699,6 @@ static void LoadLevel_InitPlayfield(struct LevelInfo *level, char *filename) void LoadLevelTemplate(int nr) { -#if 1 char *filename; setLevelFileInfo(&level_template.file_info, nr); @@ -2942,34 +2706,14 @@ void LoadLevelTemplate(int nr) LoadLevelFromFileInfo(&level_template, &level_template.file_info); -#else - -#if 1 - struct LevelFileInfo *level_file_info = getLevelFileInfo(nr); - char *filename = level_file_info->filename; - - LoadLevelFromFileInfo(&level_template, level_file_info); -#else - char *filename = getDefaultLevelFilename(nr); - - LoadLevelFromFilename_RND(&level_template, filename); -#endif -#endif - -#if 1 LoadLevel_InitVersion(&level_template, filename); LoadLevel_InitElements(&level_template, filename); -#else - LoadLevel_InitVersion(&level, filename); - LoadLevel_InitElements(&level, filename); -#endif ActivateLevelTemplate(); } void LoadLevel(int nr) { -#if 1 char *filename; setLevelFileInfo(&level.file_info, nr); @@ -2977,30 +2721,12 @@ void LoadLevel(int nr) LoadLevelFromFileInfo(&level, &level.file_info); -#else - -#if 1 - struct LevelFileInfo *level_file_info = getLevelFileInfo(nr); - char *filename = level_file_info->filename; - - LoadLevelFromFileInfo(&level, level_file_info); -#else - char *filename = getLevelFilename(nr); - - LoadLevelFromFilename_RND(&level, filename); -#endif -#endif - if (level.use_custom_template) LoadLevelTemplate(-1); -#if 1 LoadLevel_InitVersion(&level, filename); LoadLevel_InitElements(&level, filename); LoadLevel_InitPlayfield(&level, filename); -#else - LoadLevel_InitLevel(&level, filename); -#endif } static void SaveLevel_VERS(FILE *file, struct LevelInfo *level) @@ -3404,13 +3130,10 @@ static void SaveLevel_CUS4(FILE *file, struct LevelInfo *level, int element) putFile8Bit(file, change->trigger_side); -#if 1 putFile8Bit(file, change->trigger_player); putFile8Bit(file, (change->trigger_page == CH_PAGE_ANY ? CH_PAGE_ANY_FILE : log_2(change->trigger_page))); -#if 1 - putFile8Bit(file, change->has_action); putFile8Bit(file, change->action_type); putFile8Bit(file, change->action_mode); @@ -3418,16 +3141,6 @@ static void SaveLevel_CUS4(FILE *file, struct LevelInfo *level, int element) /* some free bytes for future change property values and padding */ WriteUnusedBytesToFile(file, 1); -#else - /* some free bytes for future change property values and padding */ - WriteUnusedBytesToFile(file, 6); -#endif - -#else - - /* some free bytes for future change property values and padding */ - WriteUnusedBytesToFile(file, 8); -#endif } } @@ -3822,10 +3535,6 @@ void LoadTapeFromFilename(char *filename) { tape.no_valid_file = TRUE; -#if 0 - Error(ERR_WARN, "cannot read tape '%s' -- using empty tape", filename); -#endif - return; } @@ -4080,21 +3789,12 @@ void DumpTape(struct TapeInfo *tape) { int i, j; -#if 1 if (tape->no_valid_file) { Error(ERR_WARN, "cannot dump -- no valid tape file found"); return; } -#else - if (TAPE_IS_EMPTY(*tape)) - { - Error(ERR_WARN, "no tape available for level %d", tape->level_nr); - - return; - } -#endif printf_line("-", 79); printf("Tape of Level %03d (file version %08d, game version %08d)\n", @@ -4800,7 +4500,6 @@ void LoadUserDefinedEditorElementList(int **elements, int *num_elements) freeSetupFileHash(element_hash); #if 0 - /* TEST-ONLY */ for (i = 0; i < *num_elements; i++) printf("editor: element '%s' [%d]\n", element_info[(*elements)[i]].token_name, (*elements)[i]); @@ -4965,18 +4664,10 @@ void LoadMusicInfo() new = &music_file_info; -#if 0 - printf("::: num_music == %d\n", num_music); -#endif - for (i = 0; i < num_music; i++) { music = getMusicListEntry(i); -#if 0 - printf("::: %d [%08x]\n", i, music->filename); -#endif - if (music->filename == NULL) continue; @@ -5075,7 +4766,6 @@ void LoadMusicInfo() } #if 0 - /* TEST-ONLY */ for (next = music_file_info; next != NULL; next = next->next) printf("::: title == '%s'\n", next->title); #endif @@ -5316,7 +5006,6 @@ void LoadHelpAnimInfo() freeSetupFileHash(direction_hash); #if 0 - /* TEST ONLY */ for (i = 0; i < num_list_entries; i++) printf("::: %d, %d, %d => %d\n", helpanim_info[i].element, @@ -5352,7 +5041,6 @@ void LoadHelpTextInfo() } #if 0 - /* TEST ONLY */ BEGIN_HASH_ITERATION(helptext_info, itr) { printf("::: '%s' => '%s'\n", diff --git a/src/game.c b/src/game.c index 23667a16..7949da60 100644 --- a/src/game.c +++ b/src/game.c @@ -21,9 +21,6 @@ #include "tape.h" #include "network.h" -/* this switch controls how rocks move horizontally */ -#define OLD_GAME_BEHAVIOUR FALSE - /* EXPERIMENTAL STUFF */ #define USE_NEW_AMOEBA_CODE FALSE @@ -41,9 +38,6 @@ #define USE_PREVIOUS_MOVE_DIR (TRUE * USE_NEW_STUFF * 1) #define USE_PUSH_BUGFIX (TRUE * USE_NEW_STUFF * 1) -#if 0 -#define USE_BLOCK_DELAY_BUGFIX (TRUE * USE_NEW_STUFF * 1) -#endif #define USE_GRAVITY_BUGFIX_NEW (TRUE * USE_NEW_STUFF * 1) #define USE_GRAVITY_BUGFIX_OLD (TRUE * USE_NEW_STUFF * 0) @@ -60,8 +54,6 @@ #define USE_BACK_WALKABLE_BUGFIX (TRUE * USE_NEW_STUFF * 1) -#define TEST_NEW_STUFF (TRUE) - /* for DigField() */ #define DF_NO_PUSH 0 @@ -183,35 +175,15 @@ IS_PLAYER(x, y) && \ !PLAYER_ENEMY_PROTECTED(x, y)))) -#if 0 -#define ELEMENT_CAN_ENTER_FIELD_GENERIC(e, x, y, condition) \ - (IN_LEV_FIELD(x, y) && (IS_FREE(x, y) || \ - (condition) || \ - (DONT_COLLIDE_WITH(e) && \ - IS_PLAYER(x, y) && \ - !PLAYER_ENEMY_PROTECTED(x, y)))) -#endif - #define ELEMENT_CAN_ENTER_FIELD(e, x, y) \ ELEMENT_CAN_ENTER_FIELD_BASE_4(e, x, y, 0) -#if 1 #define SATELLITE_CAN_ENTER_FIELD(x, y) \ ELEMENT_CAN_ENTER_FIELD_BASE_2(EL_SATELLITE, x, y, 0) -#else -#define SATELLITE_CAN_ENTER_FIELD(x, y) \ - ELEMENT_CAN_ENTER_FIELD_BASE_X(x, y, Feld[x][y] == EL_ACID) -#endif - -#if 0 -#define ENEMY_CAN_ENTER_FIELD(e, x, y) (IN_LEV_FIELD(x, y) && IS_FREE(x, y)) -#endif #define ENEMY_CAN_ENTER_FIELD(e, x, y) \ ELEMENT_CAN_ENTER_FIELD_BASE_2(e, x, y, 0) -#if 1 - #define YAMYAM_CAN_ENTER_FIELD(e, x, y) \ ELEMENT_CAN_ENTER_FIELD_BASE_3(e, x, y, Feld[x][y] == EL_DIAMOND) @@ -236,57 +208,6 @@ #define SPRING_CAN_ENTER_FIELD(e, x, y) \ ELEMENT_CAN_ENTER_FIELD_BASE_2(e, x, y, 0) -#else - -#define YAMYAM_CAN_ENTER_FIELD(e, x, y) \ - (IN_LEV_FIELD(x, y) && (IS_FREE_OR_PLAYER(x, y) || \ - (CAN_MOVE_INTO_ACID(e) && \ - Feld[x][y] == EL_ACID) || \ - Feld[x][y] == EL_DIAMOND)) - -#define DARK_YAMYAM_CAN_ENTER_FIELD(e, x, y) \ - (IN_LEV_FIELD(x, y) && (IS_FREE_OR_PLAYER(x, y) || \ - (CAN_MOVE_INTO_ACID(e) && \ - Feld[x][y] == EL_ACID) || \ - IS_FOOD_DARK_YAMYAM(Feld[x][y]))) - -#define PACMAN_CAN_ENTER_FIELD(e, x, y) \ - (IN_LEV_FIELD(x, y) && (IS_FREE_OR_PLAYER(x, y) || \ - (CAN_MOVE_INTO_ACID(e) && \ - Feld[x][y] == EL_ACID) || \ - IS_AMOEBOID(Feld[x][y]))) - -#define PIG_CAN_ENTER_FIELD(e, x, y) \ - (IN_LEV_FIELD(x, y) && (IS_FREE(x, y) || \ - (CAN_MOVE_INTO_ACID(e) && \ - Feld[x][y] == EL_ACID) || \ - IS_FOOD_PIG(Feld[x][y]))) - -#define PENGUIN_CAN_ENTER_FIELD(e, x, y) \ - (IN_LEV_FIELD(x, y) && (IS_FREE(x, y) || \ - (CAN_MOVE_INTO_ACID(e) && \ - Feld[x][y] == EL_ACID) || \ - IS_FOOD_PENGUIN(Feld[x][y]) || \ - Feld[x][y] == EL_EXIT_OPEN)) - -#define DRAGON_CAN_ENTER_FIELD(e, x, y) \ - (IN_LEV_FIELD(x, y) && (IS_FREE(x, y) || \ - (CAN_MOVE_INTO_ACID(e) && \ - Feld[x][y] == EL_ACID))) - -#define MOLE_CAN_ENTER_FIELD(e, x, y, condition) \ - (IN_LEV_FIELD(x, y) && (IS_FREE(x, y) || \ - (CAN_MOVE_INTO_ACID(e) && \ - Feld[x][y] == EL_ACID) || \ - (condition))) - -#define SPRING_CAN_ENTER_FIELD(e, x, y) \ - (IN_LEV_FIELD(x, y) && (IS_FREE(x, y) || \ - (CAN_MOVE_INTO_ACID(e) && \ - Feld[x][y] == EL_ACID))) - -#endif - #define GROUP_NR(e) ((e) - EL_GROUP_START) #define MOVE_ENTER_EL(e) (element_info[e].move_enter_element) #define IS_IN_GROUP(e, nr) (element_info[e].in_group[nr] == TRUE) @@ -295,16 +216,9 @@ #define IS_EQUAL_OR_IN_GROUP(e, ge) \ (IS_GROUP_ELEMENT(ge) ? IS_IN_GROUP(e, GROUP_NR(ge)) : (e) == (ge)) -#if 0 -#define CE_ENTER_FIELD_COND(e, x, y) \ - (!IS_PLAYER(x, y) && \ - (Feld[x][y] == EL_ACID || \ - IS_EQUAL_OR_IN_GROUP(Feld[x][y], MOVE_ENTER_EL(e)))) -#else #define CE_ENTER_FIELD_COND(e, x, y) \ (!IS_PLAYER(x, y) && \ IS_EQUAL_OR_IN_GROUP(Feld[x][y], MOVE_ENTER_EL(e))) -#endif #define CUSTOM_ELEMENT_CAN_ENTER_FIELD(e, x, y) \ ELEMENT_CAN_ENTER_FIELD_BASE_4(e, x, y, CE_ENTER_FIELD_COND(e, x, y)) @@ -801,8 +715,6 @@ static void InitPlayerField(int x, int y, int element, boolean init_game) level.block_last_field); #if USE_NEW_BLOCK_STYLE -#if 1 - /* ---------- initialize player's last field block delay --------------- */ /* always start with reliable default value (no adjustment needed) */ @@ -815,48 +727,6 @@ static void InitPlayerField(int x, int y, int element, boolean init_game) /* special case 2: in game engines before 3.1.1, blocking was different */ if (game.use_block_last_field_bug) player->block_delay_adjustment = (player->block_last_field ? -1 : 1); - -#if 0 - /* blocking the last field when moving was corrected in version 3.1.1 */ - if (game.use_block_last_field_bug) - { - /* even "not blocking" was blocking the last field for one frame */ - level.block_delay = (level.block_last_field ? 7 : 1); - level.sp_block_delay = (level.sp_block_last_field ? 7 : 1); - - level.block_last_field = TRUE; - level.sp_block_last_field = TRUE; - } -#endif - -#if 0 /* !!! THIS IS NOT A LEVEL SETTING => REMOVED !!! */ - level.block_delay = 8; /* when blocking, block 8 frames */ - level.sp_block_delay = 9; /* SP indeed blocks 9 frames, not 8 */ -#endif - -#if 0 - printf("::: %d, %d\n", level.block_delay, level.sp_block_delay); -#endif - -#else - -#if 1 - player->block_delay = (player->block_last_field ? - (element == EL_SP_MURPHY ? - level.sp_block_delay : - level.block_delay) : 0); -#else - player->block_delay = (element == EL_SP_MURPHY ? - (player->block_last_field ? 7 : 1) : - (player->block_last_field ? 7 : 1)); -#endif - -#endif - -#if 0 - printf("::: block_last_field == %d, block_delay = %d\n", - player->block_last_field, player->block_delay); -#endif #endif if (!options.network || player->connected) @@ -997,27 +867,6 @@ static void InitField(int x, int y, boolean init_game) GfxDir[x][y] = MovDir[x][y] = 1 << RND(4); break; -#if 0 - case EL_SP_EMPTY: - Feld[x][y] = EL_EMPTY; - break; -#endif - -#if 0 - case EL_EM_KEY_1_FILE: - Feld[x][y] = EL_EM_KEY_1; - break; - case EL_EM_KEY_2_FILE: - Feld[x][y] = EL_EM_KEY_2; - break; - case EL_EM_KEY_3_FILE: - Feld[x][y] = EL_EM_KEY_3; - break; - case EL_EM_KEY_4_FILE: - Feld[x][y] = EL_EM_KEY_4; - break; -#endif - case EL_CONVEYOR_BELT_1_SWITCH_LEFT: case EL_CONVEYOR_BELT_1_SWITCH_MIDDLE: case EL_CONVEYOR_BELT_1_SWITCH_RIGHT: @@ -1265,17 +1114,6 @@ static void resolve_group_element(int group_element, int recursion_depth) element_info[element].in_group[group_nr] = TRUE; } } - -#if 0 - if (recursion_depth == 0 && group_element <= EL_GROUP_4) - { - printf("::: group %d: %d resolved elements\n", - group_element - EL_GROUP_START, group->num_elements_resolved); - for (i = 0; i < group->num_elements_resolved; i++) - printf("::: - %d ['%s']\n", group->element_resolved[i], - element_info[group->element_resolved[i]].token_name); - } -#endif } @@ -1452,12 +1290,10 @@ static void InitGameEngine() ei->has_change_event[CE_DELAY] = TRUE; -#if 1 SET_PROPERTY(ch_delay->element, EP_CAN_CHANGE, TRUE); -#endif + SET_PROPERTY(ch_delay->element, EP_CAN_CHANGE_OR_HAS_ACTION, TRUE); } -#if 1 /* add change events from custom element configuration */ for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) { @@ -1482,19 +1318,6 @@ static void InitGameEngine() } } -#else - - /* add change events from custom element configuration */ - for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) - { - int element = EL_CUSTOM_START + i; - - /* only add custom elements that change after fixed/random frame delay */ - if (CAN_CHANGE(element) && HAS_CHANGE_EVENT(element, CE_DELAY)) - element_info[element].has_change_event[CE_DELAY] = TRUE; - } -#endif - /* ---------- initialize internal run-time variables ------------- */ for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) @@ -1529,7 +1352,6 @@ static void InitGameEngine() for (j = 0; j < NUM_CHANGE_EVENTS; j++) trigger_events[i][j] = FALSE; -#if 1 /* add trigger events from element change event properties */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) { @@ -1563,14 +1385,6 @@ static void InitGameEngine() } } } -#else - /* add trigger events from element change event properties */ - for (i = 0; i < MAX_NUM_ELEMENTS; i++) - if (HAS_CHANGE_EVENT(i, CE_BY_OTHER_ACTION)) - for (j = 0; j < NUM_CHANGE_EVENTS; j++) - if (element_info[i].change->has_event[j]) - trigger_events[element_info[i].change->trigger_element][j] = TRUE; -#endif /* ---------- initialize push delay -------------------------------------- */ @@ -1629,16 +1443,6 @@ static void InitGameEngine() element_info[e].move_stepsize = move_stepsize_list[i].move_stepsize; } -#if 0 - /* ---------- initialize move dig/leave ---------------------------------- */ - - for (i = 0; i < MAX_NUM_ELEMENTS; i++) - { - element_info[i].can_leave_element = FALSE; - element_info[i].can_leave_element_last = FALSE; - } -#endif - /* ---------- initialize gem count --------------------------------------- */ /* initialize gem count values for each element */ @@ -1682,16 +1486,6 @@ void InitGame() InitGameEngine(); -#if 0 -#if DEBUG -#if USE_NEW_AMOEBA_CODE - printf("Using new amoeba code.\n"); -#else - printf("Using old amoeba code.\n"); -#endif -#endif -#endif - /* don't play tapes over network */ network_playing = (options.network && !tape.playing); @@ -1959,13 +1753,8 @@ void InitGame() element_info[i].explosion_delay = last_phase - 1; element_info[i].ignition_delay = half_phase; -#if 0 - if (i == EL_BLACK_ORB) - element_info[i].ignition_delay = 0; -#else if (i == EL_BLACK_ORB) element_info[i].ignition_delay = 1; -#endif } #if 0 @@ -2190,7 +1979,6 @@ void InitGame() } else { -#if 1 scroll_x = (local_player->jx < SBX_Left + MIDPOSX ? SBX_Left : local_player->jx > SBX_Right + MIDPOSX ? SBX_Right : local_player->jx - MIDPOSX); @@ -2198,18 +1986,6 @@ void InitGame() scroll_y = (local_player->jy < SBY_Upper + MIDPOSY ? SBY_Upper : local_player->jy > SBY_Lower + MIDPOSY ? SBY_Lower : local_player->jy - MIDPOSY); -#else - scroll_x = SBX_Left; - scroll_y = SBY_Upper; - if (local_player->jx >= SBX_Left + MIDPOSX) - scroll_x = (local_player->jx <= SBX_Right + MIDPOSX ? - local_player->jx - MIDPOSX : - SBX_Right); - if (local_player->jy >= SBY_Upper + MIDPOSY) - scroll_y = (local_player->jy <= SBY_Lower + MIDPOSY ? - local_player->jy - MIDPOSY : - SBY_Lower); -#endif } if (!game.restart_level) @@ -2278,10 +2054,6 @@ void InitGame() } game.restart_level = FALSE; - -#if 0 - printf("::: starting game [%d]\n", FrameCounter); -#endif } void UpdateEngineValues(int actual_scroll_x, int actual_scroll_y) @@ -2403,11 +2175,9 @@ void InitMovDir(int x, int y) else if (move_pattern == MV_ALONG_LEFT_SIDE || move_pattern == MV_ALONG_RIGHT_SIDE) { -#if 1 /* use random direction as default start direction */ if (game.engine_version >= VERSION_IDENT(3,1,0,0)) MovDir[x][y] = 1 << RND(4); -#endif for (i = 0; i < NUM_DIRECTIONS; i++) { @@ -2493,13 +2263,8 @@ void GameWon() if (local_player->MovPos) return; -#if 1 if (tape.auto_play) /* tape might already be stopped here */ tape.auto_play_level_solved = TRUE; -#else - if (tape.playing && tape.auto_play) - tape.auto_play_level_solved = TRUE; -#endif local_player->LevelSolved = FALSE; @@ -2896,10 +2661,7 @@ void RemoveMovingField(int x, int y) if (IS_MOVING(x, y)) { Moving2Blocked(x, y, &newx, &newy); -#if 0 - if (Feld[newx][newy] != EL_BLOCKED) - return; -#else + if (Feld[newx][newy] != EL_BLOCKED) { /* element is moving, but target field is not free (blocked), but @@ -2914,7 +2676,6 @@ void RemoveMovingField(int x, int y) return; } -#endif } else if (element == EL_BLOCKED) { @@ -2961,19 +2722,10 @@ void DrawDynamite(int x, int y) frame = getGraphicAnimationFrame(graphic, GfxFrame[x][y]); -#if 1 if (Back[x][y] || Store[x][y]) DrawGraphicThruMask(sx, sy, graphic, frame); else DrawGraphic(sx, sy, graphic, frame); -#else - if (game.emulation == EMU_SUPAPLEX) - DrawGraphic(sx, sy, IMG_SP_DISK_RED, frame); - else if (Store[x][y]) - DrawGraphicThruMask(sx, sy, graphic, frame); - else - DrawGraphic(sx, sy, graphic, frame); -#endif } void CheckDynamite(int x, int y) @@ -2991,15 +2743,7 @@ void CheckDynamite(int x, int y) } } -#if 1 StopLevelSoundActionIfLoop(x, y, ACTION_ACTIVE); -#else - if (Feld[x][y] == EL_DYNAMITE_ACTIVE || - Feld[x][y] == EL_SP_DISK_RED_ACTIVE) - StopSound(SND_DYNAMITE_ACTIVE); - else - StopSound(SND_DYNABOMB_ACTIVE); -#endif Bang(x, y); } @@ -3015,7 +2759,6 @@ void DrawRelocatePlayer(struct PlayerInfo *player) if (level.instant_relocation) { -#if 1 int offset = (setup.scroll_delay ? 3 : 0); if (!IN_VIS_FIELD(SCREENX(jx), SCREENY(jy))) @@ -3046,74 +2789,11 @@ void DrawRelocatePlayer(struct PlayerInfo *player) if (scroll_y < SBY_Upper || scroll_y > SBY_Lower) scroll_y = (scroll_y < SBY_Upper ? SBY_Upper : SBY_Lower); } -#else - scroll_x += (local_player->jx - old_jx); - scroll_y += (local_player->jy - old_jy); - - /* don't scroll over playfield boundaries */ - if (scroll_x < SBX_Left || scroll_x > SBX_Right) - scroll_x = (scroll_x < SBX_Left ? SBX_Left : SBX_Right); - - /* don't scroll over playfield boundaries */ - if (scroll_y < SBY_Upper || scroll_y > SBY_Lower) - scroll_y = (scroll_y < SBY_Upper ? SBY_Upper : SBY_Lower); -#endif RedrawPlayfield(TRUE, 0,0,0,0); } else { -#if 1 -#if 0 - int offset = (setup.scroll_delay ? 3 : 0); -#endif - int scroll_xx = -999, scroll_yy = -999; - - ScrollScreen(NULL, SCROLL_GO_ON); /* scroll last frame to full tile */ - - while (scroll_xx != scroll_x || scroll_yy != scroll_y) - { - int dx = 0, dy = 0; - int fx = FX, fy = FY; - - scroll_xx = (local_player->jx < SBX_Left + MIDPOSX ? SBX_Left : - local_player->jx > SBX_Right + MIDPOSX ? SBX_Right : - local_player->jx - MIDPOSX); - - scroll_yy = (local_player->jy < SBY_Upper + MIDPOSY ? SBY_Upper : - local_player->jy > SBY_Lower + MIDPOSY ? SBY_Lower : - local_player->jy - MIDPOSY); - - dx = (scroll_xx < scroll_x ? +1 : scroll_xx > scroll_x ? -1 : 0); - dy = (scroll_yy < scroll_y ? +1 : scroll_yy > scroll_y ? -1 : 0); - -#if 1 - if (dx == 0 && dy == 0) /* no scrolling needed at all */ - break; -#else - if (scroll_xx == scroll_x && scroll_yy == scroll_y) - break; -#endif - - scroll_x -= dx; - scroll_y -= dy; - - fx += dx * TILEX / 2; - fy += dy * TILEY / 2; - - ScrollLevel(dx, dy); - DrawAllPlayers(); - - /* scroll in two steps of half tile size to make things smoother */ - BlitBitmap(drawto_field, window, fx, fy, SXSIZE, SYSIZE, SX, SY); - FlushDisplay(); - Delay(wait_delay_value); - - /* scroll second step to align at full tile size */ - BackToFront(); - Delay(wait_delay_value); - } -#else int scroll_xx = -999, scroll_yy = -999; ScrollScreen(NULL, SCROLL_GO_ON); /* scroll last frame to full tile */ @@ -3134,13 +2814,8 @@ void DrawRelocatePlayer(struct PlayerInfo *player) dx = (scroll_xx < scroll_x ? +1 : scroll_xx > scroll_x ? -1 : 0); dy = (scroll_yy < scroll_y ? +1 : scroll_yy > scroll_y ? -1 : 0); -#if 1 if (dx == 0 && dy == 0) /* no scrolling needed at all */ break; -#else - if (scroll_xx == scroll_x && scroll_yy == scroll_y) - break; -#endif scroll_x -= dx; scroll_y -= dy; @@ -3160,7 +2835,6 @@ void DrawRelocatePlayer(struct PlayerInfo *player) BackToFront(); Delay(wait_delay_value); } -#endif DrawPlayer(player); BackToFront(); @@ -3170,11 +2844,7 @@ void DrawRelocatePlayer(struct PlayerInfo *player) void RelocatePlayer(int jx, int jy, int el_player_raw) { -#if 1 int el_player = GET_VALID_PLAYER_ELEMENT(el_player_raw); -#else - int el_player = (el_player_raw == EL_SP_MURPHY ? EL_PLAYER_1 :el_player_raw); -#endif struct PlayerInfo *player = &stored_player[el_player - EL_PLAYER_1]; boolean ffwd_delay = (tape.playing && tape.fast_forward); boolean no_delay = (tape.warp_forward); @@ -3188,25 +2858,10 @@ void RelocatePlayer(int jx, int jy, int el_player_raw) int move_dir_horiz = (jx < old_jx ? MV_LEFT : jx > old_jx ? MV_RIGHT : 0); int move_dir_vert = (jy < old_jy ? MV_UP : jy > old_jy ? MV_DOWN : 0); -#if 1 int enter_side_horiz = MV_DIR_OPPOSITE(move_dir_horiz); int enter_side_vert = MV_DIR_OPPOSITE(move_dir_vert); int leave_side_horiz = move_dir_horiz; int leave_side_vert = move_dir_vert; -#else - static int trigger_sides[4][2] = - { - /* enter side leave side */ - { CH_SIDE_RIGHT, CH_SIDE_LEFT }, /* moving left */ - { CH_SIDE_LEFT, CH_SIDE_RIGHT }, /* moving right */ - { CH_SIDE_BOTTOM, CH_SIDE_TOP }, /* moving up */ - { CH_SIDE_TOP, CH_SIDE_BOTTOM } /* moving down */ - }; - int enter_side_horiz = trigger_sides[MV_DIR_BIT(move_dir_horiz)][0]; - int enter_side_vert = trigger_sides[MV_DIR_BIT(move_dir_vert)][0]; - int leave_side_horiz = trigger_sides[MV_DIR_BIT(move_dir_horiz)][1]; - int leave_side_vert = trigger_sides[MV_DIR_BIT(move_dir_vert)][1]; -#endif int enter_side = enter_side_horiz | enter_side_vert; int leave_side = leave_side_horiz | leave_side_vert; @@ -3247,7 +2902,6 @@ void RelocatePlayer(int jx, int jy, int el_player_raw) player->is_moving = FALSE; } -#if 1 if (IS_CUSTOM_ELEMENT(old_element)) CheckElementChangeByPlayer(old_jx, old_jy, old_element, CE_LEFT_BY_PLAYER, @@ -3256,7 +2910,6 @@ void RelocatePlayer(int jx, int jy, int el_player_raw) CheckTriggeredElementChangeByPlayer(old_jx, old_jy, old_element, CE_PLAYER_LEAVES_X, player->index_bit, leave_side); -#endif Feld[jx][jy] = el_player; InitPlayerField(jx, jy, el_player, TRUE); @@ -3267,40 +2920,12 @@ void RelocatePlayer(int jx, int jy, int el_player_raw) InitField(jx, jy, FALSE); } -#if 1 if (player == local_player) /* only visually relocate local player */ DrawRelocatePlayer(player); -#endif -#if 1 TestIfHeroTouchesBadThing(jx, jy); TestIfPlayerTouchesCustomElement(jx, jy); -#endif -#if 0 - printf("::: %d,%d: %d\n", jx, jy-1, Changed[jx][jy-1]); -#endif - -#if 0 -#if 0 - /* needed to allow change of walkable custom element by entering player */ - if (!(Changed[jx][jy] & CH_EVENT_BIT(CE_ENTERED_BY_PLAYER))) - Changed[jx][jy] = 0; /* allow another change (but prevent loop) */ -#else - /* needed to allow change of walkable custom element by entering player */ - Changed[jx][jy] = 0; /* allow another change */ -#endif -#endif - -#if 0 - printf("::: player entering %d, %d from %s ...\n", jx, jy, - enter_side == MV_LEFT ? "left" : - enter_side == MV_RIGHT ? "right" : - enter_side == MV_UP ? "top" : - enter_side == MV_DOWN ? "bottom" : "oops! no idea!"); -#endif - -#if 1 if (IS_CUSTOM_ELEMENT(element)) CheckElementChangeByPlayer(jx, jy, element, CE_ENTERED_BY_PLAYER, player->index_bit, enter_side); @@ -3308,28 +2933,17 @@ void RelocatePlayer(int jx, int jy, int el_player_raw) CheckTriggeredElementChangeByPlayer(jx, jy, element, CE_PLAYER_ENTERS_X, player->index_bit, enter_side); -#endif } void Explode(int ex, int ey, int phase, int mode) { int x, y; -#if 0 - int num_phase = 9; -#endif + int last_phase; + int border_element; /* !!! eliminate this variable !!! */ int delay = (game.emulation == EMU_SUPAPLEX ? 3 : 2); -#if 1 - int last_phase; -#else - int last_phase = num_phase * delay; - int half_phase = (num_phase / 2) * delay; - int first_phase_after_start = EX_PHASE_START + 1; -#endif - int border_element; - if (game.explosions_delayed) { ExplodeField[ex][ey] = mode; @@ -3340,10 +2954,6 @@ void Explode(int ex, int ey, int phase, int mode) { int center_element = Feld[ex][ey]; -#if 0 - printf("::: start explosion %d,%d [%d]\n", ex, ey, FrameCounter); -#endif - #if 0 /* --- This is only really needed (and now handled) in "Impact()". --- */ /* do not explode moving elements that left the explode field in time */ @@ -3353,15 +2963,10 @@ void Explode(int ex, int ey, int phase, int mode) return; #endif -#if 1 if (mode == EX_TYPE_NORMAL || mode == EX_TYPE_CENTER || mode == EX_TYPE_CROSS) PlayLevelSoundAction(ex, ey, ACTION_EXPLODING); -#else - if (mode == EX_TYPE_NORMAL || mode == EX_TYPE_CENTER) - PlayLevelSoundAction(ex, ey, ACTION_EXPLODING); -#endif /* remove things displayed in background while burning dynamite */ if (Back[ex][ey] != EL_EMPTY && !IS_INDESTRUCTIBLE(Back[ex][ey])) @@ -3375,18 +2980,7 @@ void Explode(int ex, int ey, int phase, int mode) Feld[ex][ey] = center_element; } -#if 1 - -#if 1 last_phase = element_info[center_element].explosion_delay + 1; -#else - last_phase = element_info[center_element].explosion_delay; -#endif - -#if 0 - printf("::: %d -> %d\n", center_element, last_phase); -#endif -#endif for (y = ey - 1; y <= ey + 1; y++) for (x = ex - 1; x <= ex + 1; x++) { @@ -3394,24 +2988,10 @@ void Explode(int ex, int ey, int phase, int mode) int yy = y - ey + 1; int element; -#if 1 -#if 1 if (!IN_LEV_FIELD(x, y) || (mode & EX_TYPE_SINGLE_TILE && (x != ex || y != ey)) || (mode == EX_TYPE_CROSS && (x != ex && y != ey))) continue; -#else - if (!IN_LEV_FIELD(x, y) || - (mode != EX_TYPE_NORMAL && (x != ex || y != ey))) - continue; -#endif -#else - if (!IN_LEV_FIELD(x, y) || - ((mode != EX_TYPE_NORMAL || - center_element == EL_AMOEBA_TO_DIAMOND) && - (x != ex || y != ey))) - continue; -#endif element = Feld[x][y]; @@ -3423,32 +3003,11 @@ void Explode(int ex, int ey, int phase, int mode) RemoveMovingField(x, y); } -#if 1 - -#if 0 - if (IS_EXPLOSION_PROOF(element)) - continue; -#else /* indestructible elements can only explode in center (but not flames) */ -#if 1 if ((IS_EXPLOSION_PROOF(element) && (x != ex || y != ey || mode == EX_TYPE_BORDER)) || element == EL_FLAMES) continue; -#else - if ((IS_EXPLOSION_PROOF(element) && (x != ex || y != ey)) || - element == EL_FLAMES) - continue; -#endif -#endif - -#else - if ((IS_INDESTRUCTIBLE(element) && - (game.engine_version < VERSION_IDENT(2,2,0,0) || - (!IS_WALKABLE_OVER(element) && !IS_WALKABLE_UNDER(element)))) || - element == EL_FLAMES) - continue; -#endif /* no idea why this was changed from 3.0.8 to 3.1.0 -- this causes buggy behaviour, for example when touching a yamyam that explodes to rocks @@ -3465,50 +3024,22 @@ void Explode(int ex, int ey, int phase, int mode) if (IS_ACTIVE_BOMB(element)) { /* re-activate things under the bomb like gate or penguin */ -#if 1 Feld[x][y] = (Back[x][y] ? Back[x][y] : EL_EMPTY); Back[x][y] = 0; -#else - Feld[x][y] = (Store[x][y] ? Store[x][y] : EL_EMPTY); - Store[x][y] = 0; -#endif - -#if 0 - printf("::: %d,%d: %d %s [%d, %d]\n", x, y, Feld[x][y], - element_info[Feld[x][y]].token_name, - Store[x][y], Store2[x][y]); -#endif } continue; } /* save walkable background elements while explosion on same tile */ -#if 0 - if (IS_INDESTRUCTIBLE(element)) - Back[x][y] = element; -#else -#if 1 -#if 1 if (IS_WALKABLE(element) && IS_INDESTRUCTIBLE(element) && (x != ex || y != ey || mode == EX_TYPE_BORDER)) Back[x][y] = element; -#else - if (IS_WALKABLE(element) && IS_INDESTRUCTIBLE(element) && - (x != ex || y != ey)) - Back[x][y] = element; -#endif -#else - if (IS_WALKABLE(element) && IS_INDESTRUCTIBLE(element)) - Back[x][y] = element; -#endif -#endif /* ignite explodable elements reached by other explosion */ if (element == EL_EXPLOSION) element = Store2[x][y]; -#if 1 if (AmoebaNr[x][y] && (element == EL_AMOEBA_FULL || element == EL_BD_AMOEBA || @@ -3519,7 +3050,6 @@ void Explode(int ex, int ey, int phase, int mode) } RemoveField(x, y); -#endif if (IS_PLAYER(ex, ey) && !PLAYER_EXPLOSION_PROTECTED(ex, ey)) { @@ -3540,13 +3070,8 @@ void Explode(int ex, int ey, int phase, int mode) break; } -#if 1 if (PLAYERINFO(ex, ey)->use_murphy_graphic) Store[x][y] = EL_EMPTY; -#else - if (game.emulation == EMU_SUPAPLEX) - Store[x][y] = EL_EMPTY; -#endif } else if (center_element == EL_MOLE) Store[x][y] = EL_EMERALD_RED; @@ -3590,49 +3115,11 @@ void Explode(int ex, int ey, int phase, int mode) center_element == EL_AMOEBA_TO_DIAMOND) Store2[x][y] = element; -#if 0 - printf("::: %d,%d: %d %s\n", x, y, Store2[x][y], - element_info[Store2[x][y]].token_name); -#endif - -#if 0 - if (AmoebaNr[x][y] && - (element == EL_AMOEBA_FULL || - element == EL_BD_AMOEBA || - element == EL_AMOEBA_GROWING)) - { - AmoebaCnt[AmoebaNr[x][y]]--; - AmoebaCnt2[AmoebaNr[x][y]]--; - } - -#if 1 - RemoveField(x, y); -#else - MovDir[x][y] = MovPos[x][y] = 0; - GfxDir[x][y] = MovDir[x][y]; - AmoebaNr[x][y] = 0; -#endif -#endif - Feld[x][y] = EL_EXPLOSION; -#if 1 GfxElement[x][y] = center_element; -#else - GfxElement[x][y] = EL_UNDEFINED; -#endif ExplodePhase[x][y] = 1; -#if 1 ExplodeDelay[x][y] = last_phase; -#endif - -#if 0 -#if 1 - GfxFrame[x][y] = 0; /* animation does not start until next frame */ -#else - GfxFrame[x][y] = -1; /* animation does not start until next frame */ -#endif -#endif Stop[x][y] = TRUE; } @@ -3641,11 +3128,6 @@ void Explode(int ex, int ey, int phase, int mode) game.yamyam_content_nr = (game.yamyam_content_nr + 1) % level.num_yamyam_contents; -#if 0 - printf("::: %d,%d: %d %s [%d]\n", ex + 1, ey, Feld[ex + 1][ey], - element_info[Feld[ex + 1][ey]].token_name, Store2[ex + 1][ey]); -#endif - return; } @@ -3655,18 +3137,10 @@ void Explode(int ex, int ey, int phase, int mode) x = ex; y = ey; -#if 1 if (phase == 1) GfxFrame[x][y] = 0; /* restart explosion animation */ -#endif -#if 0 - printf(":X: phase == %d [%d]\n", phase, GfxFrame[x][y]); -#endif - -#if 1 last_phase = ExplodeDelay[x][y]; -#endif ExplodePhase[x][y] = (phase < last_phase ? phase + 1 : 0); @@ -3674,6 +3148,7 @@ void Explode(int ex, int ey, int phase, int mode) /* activate this even in non-DEBUG version until cause for crash in getGraphicAnimationFrame() (see below) is found and eliminated */ + #endif #if 1 @@ -3688,133 +3163,46 @@ void Explode(int ex, int ey, int phase, int mode) } #endif -#if 1 - border_element = Store2[x][y]; -#if 1 if (IS_PLAYER(x, y) && !PLAYER_EXPLOSION_PROTECTED(x, y)) border_element = StorePlayer[x][y]; -#else - if (IS_PLAYER(x, y)) - border_element = StorePlayer[x][y]; -#endif - -#if 0 - printf("::: %d,%d: %d %s [%d]\n", x, y, border_element, - element_info[border_element].token_name, Store2[x][y]); -#endif - -#if 0 - printf("::: phase == %d\n", phase); -#endif if (phase == element_info[border_element].ignition_delay || phase == last_phase) { boolean border_explosion = FALSE; -#if 1 -#if 1 if (IS_PLAYER(x, y) && PLAYERINFO(x, y)->present && !PLAYER_EXPLOSION_PROTECTED(x, y)) -#else - if (IS_PLAYER(x, y) && PLAYERINFO(x, y)->present) -#endif -#else - if (IS_PLAYER(x, y)) -#endif { KillHeroUnlessExplosionProtected(x, y); border_explosion = TRUE; - -#if 0 - if (phase == last_phase) - printf("::: IS_PLAYER\n"); -#endif } else if (CAN_EXPLODE_BY_EXPLOSION(border_element)) { -#if 0 - printf("::: %d,%d: %d %s\n", x, y, border_element, - element_info[border_element].token_name); -#endif - Feld[x][y] = Store2[x][y]; Store2[x][y] = 0; Bang(x, y); border_explosion = TRUE; - -#if 0 - if (phase == last_phase) - printf("::: CAN_EXPLODE_BY_EXPLOSION\n"); -#endif } else if (border_element == EL_AMOEBA_TO_DIAMOND) { AmoebeUmwandeln(x, y); Store2[x][y] = 0; border_explosion = TRUE; - -#if 0 - if (phase == last_phase) - printf("::: EL_AMOEBA_TO_DIAMOND [%d, %d] [%d]\n", - element_info[border_element].explosion_delay, - element_info[border_element].ignition_delay, - phase); -#endif } -#if 1 /* if an element just explodes due to another explosion (chain-reaction), do not immediately end the new explosion when it was the last frame of the explosion (as it would be done in the following "if"-statement!) */ if (border_explosion && phase == last_phase) return; -#endif - } - -#else - - if (phase == first_phase_after_start) - { - int element = Store2[x][y]; - - if (element == EL_BLACK_ORB) - { - Feld[x][y] = Store2[x][y]; - Store2[x][y] = 0; - Bang(x, y); - } - } - else if (phase == half_phase) - { - int element = Store2[x][y]; - - if (IS_PLAYER(x, y)) - KillHeroUnlessExplosionProtected(x, y); - else if (CAN_EXPLODE_BY_EXPLOSION(element)) - { - Feld[x][y] = Store2[x][y]; - Store2[x][y] = 0; - Bang(x, y); - } - else if (element == EL_AMOEBA_TO_DIAMOND) - AmoebeUmwandeln(x, y); } -#endif if (phase == last_phase) { int element; -#if 0 - printf("::: done: phase == %d\n", phase); -#endif - -#if 0 - printf("::: explosion %d,%d done [%d]\n", x, y, FrameCounter); -#endif - element = Feld[x][y] = Store[x][y]; Store[x][y] = Store2[x][y] = 0; GfxElement[x][y] = EL_UNDEFINED; @@ -3839,22 +3227,8 @@ void Explode(int ex, int ey, int phase, int mode) ChangeDelay[x][y] = 0; ChangePage[x][y] = -1; -#if 1 InitField_WithBug2(x, y, FALSE); -#else - InitField(x, y, FALSE); -#if 1 - /* !!! not needed !!! */ -#if 1 - if (game.engine_version < VERSION_IDENT(3,1,0,0) && - CAN_MOVE(Feld[x][y]) && Feld[x][y] != EL_MOLE) - InitMovDir(x, y); -#else - if (CAN_MOVE(element)) - InitMovDir(x, y); -#endif -#endif -#endif + DrawLevelField(x, y); TestIfElementTouchesCustomElement(x, y); @@ -3868,40 +3242,10 @@ void Explode(int ex, int ey, int phase, int mode) if (ELEM_IS_PLAYER(element)) RelocatePlayer(x, y, element); } -#if 1 else if (IN_SCR_FIELD(SCREENX(x), SCREENY(y))) -#else - else if (phase >= delay && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) -#endif { -#if 1 int graphic = el_act2img(GfxElement[x][y], ACTION_EXPLODING); -#else - int stored = Store[x][y]; - int graphic = (game.emulation != EMU_SUPAPLEX ? IMG_EXPLOSION : - stored == EL_SP_INFOTRON ? IMG_SP_EXPLOSION_INFOTRON : - IMG_SP_EXPLOSION); -#endif -#if 1 int frame = getGraphicAnimationFrame(graphic, GfxFrame[x][y]); -#else - int frame = getGraphicAnimationFrame(graphic, phase - delay); -#endif - -#if 0 - printf("::: phase == %d [%d]\n", phase, GfxFrame[x][y]); -#endif - -#if 0 - printf("::: %d / %d [%d - %d]\n", - GfxFrame[x][y], phase - delay, phase, delay); -#endif - -#if 0 - printf("::: %d ['%s'] -> %d\n", GfxElement[x][y], - element_info[GfxElement[x][y]].token_name, - graphic); -#endif if (phase == delay) DrawLevelFieldCrumbledSand(x, y); @@ -3965,39 +3309,18 @@ void DynaExplode(int ex, int ey) Explode(x, y, EX_PHASE_START, EX_TYPE_BORDER); -#if 1 -#if 1 if (element != EL_EMPTY && element != EL_EXPLOSION && !IS_DIGGABLE(element) && !dynabomb_xl) break; -#else - if (element != EL_EMPTY && element != EL_EXPLOSION && - !CAN_GROW_INTO(element) && !dynabomb_xl) - break; -#endif -#else - /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */ - if (element != EL_EMPTY && element != EL_EXPLOSION && - element != EL_SAND && !dynabomb_xl) - break; -#endif } } } void Bang(int x, int y) { -#if 1 int element = MovingOrBlocked2Element(x, y); -#else - int element = Feld[x][y]; -#endif -#if 1 if (IS_PLAYER(x, y) && !PLAYER_EXPLOSION_PROTECTED(x, y)) -#else - if (IS_PLAYER(x, y)) -#endif { struct PlayerInfo *player = PLAYERINFO(x, y); @@ -4005,22 +3328,6 @@ void Bang(int x, int y) player->element_nr); } -#if 0 -#if 1 - PlayLevelSoundAction(x, y, ACTION_EXPLODING); -#else - if (game.emulation == EMU_SUPAPLEX) - PlayLevelSound(x, y, SND_SP_ELEMENT_EXPLODING); - else - PlayLevelSound(x, y, SND_ELEMENT_EXPLODING); -#endif -#endif - -#if 0 - if (IS_PLAYER(x, y)) /* remove objects that might cause smaller explosion */ - element = EL_EMPTY; -#endif - switch(element) { case EL_BUG: @@ -4047,30 +3354,16 @@ void Bang(int x, int y) case EL_PENGUIN: case EL_LAMP: case EL_LAMP_ACTIVE: -#if 1 case EL_AMOEBA_TO_DIAMOND: -#endif if (IS_PLAYER(x, y)) Explode(x, y, EX_PHASE_START, EX_TYPE_NORMAL); else Explode(x, y, EX_PHASE_START, EX_TYPE_CENTER); break; default: -#if 1 if (element_info[element].explosion_type == EXPLODES_CROSS) -#else - if (CAN_EXPLODE_CROSS(element)) -#endif -#if 1 Explode(x, y, EX_PHASE_START, EX_TYPE_CROSS); -#else - DynaExplode(x, y); -#endif -#if 1 else if (element_info[element].explosion_type == EXPLODES_1X1) -#else - else if (CAN_EXPLODE_1X1(element)) -#endif Explode(x, y, EX_PHASE_START, EX_TYPE_CENTER); else Explode(x, y, EX_PHASE_START, EX_TYPE_NORMAL); @@ -4082,7 +3375,6 @@ void Bang(int x, int y) void SplashAcid(int x, int y) { -#if 1 if (IN_LEV_FIELD(x - 1, y - 1) && IS_FREE(x - 1, y - 1) && (!IN_LEV_FIELD(x - 1, y - 2) || !CAN_FALL(MovingOrBlocked2Element(x - 1, y - 2)))) @@ -4094,30 +3386,6 @@ void SplashAcid(int x, int y) Feld[x + 1][y - 1] = EL_ACID_SPLASH_RIGHT; PlayLevelSound(x, y, SND_ACID_SPLASHING); -#else - /* input: position of element entering acid (obsolete) */ - - int element = Feld[x][y]; - - if (!IN_LEV_FIELD(x, y + 1) || Feld[x][y + 1] != EL_ACID) - return; - - if (element != EL_ACID_SPLASH_LEFT && - element != EL_ACID_SPLASH_RIGHT) - { - PlayLevelSound(x, y, SND_ACID_SPLASHING); - - if (IN_LEV_FIELD(x - 1, y) && IS_FREE(x - 1, y) && - (!IN_LEV_FIELD(x - 1, y - 1) || - !CAN_FALL(MovingOrBlocked2Element(x - 1, y - 1)))) - Feld[x - 1][y] = EL_ACID_SPLASH_LEFT; - - if (IN_LEV_FIELD(x + 1, y) && IS_FREE(x + 1, y) && - (!IN_LEV_FIELD(x + 1, y - 1) || - !CAN_FALL(MovingOrBlocked2Element(x + 1, y - 1)))) - Feld[x + 1][y] = EL_ACID_SPLASH_RIGHT; - } -#endif } static void InitBeltMovement() @@ -4305,21 +3573,15 @@ static void ToggleSwitchgateSwitch(int x, int y) element == EL_SWITCHGATE_OPENING) { Feld[xx][yy] = EL_SWITCHGATE_CLOSING; -#if 1 + PlayLevelSoundAction(xx, yy, ACTION_CLOSING); -#else - PlayLevelSound(xx, yy, SND_SWITCHGATE_CLOSING); -#endif } else if (element == EL_SWITCHGATE_CLOSED || element == EL_SWITCHGATE_CLOSING) { Feld[xx][yy] = EL_SWITCHGATE_OPENING; -#if 1 + PlayLevelSoundAction(xx, yy, ACTION_OPENING); -#else - PlayLevelSound(xx, yy, SND_SWITCHGATE_OPENING); -#endif } } } @@ -4445,10 +3707,6 @@ void Impact(int x, int y) int element = Feld[x][y]; int smashed = EL_STEELWALL; -#if 0 - printf("IMPACT!\n"); -#endif - if (!last_line) /* check if element below was hit */ { if (Feld[x][y + 1] == EL_PLAYER_IS_LEAVING) @@ -4458,10 +3716,6 @@ void Impact(int x, int y) MovDir[x][y + 1] != MV_DOWN || MovPos[x][y + 1] <= TILEY / 2)); -#if 0 - object_hit = !IS_FREE(x, y + 1); -#endif - /* do not smash moving elements that left the smashed field in time */ if (game.engine_version >= VERSION_IDENT(2,2,0,7) && IS_MOVING(x, y + 1) && ABS(MovPos[x][y + 1] + getElementMoveStepsize(x, y + 1)) >= TILEX) @@ -4584,13 +3838,6 @@ void Impact(int x, int y) Bang(x, y + 1); return; } -#if 0 - else if (CAN_SMASH_ENEMIES(element) && IS_CLASSIC_ENEMY(smashed)) - { - Bang(x, y + 1); - return; - } -#endif else if (CAN_SMASH_EVERYTHING(element)) { if (IS_CLASSIC_ENEMY(smashed) || @@ -4650,18 +3897,10 @@ void Impact(int x, int y) CheckElementChange(x, y + 1, smashed, element, CE_SMASHED); -#if 1 - /* !!! TEST ONLY !!! */ CheckElementChangeBySide(x, y + 1, smashed, element, CE_SWITCHED, CH_SIDE_TOP); CheckTriggeredElementChangeBySide(x, y + 1, smashed, CE_SWITCH_OF_X, CH_SIDE_TOP); -#else - CheckTriggeredElementChangeBySide(x, y + 1, smashed, - CE_SWITCH_OF_X, CH_SIDE_TOP); - CheckElementChangeBySide(x, y + 1, smashed, element, - CE_SWITCHED, CH_SIDE_TOP); -#endif } } else @@ -4753,26 +3992,6 @@ inline static void TurnRoundExt(int x, int y) else if (element == EL_BD_BUTTERFLY) /* && MovDir[x][y] == left_dir) */ MovDelay[x][y] = 1; } -#if 0 - else if (element == EL_SPACESHIP || element == EL_BD_FIREFLY || - element == EL_SP_SNIKSNAK || element == EL_SP_ELECTRON) - { - TestIfBadThingTouchesOtherBadThing(x, y); - - if (ENEMY_CAN_ENTER_FIELD(element, left_x, left_y)) - MovDir[x][y] = left_dir; - else if (!ENEMY_CAN_ENTER_FIELD(element, move_x, move_y)) - MovDir[x][y] = right_dir; - - if ((element == EL_SPACESHIP || - element == EL_SP_SNIKSNAK || - element == EL_SP_ELECTRON) - && MovDir[x][y] != old_move_dir) - MovDelay[x][y] = 9; - else if (element == EL_BD_FIREFLY) /* && MovDir[x][y] == right_dir) */ - MovDelay[x][y] = 1; - } -#else else if (element == EL_SPACESHIP || element == EL_BD_FIREFLY) { TestIfBadThingTouchesOtherBadThing(x, y); @@ -4799,7 +4018,6 @@ inline static void TurnRoundExt(int x, int y) if (MovDir[x][y] != old_move_dir) MovDelay[x][y] = 9; } -#endif else if (element == EL_YAMYAM) { boolean can_turn_left = YAMYAM_CAN_ENTER_FIELD(element, left_x, left_y); @@ -4908,15 +4126,9 @@ inline static void TurnRoundExt(int x, int y) xx = x + move_xy[MovDir[x][y]].x; yy = y + move_xy[MovDir[x][y]].y; -#if 1 - /* !!! this bugfix breaks at least BD2K3, level 010 !!! [re-recorded] */ if (!IN_LEV_FIELD(xx, yy) || (!IS_FREE(xx, yy) && !IS_FOOD_PIG(Feld[xx][yy]))) MovDir[x][y] = old_move_dir; -#else - if (!IS_FREE(xx, yy) && !IS_FOOD_PIG(Feld[xx][yy])) - MovDir[x][y] = old_move_dir; -#endif MovDelay[x][y] = 0; } @@ -4928,11 +4140,6 @@ inline static void TurnRoundExt(int x, int y) int rnd_value = 24; int rnd = RND(rnd_value); -#if 0 - if (FrameCounter < 1 && x == 0 && y == 29) - printf(":2: %d/%d: %d [%d]\n", x, y, MovDir[x][y], FrameCounter); -#endif - if (can_move_on && rnd > rnd_value / 8) MovDir[x][y] = old_move_dir; else if (can_turn_left && can_turn_right) @@ -4947,25 +4154,8 @@ inline static void TurnRoundExt(int x, int y) xx = x + move_xy[MovDir[x][y]].x; yy = y + move_xy[MovDir[x][y]].y; -#if 0 - if (FrameCounter < 1 && x == 0 && y == 29) - printf(":3: %d/%d: %d (%d/%d: %d) [%d]\n", x, y, MovDir[x][y], - xx, yy, Feld[xx][yy], - FrameCounter); -#endif - -#if 1 if (!IN_LEV_FIELD_AND_IS_FREE(xx, yy)) MovDir[x][y] = old_move_dir; -#else - if (!IS_FREE(xx, yy)) - MovDir[x][y] = old_move_dir; -#endif - -#if 0 - if (FrameCounter < 1 && x == 0 && y == 29) - printf(":4: %d/%d: %d [%d]\n", x, y, MovDir[x][y], FrameCounter); -#endif MovDelay[x][y] = 0; } @@ -5003,16 +4193,10 @@ inline static void TurnRoundExt(int x, int y) } else if (element == EL_SPRING) { -#if 0 - if (MovDir[x][y] & MV_HORIZONTAL && - !SPRING_CAN_ENTER_FIELD(element, move_x, move_y)) - MovDir[x][y] = MV_NO_MOVING; -#else if (MovDir[x][y] & MV_HORIZONTAL && (!SPRING_CAN_ENTER_FIELD(element, move_x, move_y) || SPRING_CAN_ENTER_FIELD(element, x, y + 1))) MovDir[x][y] = MV_NO_MOVING; -#endif MovDelay[x][y] = 0; } @@ -5048,13 +4232,9 @@ inline static void TurnRoundExt(int x, int y) } } -#if 1 if (element == EL_ROBOT && ZX >= 0 && ZY >= 0 && (Feld[ZX][ZY] == EL_ROBOT_WHEEL_ACTIVE || game.engine_version < VERSION_IDENT(3,1,0,0))) -#else - if (element == EL_ROBOT && ZX >= 0 && ZY >= 0) -#endif { attr_x = ZX; attr_y = ZY; @@ -5397,13 +4577,7 @@ inline static void TurnRoundExt(int x, int y) MovDir[x][y] = new_move_dir; if (old_move_dir != new_move_dir) - { -#if 1 MovDelay[x][y] = GET_NEW_MOVE_DELAY(element); -#else - MovDelay[x][y] = 9; -#endif - } } } @@ -5411,26 +4585,15 @@ static void TurnRound(int x, int y) { int direction = MovDir[x][y]; -#if 0 - GfxDir[x][y] = MovDir[x][y]; -#endif - TurnRoundExt(x, y); -#if 1 GfxDir[x][y] = MovDir[x][y]; -#endif if (direction != MovDir[x][y]) GfxFrame[x][y] = 0; -#if 1 if (MovDelay[x][y]) GfxAction[x][y] = ACTION_TURNING_FROM_LEFT + MV_DIR_BIT(direction); -#else - if (MovDelay[x][y]) - GfxAction[x][y] = ACTION_WAITING; -#endif } static boolean JustBeingPushed(int x, int y) @@ -5456,23 +4619,14 @@ static boolean JustBeingPushed(int x, int y) void StartMoving(int x, int y) { -#if 0 - boolean use_spring_bug = (game.engine_version < VERSION_IDENT(2,2,0,0)); -#endif boolean started_moving = FALSE; /* some elements can fall _and_ move */ int element = Feld[x][y]; if (Stop[x][y]) return; -#if 1 if (MovDelay[x][y] == 0) GfxAction[x][y] = ACTION_DEFAULT; -#else - /* !!! this should be handled more generic (not only for mole) !!! */ - if (element != EL_MOLE && GfxAction[x][y] != ACTION_DIGGING) - GfxAction[x][y] = ACTION_DEFAULT; -#endif if (CAN_FALL(element) && y < lev_fieldy - 1) { @@ -5490,11 +4644,8 @@ void StartMoving(int x, int y) Feld[x][y] = EL_QUICKSAND_EMPTYING; Store[x][y] = EL_ROCK; -#if 1 + PlayLevelSoundAction(x, y, ACTION_EMPTYING); -#else - PlayLevelSound(x, y, SND_QUICKSAND_EMPTYING); -#endif } else if (Feld[x][y + 1] == EL_QUICKSAND_EMPTY) { @@ -5512,11 +4663,8 @@ void StartMoving(int x, int y) Feld[x][y + 1] = EL_QUICKSAND_FULL; Store[x][y + 1] = Store[x][y]; Store[x][y] = 0; -#if 1 + PlayLevelSoundAction(x, y, ACTION_FILLING); -#else - PlayLevelSound(x, y, SND_QUICKSAND_FILLING); -#endif } } else if ((element == EL_ROCK || element == EL_BD_ROCK) && @@ -5527,11 +4675,8 @@ void StartMoving(int x, int y) Feld[x][y] = EL_QUICKSAND_FILLING; Store[x][y] = element; -#if 1 + PlayLevelSoundAction(x, y, ACTION_FILLING); -#else - PlayLevelSound(x, y, SND_QUICKSAND_FILLING); -#endif } else if (element == EL_MAGIC_WALL_FULL) { @@ -5601,11 +4746,7 @@ void StartMoving(int x, int y) EL_BD_MAGIC_WALL_FILLING); Store[x][y] = element; } -#if 0 - else if (CAN_SMASH(element) && Feld[x][y + 1] == EL_ACID) -#else else if (CAN_FALL(element) && Feld[x][y + 1] == EL_ACID) -#endif { SplashAcid(x, y + 1); @@ -5613,12 +4754,7 @@ void StartMoving(int x, int y) started_moving = TRUE; Store[x][y] = EL_ACID; -#if 0 - /* !!! TEST !!! better use "_FALLING" etc. !!! */ - GfxAction[x][y + 1] = ACTION_ACTIVE; -#endif } -#if 1 else if ((game.engine_version >= VERSION_IDENT(3,1,0,0) && CheckCollision[x][y] && !IS_FREE(x, y + 1)) || @@ -5639,18 +4775,6 @@ void StartMoving(int x, int y) CAN_SMASH(element) && WasJustMoving[x][y] && !Pushed[x][y + 1] && (Feld[x][y + 1] == EL_BLOCKED))) #endif - -#else -#if 1 - else if (game.engine_version < VERSION_IDENT(2,2,0,7) && - CAN_SMASH(element) && Feld[x][y + 1] == EL_BLOCKED && - WasJustMoving[x][y] && !Pushed[x][y + 1]) -#else - else if (CAN_SMASH(element) && Feld[x][y + 1] == EL_BLOCKED && - WasJustMoving[x][y]) -#endif -#endif - { /* this is needed for a special case not covered by calling "Impact()" from "ContinueMoving()": if an element moves to a tile directly below @@ -5662,18 +4786,8 @@ void StartMoving(int x, int y) element; also, the case of the player being the element to smash was simply not covered here... :-/ ) */ -#if 0 - WasJustMoving[x][y] = 0; - WasJustFalling[x][y] = 0; -#endif - CheckCollision[x][y] = 0; -#if 0 - if (IS_PLAYER(x, y + 1)) - printf("::: we ARE now killing the player [%d]\n", FrameCounter); -#endif - Impact(x, y); } else if (IS_FREE(x, y + 1) && element == EL_SPRING && level.use_spring_bug) @@ -5697,23 +4811,10 @@ void StartMoving(int x, int y) Feld[x][y] = EL_AMOEBA_GROWING; Store[x][y] = EL_AMOEBA_WET; } - /* Store[x][y + 1] must be zero, because: - (EL_QUICKSAND_FULL -> EL_ROCK): Store[x][y + 1] == EL_QUICKSAND_EMPTY - */ -#if 0 -#if OLD_GAME_BEHAVIOUR - else if (IS_SLIPPERY(Feld[x][y + 1]) && !Store[x][y + 1]) -#else - else if (IS_SLIPPERY(Feld[x][y + 1]) && !Store[x][y + 1] && - !IS_FALLING(x, y + 1) && !WasJustMoving[x][y + 1] && - element != EL_DX_SUPABOMB) -#endif -#else else if (((IS_SLIPPERY(Feld[x][y + 1]) && !IS_PLAYER(x, y + 1)) || (IS_EM_SLIPPERY_WALL(Feld[x][y + 1]) && IS_GEM(element))) && !IS_FALLING(x, y + 1) && !WasJustMoving[x][y + 1] && element != EL_DX_SUPABOMB && element != EL_SP_DISK_ORANGE) -#endif { boolean can_fall_left = (x > 0 && IS_FREE(x - 1, y) && (IS_FREE(x - 1, y + 1) || @@ -5751,7 +4852,6 @@ void StartMoving(int x, int y) } #endif -#if 1 if (can_fall_both) { if (game.emulation == EMU_BOULDERDASH || @@ -5762,17 +4862,9 @@ void StartMoving(int x, int y) can_fall_both = FALSE; } -#endif if (can_fall_any) { -#if 0 - if (can_fall_both && - (game.emulation != EMU_BOULDERDASH && - element != EL_BD_ROCK && element != EL_BD_DIAMOND)) - can_fall_left = !(can_fall_right = RND(2)); -#endif - /* if not determined otherwise, prefer left side for slipping down */ InitMovingField(x, y, can_fall_left ? MV_LEFT : MV_RIGHT); started_moving = TRUE; @@ -5792,17 +4884,13 @@ void StartMoving(int x, int y) if ((belt_dir == MV_LEFT && left_is_free) || (belt_dir == MV_RIGHT && right_is_free)) { -#if 1 int nextx = (belt_dir == MV_LEFT ? x - 1 : x + 1); -#endif InitMovingField(x, y, belt_dir); started_moving = TRUE; -#if 1 Pushed[x][y] = TRUE; Pushed[nextx][y] = TRUE; -#endif GfxAction[x][y] = ACTION_DEFAULT; } @@ -5836,80 +4924,20 @@ void StartMoving(int x, int y) Moving2Blocked(x, y, &newx, &newy); -#if 1 if (IS_PUSHABLE(element) && JustBeingPushed(x, y)) return; -#else - if ((element == EL_SATELLITE || - element == EL_BALLOON || - element == EL_SPRING) - && JustBeingPushed(x, y)) - return; -#endif - -#if 1 -#if 1 if (game.engine_version >= VERSION_IDENT(3,1,0,0) && CheckCollision[x][y] && !IN_LEV_FIELD_AND_IS_FREE(newx, newy)) -#else - if (game.engine_version >= VERSION_IDENT(3,1,0,0) && - WasJustMoving[x][y] && IN_LEV_FIELD(newx, newy) && - (Feld[newx][newy] == EL_BLOCKED || IS_PLAYER(newx, newy))) -#endif { -#if 0 - printf("::: element %d '%s' WasJustMoving %d [%d, %d, %d, %d]\n", - element, element_info[element].token_name, - WasJustMoving[x][y], - HAS_ANY_CHANGE_EVENT(element, CE_HITTING_SOMETHING), - HAS_ANY_CHANGE_EVENT(element, CE_HIT_BY_SOMETHING), - HAS_ANY_CHANGE_EVENT(element, CE_HITTING_X), - HAS_ANY_CHANGE_EVENT(element, CE_HIT_BY_X)); -#endif - -#if 1 WasJustMoving[x][y] = 0; -#endif - CheckCollision[x][y] = 0; TestIfElementHitsCustomElement(x, y, MovDir[x][y]); -#if 0 - if (Feld[x][y] != element) /* element has changed */ - { - element = Feld[x][y]; - move_pattern = element_info[element].move_pattern; - - if (!CAN_MOVE(element)) - return; - } -#else if (Feld[x][y] != element) /* element has changed */ return; -#endif - } -#endif - -#if 0 -#if 0 - if (element == EL_SPRING && MovDir[x][y] == MV_DOWN) - Feld[x][y + 1] = EL_EMPTY; /* was set to EL_BLOCKED above */ -#else - if (element == EL_SPRING && MovDir[x][y] != MV_NO_MOVING) - { - Moving2Blocked(x, y, &newx, &newy); - if (Feld[newx][newy] == EL_BLOCKED) - Feld[newx][newy] = EL_EMPTY; /* was set to EL_BLOCKED above */ } -#endif -#endif - -#if 0 - if (FrameCounter < 1 && x == 0 && y == 29) - printf(":1: %d/%d: %d [%d]\n", x, y, MovDir[x][y], FrameCounter); -#endif if (!MovDelay[x][y]) /* start new movement phase */ { @@ -5928,11 +4956,6 @@ void StartMoving(int x, int y) { TurnRound(x, y); -#if 0 - if (FrameCounter < 1 && x == 0 && y == 29) - printf(":9: %d: %d [%d]\n", y, MovDir[x][y], FrameCounter); -#endif - if (MovDelay[x][y] && (element == EL_BUG || element == EL_SPACESHIP || element == EL_SP_SNIKSNAK || @@ -5946,42 +4969,11 @@ void StartMoving(int x, int y) { MovDelay[x][y]--; -#if 0 - if (element == EL_YAMYAM) - { - printf("::: %d\n", - el_act_dir2img(EL_YAMYAM, ACTION_WAITING, MV_LEFT)); - DrawLevelElementAnimation(x, y, element); - } -#endif - - if (MovDelay[x][y]) /* element still has to wait some time */ - { -#if 0 - /* !!! PLACE THIS SOMEWHERE AFTER "TurnRound()" !!! */ - ResetGfxAnimation(x, y); -#endif - -#if 0 - if (GfxAction[x][y] != ACTION_WAITING) - printf("::: %d: %d != ACTION_WAITING\n", element, GfxAction[x][y]); - - GfxAction[x][y] = ACTION_WAITING; -#endif - } - if (element == EL_ROBOT || -#if 0 - element == EL_PACMAN || -#endif element == EL_YAMYAM || element == EL_DARK_YAMYAM) { -#if 0 - DrawLevelElementAnimation(x, y, element); -#else DrawLevelElementAnimationIfNeeded(x, y, element); -#endif PlayLevelSoundAction(x, y, ACTION_WAITING); } else if (element == EL_SP_ELECTRON) @@ -5998,10 +4990,6 @@ void StartMoving(int x, int y) dir == MV_DOWN ? IMG_FLAMES_1_DOWN : IMG_EMPTY); int frame = getGraphicAnimationFrame(graphic, GfxFrame[x][y]); -#if 0 - printf("::: %d, %d\n", GfxAction[x][y], GfxFrame[x][y]); -#endif - GfxAction[x][y] = ACTION_ATTACKING; if (IS_PLAYER(x, y)) @@ -6041,16 +5029,10 @@ void StartMoving(int x, int y) RemoveMovingField(xx, yy); #endif -#if 0 - if (ChangeDelay[xx][yy]) - printf("::: !!! [%d]\n", (IS_MOVING(xx, yy) || - Feld[xx][yy] == EL_BLOCKED)); -#endif - -#if 1 ChangeDelay[xx][yy] = 0; -#endif + Feld[xx][yy] = EL_FLAMES; + if (IN_SCR_FIELD(sx, sy)) { DrawLevelFieldCrumbledSand(xx, yy); @@ -6072,13 +5054,6 @@ void StartMoving(int x, int y) return; } - -#if 0 - /* special case of "moving" animation of waiting elements (FIX THIS !!!); - for all other elements GfxAction will be set by InitMovingField() */ - if (element == EL_BD_BUTTERFLY || element == EL_BD_FIREFLY) - GfxAction[x][y] = ACTION_MOVING; -#endif } /* now make next step */ @@ -6089,38 +5064,15 @@ void StartMoving(int x, int y) IN_LEV_FIELD(newx, newy) && IS_PLAYER(newx, newy) && !PLAYER_ENEMY_PROTECTED(newx, newy)) { -#if 1 TestIfBadThingRunsIntoHero(x, y, MovDir[x][y]); return; -#else - /* player killed by element which is deadly when colliding with */ - MovDir[x][y] = 0; - KillHero(PLAYERINFO(newx, newy)); - return; -#endif - } -#if 1 -#if 1 + else if (CAN_MOVE_INTO_ACID(element) && IN_LEV_FIELD(newx, newy) && Feld[newx][newy] == EL_ACID && (MovDir[x][y] == MV_DOWN || game.engine_version >= VERSION_IDENT(3,1,0,0))) -#else - else if (CAN_MOVE_INTO_ACID(element) && MovDir[x][y] == MV_DOWN && - IN_LEV_FIELD(newx, newy) && Feld[newx][newy] == EL_ACID) -#endif -#else - - else if ((element == EL_PENGUIN || - element == EL_ROBOT || - element == EL_SATELLITE || - element == EL_BALLOON || - IS_CUSTOM_ELEMENT(element)) && - IN_LEV_FIELD(newx, newy) && - MovDir[x][y] == MV_DOWN && Feld[newx][newy] == EL_ACID) -#endif { SplashAcid(newx, newy); Store[x][y] = EL_ACID; @@ -6129,13 +5081,8 @@ void StartMoving(int x, int y) { if (Feld[newx][newy] == EL_EXIT_OPEN) { -#if 1 RemoveField(x, y); DrawLevelField(x, y); -#else - Feld[x][y] = EL_EMPTY; - DrawLevelField(x, y); -#endif PlayLevelSound(newx, newy, SND_PENGUIN_PASSING); if (IN_SCR_FIELD(SCREENX(newx), SCREENY(newy))) @@ -6191,32 +5138,11 @@ void StartMoving(int x, int y) return; } } - -#if 1 - - /* - else if (move_pattern & MV_MAZE_RUNNER_STYLE && IN_LEV_FIELD(newx, newy)) - */ - else if (IS_CUSTOM_ELEMENT(element) && - CUSTOM_ELEMENT_CAN_ENTER_FIELD(element, newx, newy) - -#if 0 - && - !IS_FREE(newx, newy) -#endif - -) + CUSTOM_ELEMENT_CAN_ENTER_FIELD(element, newx, newy)) { int new_element = Feld[newx][newy]; -#if 0 - printf("::: '%s' digs '%s' [%d]\n", - element_info[element].token_name, - element_info[Feld[newx][newy]].token_name, - StorePlayer[newx][newy]); -#endif - if (!IS_FREE(newx, newy)) { int action = (IS_DIGGABLE(new_element) ? ACTION_DIGGING : @@ -6252,8 +5178,6 @@ void StartMoving(int x, int y) PlayLevelSoundAction(x, y, action); } -#if 1 -#if 1 Store[newx][newy] = EL_EMPTY; if (IS_EQUAL_OR_IN_GROUP(new_element, MOVE_ENTER_EL(element))) { @@ -6266,16 +5190,6 @@ void StartMoving(int x, int y) Store[newx][newy] = element_info[element].move_leave_element; #endif } -#else - Store[newx][newy] = EL_EMPTY; - if (IS_EQUAL_OR_IN_GROUP(new_element, MOVE_ENTER_EL(element)) || - element_info[element].move_leave_type == LEAVE_TYPE_UNLIMITED) - Store[newx][newy] = element_info[element].move_leave_element; -#endif -#else - if (IS_EQUAL_OR_IN_GROUP(new_element, MOVE_ENTER_EL(element))) - element_info[element].can_leave_element = TRUE; -#endif if (move_pattern & MV_MAZE_RUNNER_STYLE) { @@ -6283,9 +5197,6 @@ void StartMoving(int x, int y) PlayerVisit[x][y] /= 8; /* expire player visit path */ } } - -#endif - else if (element == EL_DRAGON && IN_LEV_FIELD(newx, newy)) { if (!IS_FREE(newx, newy)) @@ -6314,10 +5225,8 @@ void StartMoving(int x, int y) element1 != EL_DRAGON && element2 != EL_DRAGON && element1 != EL_FLAMES && element2 != EL_FLAMES) { -#if 1 ResetGfxAnimation(x, y); GfxAction[x][y] = ACTION_ATTACKING; -#endif if (IS_PLAYER(x, y)) DrawPlayerField(x, y); @@ -6379,12 +5288,15 @@ void StartMoving(int x, int y) #if 0 /* !!! test !!! */ if (IS_MOVING(newx, newy) || IS_BLOCKED(newx, newy)) + { + RemoveMovingField(newx, newy); + } #else if (IS_MOVING(newx, newy)) -#endif { RemoveMovingField(newx, newy); } +#endif else { Feld[newx][newy] = EL_EMPTY; @@ -6438,19 +5350,13 @@ void StartMoving(int x, int y) TurnRound(x, y); #if 0 + /* !!! NEW "CE_BLOCKED" STUFF !!! -- DOES NOT WORK YET... !!! */ if (move_pattern & MV_ANY_DIRECTION && move_pattern == MovDir[x][y]) { int blocking_element = (IN_LEV_FIELD(newx, newy) ? Feld[newx][newy] : BorderElement); -#if 0 - printf("::: '%s' is blocked by '%s'! [%d,%d -> %d,%d]\n", - element_info[element].token_name, - element_info[blocking_element].token_name, - x, y, newx, newy); -#endif - CheckElementChangeBySide(x, y, element, blocking_element, CE_BLOCKED, MovDir[x][y]); @@ -6458,32 +5364,12 @@ void StartMoving(int x, int y) } #endif -#if 1 if (GFX_ELEMENT(element) != EL_SAND) /* !!! FIX THIS (crumble) !!! */ DrawLevelElementAnimation(x, y, element); -#else - if (element == EL_BUG || - element == EL_SPACESHIP || - element == EL_SP_SNIKSNAK) - DrawLevelField(x, y); - else if (element == EL_MOLE) - DrawLevelField(x, y); - else if (element == EL_BD_BUTTERFLY || - element == EL_BD_FIREFLY) - DrawLevelElementAnimationIfNeeded(x, y, element); - else if (element == EL_SATELLITE) - DrawLevelElementAnimationIfNeeded(x, y, element); - else if (element == EL_SP_ELECTRON) - DrawLevelElementAnimationIfNeeded(x, y, element); -#endif if (DONT_TOUCH(element)) TestIfBadThingTouchesHero(x, y); -#if 0 - PlayLevelSoundAction(x, y, ACTION_WAITING); -#endif - return; } @@ -6496,6 +5382,7 @@ void StartMoving(int x, int y) ContinueMoving(x, y); } +/* (emacs is confused here for some reason; this makes it happy again ;-) ) */ void dummy() { } @@ -6509,29 +5396,14 @@ void ContinueMoving(int x, int y) int dx = (direction == MV_LEFT ? -1 : direction == MV_RIGHT ? +1 : 0); int dy = (direction == MV_UP ? -1 : direction == MV_DOWN ? +1 : 0); int newx = x + dx, newy = y + dy; -#if 0 - int nextx = newx + dx, nexty = newy + dy; -#endif -#if 1 boolean pushed_by_player = (Pushed[x][y] && IS_PLAYER(x, y)); boolean pushed_by_conveyor = (Pushed[x][y] && !IS_PLAYER(x, y)); -#else - boolean pushed_by_player = Pushed[x][y]; -#endif boolean last_line = (newy == lev_fieldy - 1); MovPos[x][y] += getElementMoveStepsize(x, y); -#if 0 - if (pushed_by_player && IS_PLAYER(x, y)) - { - /* special case: moving object pushed by player */ - MovPos[x][y] = SIGN(MovPos[x][y]) * (TILEX - ABS(PLAYERINFO(x,y)->MovPos)); - } -#else if (pushed_by_player) /* special case: moving object pushed by player */ MovPos[x][y] = SIGN(MovPos[x][y]) * (TILEX - ABS(PLAYERINFO(x,y)->MovPos)); -#endif if (ABS(MovPos[x][y]) < TILEX) { @@ -6546,12 +5418,10 @@ void ContinueMoving(int x, int y) Feld[newx][newy] = element; MovPos[x][y] = 0; /* force "not moving" for "crumbled sand" */ -#if 1 if (Store[x][y] == EL_ACID) /* element is moving into acid pool */ { element = Feld[newx][newy] = EL_ACID; } -#endif else if (element == EL_MOLE) { Feld[x][y] = EL_SAND; @@ -6611,27 +5481,6 @@ void ContinueMoving(int x, int y) Back[x][y] = Back[newx][newy] = 0; } -#if 0 - else if (Store[x][y] == EL_ACID) - { - element = Feld[newx][newy] = EL_ACID; - } -#endif -#if 0 - else if (IS_CUSTOM_ELEMENT(element) && !IS_PLAYER(x, y) && - ei->move_leave_element != EL_EMPTY && - (ei->move_leave_type == LEAVE_TYPE_UNLIMITED || - Store[x][y] != EL_EMPTY)) - { - /* some elements can leave other elements behind after moving */ - - Feld[x][y] = ei->move_leave_element; - InitField(x, y, FALSE); - - if (GFX_CRUMBLED(Feld[x][y])) - DrawLevelFieldCrumbledSandNeighbours(x, y); - } -#endif Store[x][y] = EL_EMPTY; MovPos[x][y] = 0; @@ -6661,22 +5510,10 @@ void ContinueMoving(int x, int y) Pushed[x][y] = Pushed[newx][newy] = FALSE; -#if 0 - /* do this after checking for left-behind element */ - ResetGfxAnimation(x, y); /* reset animation values for old field */ -#endif - -#if 1 /* some elements can leave other elements behind after moving */ -#if 1 if (IS_CUSTOM_ELEMENT(element) && ei->move_leave_element != EL_EMPTY && (ei->move_leave_type == LEAVE_TYPE_UNLIMITED || stored != EL_EMPTY) && (!IS_PLAYER(x, y) || IS_WALKABLE(ei->move_leave_element))) -#else - if (IS_CUSTOM_ELEMENT(element) && ei->move_leave_element != EL_EMPTY && - (ei->move_leave_type == LEAVE_TYPE_UNLIMITED || stored != EL_EMPTY) && - !IS_PLAYER(x, y)) -#endif { int move_leave_element = ei->move_leave_element; @@ -6701,63 +5538,16 @@ void ContinueMoving(int x, int y) if (ELEM_IS_PLAYER(move_leave_element)) RelocatePlayer(x, y, move_leave_element); } -#endif - -#if 0 - /* some elements can leave other elements behind after moving */ - if (IS_CUSTOM_ELEMENT(element) && !IS_PLAYER(x, y) && - ei->move_leave_element != EL_EMPTY && - (ei->move_leave_type == LEAVE_TYPE_UNLIMITED || - ei->can_leave_element_last)) - { - Feld[x][y] = ei->move_leave_element; - InitField(x, y, FALSE); - - if (GFX_CRUMBLED(Feld[x][y])) - DrawLevelFieldCrumbledSandNeighbours(x, y); - } - ei->can_leave_element_last = ei->can_leave_element; - ei->can_leave_element = FALSE; -#endif - -#if 1 /* do this after checking for left-behind element */ ResetGfxAnimation(x, y); /* reset animation values for old field */ -#endif - -#if 0 - /* 2.1.1 (does not work correctly for spring) */ - if (!CAN_MOVE(element)) - MovDir[newx][newy] = 0; -#else -#if 0 - /* (does not work for falling objects that slide horizontally) */ - if (CAN_FALL(element) && MovDir[newx][newy] == MV_DOWN) - MovDir[newx][newy] = 0; -#else - /* - if (!CAN_MOVE(element) || - (element == EL_SPRING && MovDir[newx][newy] == MV_DOWN)) - MovDir[newx][newy] = 0; - */ - -#if 0 - if (!CAN_MOVE(element) || - (CAN_FALL(element) && direction == MV_DOWN)) - GfxDir[x][y] = MovDir[newx][newy] = 0; -#else if (!CAN_MOVE(element) || (CAN_FALL(element) && direction == MV_DOWN && (element == EL_SPRING || element_info[element].move_pattern == MV_WHEN_PUSHED || element_info[element].move_pattern == MV_WHEN_DROPPED))) GfxDir[x][y] = MovDir[newx][newy] = 0; -#endif - -#endif -#endif DrawLevelField(x, y); DrawLevelField(newx, newy); @@ -6770,21 +5560,10 @@ void ContinueMoving(int x, int y) !(element_info[element].move_pattern & direction)) TurnRound(newx, newy); -#if 1 /* prevent elements on conveyor belt from moving on in last direction */ if (pushed_by_conveyor && CAN_FALL(element) && direction & MV_HORIZONTAL) - { -#if 0 - if (CAN_MOVE(element)) - InitMovDir(newx, newy); - else - MovDir[newx][newy] = 0; -#else MovDir[newx][newy] = 0; -#endif - } -#endif if (!pushed_by_player) { @@ -6812,12 +5591,6 @@ void ContinueMoving(int x, int y) TestIfFriendTouchesBadThing(newx, newy); #if USE_NEW_MOVE_STYLE -#if 0 - if (CAN_FALL(element) && direction == MV_DOWN && - !last_line && IS_PLAYER(x, newy + 1)) - printf("::: we would now kill the player [%d]\n", FrameCounter); -#endif - /* give the player one last chance (one more frame) to move away */ if (CAN_FALL(element) && direction == MV_DOWN && (last_line || (!IS_FREE(x, newy + 1) && @@ -6830,31 +5603,14 @@ void ContinueMoving(int x, int y) Impact(x, newy); #endif -#if 1 - #if USE_PUSH_BUGFIX -#if 1 if (pushed_by_player && !game.use_change_when_pushing_bug) -#else - if (pushed_by_player && game.engine_version >= VERSION_IDENT(3,1,0,0)) -#endif #else if (pushed_by_player) #endif { -#if 1 int dig_side = MV_DIR_OPPOSITE(direction); -#else - static int trigger_sides[4] = - { - CH_SIDE_RIGHT, /* moving left */ - CH_SIDE_LEFT, /* moving right */ - CH_SIDE_BOTTOM, /* moving up */ - CH_SIDE_TOP, /* moving down */ - }; - int dig_side = trigger_sides[MV_DIR_BIT(direction)]; -#endif struct PlayerInfo *player = PLAYERINFO(x, y); CheckElementChangeByPlayer(newx, newy, element, CE_PUSHED_BY_PLAYER, @@ -6862,94 +5618,10 @@ void ContinueMoving(int x, int y) CheckTriggeredElementChangeByPlayer(newx,newy, element, CE_PLAYER_PUSHES_X, player->index_bit, dig_side); } -#endif -#if 1 TestIfElementTouchesCustomElement(x, y); /* empty or new element */ -#endif - -#if 0 - if (ChangePage[newx][newy] != -1) /* delayed change */ - ChangeElement(newx, newy, ChangePage[newx][newy]); -#endif - -#if 1 TestIfElementHitsCustomElement(newx, newy, direction); - -#else - - if (!IN_LEV_FIELD(nextx, nexty) || !IS_FREE(nextx, nexty)) - { - int hitting_element = Feld[newx][newy]; - - /* !!! fix side (direction) orientation here and elsewhere !!! */ - CheckElementChangeBySide(newx, newy, hitting_element, CE_HITTING_SOMETHING, - direction); - -#if 0 - if (IN_LEV_FIELD(nextx, nexty)) - { - int opposite_direction = MV_DIR_OPPOSITE(direction); - int hitting_side = direction; - int touched_side = opposite_direction; - int touched_element = MovingOrBlocked2Element(nextx, nexty); - boolean object_hit = (!IS_MOVING(nextx, nexty) || - MovDir[nextx][nexty] != direction || - ABS(MovPos[nextx][nexty]) <= TILEY / 2); - - if (object_hit) - { - int i; - - CheckElementChangeBySide(nextx, nexty, touched_element, - CE_HIT_BY_SOMETHING, opposite_direction); - - if (IS_CUSTOM_ELEMENT(hitting_element) && - HAS_ANY_CHANGE_EVENT(hitting_element, CE_HITTING_X)) - { - for (i = 0; i < element_info[hitting_element].num_change_pages; i++) - { - struct ElementChangeInfo *change = - &element_info[hitting_element].change_page[i]; - - if (change->can_change && - change->has_event[CE_HITTING_X] && - change->trigger_side & touched_side && - change->trigger_element == touched_element) - { - CheckElementChangeByPage(newx, newy, hitting_element, - touched_element, CE_HITTING_X, i); - break; - } - } - } - - if (IS_CUSTOM_ELEMENT(touched_element) && - HAS_ANY_CHANGE_EVENT(touched_element, CE_HIT_BY_X)) - { - for (i = 0; i < element_info[touched_element].num_change_pages; i++) - { - struct ElementChangeInfo *change = - &element_info[touched_element].change_page[i]; - - if (change->can_change && - change->has_event[CE_HIT_BY_X] && - change->trigger_side & hitting_side && - change->trigger_element == hitting_element) - { - CheckElementChangeByPage(nextx, nexty, touched_element, - hitting_element, CE_HIT_BY_X,i); - break; - } - } - } - } - } -#endif - } -#endif - TestIfPlayerTouchesCustomElement(newx, newy); TestIfElementTouchesCustomElement(newx, newy); } @@ -7144,14 +5816,7 @@ void AmoebeWaechst(int x, int y) if (DelayReached(&sound_delay, sound_delay_value)) { -#if 1 PlayLevelSoundElementAction(x, y, Store[x][y], ACTION_GROWING); -#else - if (Store[x][y] == EL_BD_AMOEBA) - PlayLevelSound(x, y, SND_BD_AMOEBA_GROWING); - else - PlayLevelSound(x, y, SND_AMOEBA_GROWING); -#endif sound_delay_value = 30; } } @@ -7255,7 +5920,6 @@ void AmoebeAbleger(int ax, int ay) if (!IN_LEV_FIELD(x, y)) return; -#if 1 if (IS_FREE(x, y) || CAN_GROW_INTO(Feld[x][y]) || Feld[x][y] == EL_QUICKSAND_EMPTY) @@ -7263,15 +5927,6 @@ void AmoebeAbleger(int ax, int ay) newax = x; neway = y; } -#else - /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */ - if (IS_FREE(x, y) || - Feld[x][y] == EL_SAND || Feld[x][y] == EL_QUICKSAND_EMPTY) - { - newax = x; - neway = y; - } -#endif if (newax == ax && neway == ay) return; @@ -7290,7 +5945,6 @@ void AmoebeAbleger(int ax, int ay) if (!IN_LEV_FIELD(x, y)) continue; -#if 1 if (IS_FREE(x, y) || CAN_GROW_INTO(Feld[x][y]) || Feld[x][y] == EL_QUICKSAND_EMPTY) @@ -7299,27 +5953,13 @@ void AmoebeAbleger(int ax, int ay) neway = y; break; } -#else - /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */ - if (IS_FREE(x, y) || - Feld[x][y] == EL_SAND || Feld[x][y] == EL_QUICKSAND_EMPTY) - { - newax = x; - neway = y; - break; - } -#endif else if (IS_PLAYER(x, y)) waiting_for_player = TRUE; } if (newax == ax && neway == ay) /* amoeba cannot grow */ { -#if 1 if (i == 4 && (!waiting_for_player || element == EL_BD_AMOEBA)) -#else - if (i == 4 && (!waiting_for_player || game.emulation == EMU_BOULDERDASH)) -#endif { Feld[ax][ay] = EL_AMOEBA_DEAD; DrawLevelField(ax, ay); @@ -7374,11 +6014,8 @@ void AmoebeAbleger(int ax, int ay) else if (neway == ay) { Feld[newax][neway] = EL_AMOEBA_DROP; /* drop left/right of amoeba */ -#if 1 + PlayLevelSoundAction(newax, neway, ACTION_GROWING); -#else - PlayLevelSound(newax, neway, SND_AMOEBA_GROWING); -#endif } else { @@ -7450,7 +6087,6 @@ void Life(int ax, int ay) changed = TRUE; } } -#if 1 else if (IS_FREE(xx, yy) || CAN_GROW_INTO(Feld[xx][yy])) { /* free border field */ if (nachbarn >= life[2] && nachbarn <= life[3]) @@ -7463,21 +6099,6 @@ void Life(int ax, int ay) changed = TRUE; } } -#else - /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */ - else if (IS_FREE(xx, yy) || Feld[xx][yy] == EL_SAND) - { /* free border field */ - if (nachbarn >= life[2] && nachbarn <= life[3]) - { - Feld[xx][yy] = element; - MovDelay[xx][yy] = (element == EL_GAME_OF_LIFE ? 0 : life_time-1); - if (!Stop[xx][yy]) - DrawLevelField(xx, yy); - Stop[xx][yy] = TRUE; - changed = TRUE; - } - } -#endif } if (changed) @@ -7503,12 +6124,7 @@ static void StopRobotWheel(int x, int y) static void InitTimegateWheel(int x, int y) { -#if 1 ChangeDelay[x][y] = level.time_timegate * FRAMES_PER_SECOND; -#else - /* another brainless, "type style" bug ... :-( */ - ChangeDelay[x][y] = level.time_wheel * FRAMES_PER_SECOND; -#endif } static void RunTimegateWheel(int x, int y) @@ -7573,11 +6189,8 @@ static void CloseAllOpenTimegates() if (element == EL_TIMEGATE_OPEN || element == EL_TIMEGATE_OPENING) { Feld[x][y] = EL_TIMEGATE_CLOSING; -#if 1 + PlayLevelSoundAction(x, y, ACTION_CLOSING); -#else - PlayLevelSound(x, y, SND_TIMEGATE_CLOSING); -#endif } } } @@ -7779,11 +6392,7 @@ void MauerAbleger(int ax, int ay) Feld[ax][ay] = EL_WALL; if (new_wall) -#if 1 PlayLevelSoundAction(ax, ay, ACTION_GROWING); -#else - PlayLevelSound(ax, ay, SND_EXPANDABLE_WALL_GROWING); -#endif } void CheckForDragon(int x, int y) @@ -8197,44 +6806,26 @@ static void ChangeElementNowExt(struct ElementChangeInfo *change, int x, int y, int target_element) { int previous_move_direction = MovDir[x][y]; -#if 1 boolean add_player = (ELEM_IS_PLAYER(target_element) && IS_WALKABLE(Feld[x][y])); -#else - boolean add_player = (ELEM_IS_PLAYER(target_element) && - IS_WALKABLE(Feld[x][y]) && - !IS_MOVING(x, y)); -#endif /* check if element under player changes from accessible to unaccessible (needed for special case of dropping element which then changes) */ if (IS_PLAYER(x, y) && !PLAYER_EXPLOSION_PROTECTED(x, y) && IS_ACCESSIBLE(Feld[x][y]) && !IS_ACCESSIBLE(target_element)) { -#if 0 - printf("::: BOOOM! [%d, '%s']\n", target_element, - element_info[target_element].token_name); -#endif - Bang(x, y); return; } -#if 1 if (!add_player) -#endif { -#if 1 if (IS_MOVING(x, y) || IS_BLOCKED(x, y)) RemoveMovingField(x, y); else RemoveField(x, y); Feld[x][y] = target_element; -#else - RemoveField(x, y); - Feld[x][y] = target_element; -#endif ResetGfxAnimation(x, y); ResetRandomAnimationValue(x, y); @@ -8242,13 +6833,7 @@ static void ChangeElementNowExt(struct ElementChangeInfo *change, if (element_info[Feld[x][y]].move_direction_initial == MV_START_PREVIOUS) MovDir[x][y] = previous_move_direction; -#if 1 InitField_WithBug1(x, y, FALSE); -#else - InitField(x, y, FALSE); - if (CAN_MOVE(Feld[x][y])) - InitMovDir(x, y); -#endif DrawLevelField(x, y); @@ -8256,19 +6841,9 @@ static void ChangeElementNowExt(struct ElementChangeInfo *change, DrawLevelFieldCrumbledSandNeighbours(x, y); } -#if 0 - Changed[x][y] |= ChangeEvent[x][y]; /* ignore same changes in this frame */ -#endif - -#if 0 - TestIfBadThingTouchesHero(x, y); - TestIfPlayerTouchesCustomElement(x, y); - TestIfElementTouchesCustomElement(x, y); -#endif - - /* "Changed[][]" not set yet to allow "entered by player" change one time */ - if (ELEM_IS_PLAYER(target_element)) - RelocatePlayer(x, y, target_element); + /* "Changed[][]" not set yet to allow "entered by player" change one time */ + if (ELEM_IS_PLAYER(target_element)) + RelocatePlayer(x, y, target_element); #if 1 Changed[x][y] = TRUE; /* ignore all further changes in this frame */ @@ -8276,16 +6851,9 @@ static void ChangeElementNowExt(struct ElementChangeInfo *change, Changed[x][y] |= ChangeEvent[x][y]; /* ignore same changes in this frame */ #endif -#if 1 TestIfBadThingTouchesHero(x, y); TestIfPlayerTouchesCustomElement(x, y); TestIfElementTouchesCustomElement(x, y); -#endif - -#if 0 - if (change->has_action) - ExecuteCustomElementAction(...); -#endif } static boolean ChangeElementNow(int x, int y, int element, int page) @@ -8321,11 +6889,6 @@ static boolean ChangeElementNow(int x, int y, int element, int page) Changed[x][y] |= ChangeEvent[x][y]; /* ignore same changes in this frame */ #endif -#if 0 - /* !!! indirect change before direct change !!! */ - CheckTriggeredElementChangeByPage(x, y, Feld[x][y], CE_CHANGE_OF_X, page); -#endif - if (change->explode) { Bang(x, y); @@ -8372,39 +6935,13 @@ static boolean ChangeElementNow(int x, int y, int element, int page) continue; } -#if 0 - if (Changed[ex][ey]) /* do not change already changed elements */ - { - can_replace[xx][yy] = FALSE; - complete_replace = FALSE; - - continue; - } -#endif - e = Feld[ex][ey]; if (IS_MOVING(ex, ey) || IS_BLOCKED(ex, ey)) e = MovingOrBlocked2Element(ex, ey); -#if 1 - -#if 0 - is_empty = (IS_FREE(ex, ey) || - (IS_PLAYER(ex, ey) && IS_WALKABLE(content_element)) || - (IS_WALKABLE(e) && ELEM_IS_PLAYER(content_element) && - !IS_MOVING(ex, ey) && !IS_BLOCKED(ex, ey))); -#else - -#if 0 - is_empty = (IS_FREE(ex, ey) || - (IS_PLAYER(ex, ey) && IS_WALKABLE(content_element))); -#else is_empty = (IS_FREE(ex, ey) || (IS_FREE_OR_PLAYER(ex, ey) && IS_WALKABLE(content_element))); -#endif - -#endif is_walkable = (is_empty || IS_WALKABLE(e)); is_diggable = (is_empty || IS_DIGGABLE(e)); @@ -8423,23 +6960,6 @@ static boolean ChangeElementNow(int x, int y, int element, int page) if (!can_replace[xx][yy]) complete_replace = FALSE; -#else - empty_for_element = (IS_FREE(ex, ey) || (IS_FREE_OR_PLAYER(ex, ey) && - IS_WALKABLE(content_element))); -#if 1 - half_destructible = (empty_for_element || IS_DIGGABLE(e)); -#else - half_destructible = (IS_FREE(ex, ey) || IS_DIGGABLE(e)); -#endif - - if ((change->replace_when <= CP_WHEN_EMPTY && !empty_for_element) || - (change->replace_when <= CP_WHEN_DIGGABLE && !half_destructible) || - (change->replace_when <= CP_WHEN_DESTRUCTIBLE && IS_INDESTRUCTIBLE(e))) - { - can_replace[xx][yy] = FALSE; - complete_replace = FALSE; - } -#endif } if (!change->only_if_complete || complete_replace) @@ -8490,10 +7010,8 @@ static boolean ChangeElementNow(int x, int y, int element, int page) PlayLevelSoundElementAction(x, y, element, ACTION_CHANGING); } -#if 1 /* this uses direct change before indirect change */ CheckTriggeredElementChangeByPage(x, y, old_element, CE_CHANGE_OF_X, page); -#endif return TRUE; } @@ -8528,12 +7046,7 @@ static void ChangeElement(int x, int y, int page) if (ChangeDelay[x][y] == 0) /* initialize element change */ { -#if 1 ChangeDelay[x][y] = GET_CHANGE_DELAY(change) + 1; -#else - ChangeDelay[x][y] = ( change->delay_fixed * change->delay_frames + - RND(change->delay_random * change->delay_frames)) + 1; -#endif ResetGfxAnimation(x, y); ResetRandomAnimationValue(x, y); @@ -8564,11 +7077,7 @@ static void ChangeElement(int x, int y, int page) change = &ei->change_page[page]; } -#if 0 - if (IS_MOVING(x, y) && !change->explode) -#else if (IS_MOVING(x, y)) /* never change a running system ;-) */ -#endif { ChangeDelay[x][y] = 1; /* try change after next move step */ ChangePage[x][y] = page; /* remember page to use for change */ @@ -8576,11 +7085,6 @@ static void ChangeElement(int x, int y, int page) return; } -#if 0 - if (change->has_action) - ExecuteCustomElementAction(element, page); -#endif - if (ChangeElementNow(x, y, element, page)) { if (change->post_change_function) @@ -8605,10 +7109,7 @@ static boolean CheckTriggeredElementChangeExt(int lx, int ly, for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) { int element = EL_CUSTOM_START + i; - boolean change_found = FALSE; - boolean change_element = FALSE; - int page = 0; if (!CAN_CHANGE_OR_HAS_ACTION(element) || !HAS_ANY_CHANGE_EVENT(element, trigger_event)) @@ -8625,13 +7126,6 @@ static boolean CheckTriggeredElementChangeExt(int lx, int ly, change->trigger_page & trigger_page_bits && IS_EQUAL_OR_IN_GROUP(trigger_element, change->trigger_element)) { -#if 0 - if (!(change->has_event[trigger_event])) - printf("::: !!! %d triggers %d: using wrong page %d [event %d]\n", - trigger_element-EL_CUSTOM_START+1, i+1, j, trigger_event); -#endif - -#if 1 change->actual_trigger_element = trigger_element; change->actual_trigger_player = EL_PLAYER_1 + log_2(trigger_player); @@ -8652,37 +7146,8 @@ static boolean CheckTriggeredElementChangeExt(int lx, int ly, if (change->has_action) ExecuteCustomElementAction(element, j); -#else - change_element = TRUE; - page = j; - - change->actual_trigger_element = trigger_element; - change->actual_trigger_player = EL_PLAYER_1 + log_2(trigger_player); - - break; -#endif - } - } - -#if 0 - if (!change_element) - continue; - - for (y = 0; y < lev_fieldy; y++) for (x = 0; x < lev_fieldx; x++) - { -#if 0 - if (x == lx && y == ly) /* do not change trigger element itself */ - continue; -#endif - - if (Feld[x][y] == element) - { - ChangeDelay[x][y] = 1; - ChangeEvent[x][y] = trigger_event; - ChangeElement(x, y, page); } } -#endif } return TRUE; @@ -8705,21 +7170,9 @@ static boolean CheckElementChangeExt(int x, int y, element = Feld[x][y]; } -#if 1 if (Feld[x][y] != element) /* check if element has already changed */ - { -#if 0 - printf("::: %d ('%s') != %d ('%s') [%d]\n", - Feld[x][y], element_info[Feld[x][y]].token_name, - element, element_info[element].token_name, - trigger_event); -#endif - return FALSE; - } -#endif -#if 1 if (trigger_page < 0) { boolean change_element = FALSE; @@ -8734,103 +7187,12 @@ static boolean CheckElementChangeExt(int x, int y, trigger_event == CE_HITTING_X || trigger_event == CE_HIT_BY_X); - if (change->can_change && - change->has_event[trigger_event] && - change->trigger_side & trigger_side && - change->trigger_player & trigger_player -#if 1 - && - (!check_trigger_element || - IS_EQUAL_OR_IN_GROUP(trigger_element, change->trigger_element)) -#endif - ) - { - change_element = TRUE; - trigger_page = i; - - change->actual_trigger_element = trigger_element; - change->actual_trigger_player = EL_PLAYER_1 + log_2(trigger_player); - - break; - } - } - - if (!change_element) - return FALSE; - } - else - { - struct ElementInfo *ei = &element_info[element]; - struct ElementChangeInfo *change = &ei->change_page[trigger_page]; - - change->actual_trigger_element = trigger_element; - change->actual_trigger_player = EL_PLAYER_1; /* unused */ - } - -#else - - /* !!! this check misses pages with same event, but different side !!! */ - - if (trigger_page < 0) - trigger_page = element_info[element].event_page_nr[trigger_event]; - - if (!(element_info[element].change_page[trigger_page].trigger_side & trigger_side)) - return FALSE; -#endif - - ChangeDelay[x][y] = 1; - ChangeEvent[x][y] = trigger_event; - ChangeElement(x, y, trigger_page); - - return TRUE; -} - -static boolean CheckElementChangeExtTEST(int x, int y, - int element, - int trigger_element, - int trigger_event, - int trigger_player, - int trigger_side, - int trigger_page) -{ - if (!CAN_CHANGE(element) || !HAS_ANY_CHANGE_EVENT(element, trigger_event)) - return FALSE; - - if (Feld[x][y] == EL_BLOCKED) - { - Blocked2Moving(x, y, &x, &y); - element = Feld[x][y]; - } - -#if 1 - if (Feld[x][y] != element) /* check if element has already changed */ - { -#if 0 - printf("::: %d ('%s') != %d ('%s') [%d]\n", - Feld[x][y], element_info[Feld[x][y]].token_name, - element, element_info[element].token_name, - trigger_event); -#endif - - return FALSE; - } -#endif - -#if 1 - if (trigger_page < 0) - { - boolean change_element = FALSE; - int i; - - for (i = 0; i < element_info[element].num_change_pages; i++) - { - struct ElementChangeInfo *change = &element_info[element].change_page[i]; - if (change->can_change && change->has_event[trigger_event] && change->trigger_side & trigger_side && change->trigger_player & trigger_player && - IS_EQUAL_OR_IN_GROUP(trigger_element, change->trigger_element)) + (!check_trigger_element || + IS_EQUAL_OR_IN_GROUP(trigger_element, change->trigger_element))) { change_element = TRUE; trigger_page = i; @@ -8854,17 +7216,6 @@ static boolean CheckElementChangeExtTEST(int x, int y, change->actual_trigger_player = EL_PLAYER_1; /* unused */ } -#else - - /* !!! this check misses pages with same event, but different side !!! */ - - if (trigger_page < 0) - trigger_page = element_info[element].event_page_nr[trigger_event]; - - if (!(element_info[element].change_page[trigger_page].trigger_side & trigger_side)) - return FALSE; -#endif - ChangeDelay[x][y] = 1; ChangeEvent[x][y] = trigger_event; ChangeElement(x, y, trigger_page); @@ -9034,13 +7385,8 @@ static void SetPlayerWaiting(struct PlayerInfo *player, boolean is_waiting) } } -#if 1 static byte PlayerActions(struct PlayerInfo *player, byte player_action) { -#if 0 - static byte stored_player_action[MAX_PLAYERS]; - static int num_stored_actions = 0; -#endif boolean moved = FALSE, snapped = FALSE, dropped = FALSE; int left = player_action & JOY_LEFT; int right = player_action & JOY_RIGHT; @@ -9051,34 +7397,11 @@ static byte PlayerActions(struct PlayerInfo *player, byte player_action) int dx = (left ? -1 : right ? 1 : 0); int dy = (up ? -1 : down ? 1 : 0); -#if 0 - stored_player_action[player->index_nr] = 0; - num_stored_actions++; -#endif - -#if 0 - printf("::: player %d [%d]\n", player->index_nr, FrameCounter); -#endif - if (!player->active || tape.pausing) return 0; -#if 0 - printf("::: [%d %d %d %d] [%d %d]\n", - left, right, up, down, button1, button2); -#endif - if (player_action) { -#if 0 - printf("::: player %d acts [%d]\n", player->index_nr, FrameCounter); -#endif - -#if 0 - /* !!! TEST !!! */ - if (player->MovPos == 0) - CheckGravityMovement(player); -#endif if (button1) snapped = SnapField(player, dx, dy); else @@ -9100,18 +7423,10 @@ static byte PlayerActions(struct PlayerInfo *player, byte player_action) SetPlayerWaiting(player, FALSE); -#if 1 return player_action; -#else - stored_player_action[player->index_nr] = player_action; -#endif } else { -#if 0 - printf("::: player %d waits [%d]\n", player->index_nr, FrameCounter); -#endif - /* no actions for this player (no input at player's configured device) */ DigField(player, 0, 0, 0, 0, 0, 0, DF_NO_PUSH); @@ -9128,113 +7443,27 @@ static byte PlayerActions(struct PlayerInfo *player, byte player_action) return 0; } - -#if 0 - if (tape.recording && num_stored_actions >= MAX_PLAYERS) - { - printf("::: player %d recorded [%d]\n", player->index_nr, FrameCounter); - - TapeRecordAction(stored_player_action); - num_stored_actions = 0; - } -#endif } -#else - -static void PlayerActions(struct PlayerInfo *player, byte player_action) +void AdvanceFrameAndPlayerCounters(int player_nr) { - static byte stored_player_action[MAX_PLAYERS]; - static int num_stored_actions = 0; - boolean moved = FALSE, snapped = FALSE, dropped = FALSE; - int left = player_action & JOY_LEFT; - int right = player_action & JOY_RIGHT; - int up = player_action & JOY_UP; - int down = player_action & JOY_DOWN; - int button1 = player_action & JOY_BUTTON_1; - int button2 = player_action & JOY_BUTTON_2; - int dx = (left ? -1 : right ? 1 : 0); - int dy = (up ? -1 : down ? 1 : 0); - - stored_player_action[player->index_nr] = 0; - num_stored_actions++; - - printf("::: player %d [%d]\n", player->index_nr, FrameCounter); + int i; - if (!player->active || tape.pausing) - return; + /* advance frame counters (global frame counter and time frame counter) */ + FrameCounter++; + TimeFrames++; - if (player_action) + /* advance player counters (counters for move delay, move animation etc.) */ + for (i = 0; i < MAX_PLAYERS; i++) { - printf("::: player %d acts [%d]\n", player->index_nr, FrameCounter); + boolean advance_player_counters = (player_nr == -1 || player_nr == i); + int move_frames = + MOVE_DELAY_NORMAL_SPEED / stored_player[i].move_delay_value; - if (button1) - snapped = SnapField(player, dx, dy); - else - { - if (button2) - dropped = DropElement(player); + if (!advance_player_counters) /* not all players may be affected */ + continue; - moved = MovePlayer(player, dx, dy); - } - - if (tape.single_step && tape.recording && !tape.pausing) - { - if (button1 || (dropped && !moved)) - { - TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); - SnapField(player, 0, 0); /* stop snapping */ - } - } - - stored_player_action[player->index_nr] = player_action; - } - else - { - printf("::: player %d waits [%d]\n", player->index_nr, FrameCounter); - - /* no actions for this player (no input at player's configured device) */ - - DigField(player, 0, 0, 0, 0, 0, 0, DF_NO_PUSH); - SnapField(player, 0, 0); - CheckGravityMovementWhenNotMoving(player); - - if (player->MovPos == 0) - InitPlayerGfxAnimation(player, ACTION_DEFAULT, player->MovDir); - - if (player->MovPos == 0) /* needed for tape.playing */ - player->is_moving = FALSE; - } - - if (tape.recording && num_stored_actions >= MAX_PLAYERS) - { - printf("::: player %d recorded [%d]\n", player->index_nr, FrameCounter); - - TapeRecordAction(stored_player_action); - num_stored_actions = 0; - } -} -#endif - -void AdvanceFrameAndPlayerCounters(int player_nr) -{ - int i; - - /* advance frame counters (global frame counter and time frame counter) */ - FrameCounter++; - TimeFrames++; - - /* advance player counters (counters for move delay, move animation etc.) */ - for (i = 0; i < MAX_PLAYERS; i++) - { - boolean advance_player_counters = (player_nr == -1 || player_nr == i); - int move_frames = - MOVE_DELAY_NORMAL_SPEED / stored_player[i].move_delay_value; - - if (!advance_player_counters) /* not all players may be affected */ - continue; - - stored_player[i].Frame += move_frames; + stored_player[i].Frame += move_frames; if (stored_player[i].MovPos != 0) stored_player[i].StepFrame += move_frames; @@ -9263,9 +7492,7 @@ void GameActions() int i, x, y, element, graphic; byte *recorded_player_action; byte summarized_player_action = 0; -#if 1 byte tape_action[MAX_PLAYERS]; -#endif if (game_status != GAME_MODE_PLAYING) return; @@ -9282,38 +7509,24 @@ void GameActions() if (network_playing && !network_player_action_received) { - /* -#ifdef DEBUG - printf("DEBUG: try to get network player actions in time\n"); -#endif - */ + /* try to get network player actions in time */ #if defined(NETWORK_AVALIABLE) /* last chance to get network player actions without main loop delay */ HandleNetworking(); #endif + /* game was quit by network peer */ if (game_status != GAME_MODE_PLAYING) return; if (!network_player_action_received) - { - /* -#ifdef DEBUG - printf("DEBUG: failed to get network player actions in time\n"); -#endif - */ - return; - } + return; /* failed to get network player actions in time */ } if (tape.pausing) return; -#if 0 - printf("::: getting new tape action [%d]\n", FrameCounter); -#endif - recorded_player_action = (tape.playing ? TapePlayAction() : NULL); #if 1 @@ -9322,16 +7535,6 @@ void GameActions() return; #endif -#if 0 - printf("::: %d\n", stored_player[0].action); -#endif - -#if 0 - if (recorded_player_action != NULL) - for (i = 0; i < MAX_PLAYERS; i++) - stored_player[i].action = recorded_player_action[i]; -#endif - for (i = 0; i < MAX_PLAYERS; i++) { summarized_player_action |= stored_player[i].action; @@ -9348,13 +7551,10 @@ void GameActions() if (!options.network && !setup.team_mode) local_player->effective_action = summarized_player_action; -#if 1 if (recorded_player_action != NULL) for (i = 0; i < MAX_PLAYERS; i++) stored_player[i].effective_action = recorded_player_action[i]; -#endif -#if 1 for (i = 0; i < MAX_PLAYERS; i++) { tape_action[i] = stored_player[i].effective_action; @@ -9366,7 +7566,6 @@ void GameActions() /* only save actions from input devices, but not programmed actions */ if (tape.recording) TapeRecordAction(tape_action); -#endif for (i = 0; i < MAX_PLAYERS; i++) { @@ -9383,42 +7582,9 @@ void GameActions() CheckGravityMovement(&stored_player[i]); #endif -#if 1 /* overwrite programmed action with tape action */ if (stored_player[i].programmed_action) actual_player_action = stored_player[i].programmed_action; -#endif - -#if 0 - if (stored_player[i].programmed_action) - printf("::: %d\n", stored_player[i].programmed_action); -#endif - - if (recorded_player_action) - { -#if 0 - if (stored_player[i].programmed_action && - stored_player[i].programmed_action != recorded_player_action[i]) - printf("::: %d: %d <-> %d\n", i, - stored_player[i].programmed_action, recorded_player_action[i]); -#endif - -#if 0 - actual_player_action = recorded_player_action[i]; -#endif - } - -#if 0 - /* overwrite tape action with programmed action */ - if (stored_player[i].programmed_action) - actual_player_action = stored_player[i].programmed_action; -#endif - -#if 0 - if (i == 0) - printf("::: action: %d: %x [%d]\n", - stored_player[i].MovPos, actual_player_action, FrameCounter); -#endif #if 1 PlayerActions(&stored_player[i], actual_player_action); @@ -9432,24 +7598,10 @@ void GameActions() ScrollPlayer(&stored_player[i], SCROLL_GO_ON); } -#if 0 - if (tape.recording) - TapeRecordAction(tape_action); -#endif - network_player_action_received = FALSE; ScrollScreen(NULL, SCROLL_GO_ON); -#if 0 - FrameCounter++; - TimeFrames++; - - for (i = 0; i < MAX_PLAYERS; i++) - stored_player[i].Frame++; -#endif - -#if 1 /* for backwards compatibility, the following code emulates a fixed bug that occured when pushing elements (causing elements that just made their last pushing step to already (if possible) make their first falling step in the @@ -9458,11 +7610,7 @@ void GameActions() used also in newer levels, but in this case the buggy pushing code is only affecting the "spring" element and no other elements */ -#if 1 if (game.engine_version < VERSION_IDENT(2,2,0,7) || level.use_spring_bug) -#else - if (game.engine_version < VERSION_IDENT(2,2,0,7)) -#endif { for (i = 0; i < MAX_PLAYERS; i++) { @@ -9470,15 +7618,10 @@ void GameActions() int x = player->jx; int y = player->jy; -#if 1 if (player->active && player->is_pushing && player->is_moving && IS_MOVING(x, y) && (game.engine_version < VERSION_IDENT(2,2,0,7) || Feld[x][y] == EL_SPRING)) -#else - if (player->active && player->is_pushing && player->is_moving && - IS_MOVING(x, y)) -#endif { ContinueMoving(x, y); @@ -9490,7 +7633,6 @@ void GameActions() } } } -#endif for (y = 0; y < lev_fieldy; y++) for (x = 0; x < lev_fieldx; x++) { @@ -9527,7 +7669,6 @@ void GameActions() GfxFrame[x][y]++; -#if 1 /* reset finished pushing action (not done in ContinueMoving() to allow continous pushing animation for elements with zero push delay) */ if (GfxAction[x][y] == ACTION_PUSHING && !IS_MOVING(x, y)) @@ -9535,7 +7676,6 @@ void GameActions() ResetGfxAnimation(x, y); DrawLevelField(x, y); } -#endif #if DEBUG if (IS_BLOCKED(x, y)) @@ -9557,20 +7697,7 @@ void GameActions() for (y = 0; y < lev_fieldy; y++) for (x = 0; x < lev_fieldx; x++) { element = Feld[x][y]; -#if 1 graphic = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]); -#else - graphic = el2img(element); -#endif - -#if 0 - if (element == -1) - { - printf("::: %d,%d: %d [%d]\n", x, y, element, FrameCounter); - - element = graphic = 0; - } -#endif if (graphic_info[graphic].anim_global_sync) GfxFrame[x][y] = FrameCounter; @@ -9581,9 +7708,7 @@ void GameActions() SetRandomAnimationValue(x, y); -#if 1 PlayLevelSoundActionIfLoop(x, y, GfxAction[x][y]); -#endif if (IS_INACTIVE(element)) { @@ -9593,14 +7718,9 @@ void GameActions() continue; } -#if 1 /* this may take place after moving, so 'element' may have changed */ -#if 0 - if (IS_CHANGING(x, y)) -#else if (IS_CHANGING(x, y) && (game.engine_version < VERSION_IDENT(3,0,7,1) || !Stop[x][y])) -#endif { #if 0 ChangeElement(x, y, ChangePage[x][y] != -1 ? ChangePage[x][y] : @@ -9612,45 +7732,19 @@ void GameActions() element = Feld[x][y]; graphic = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]); } -#endif if (!IS_MOVING(x, y) && (CAN_FALL(element) || CAN_MOVE(element))) { StartMoving(x, y); -#if 1 element = Feld[x][y]; graphic = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]); -#if 0 - if (element == EL_MOLE) - printf("::: %d, %d, %d [%d]\n", - IS_ANIMATED(graphic), IS_MOVING(x, y), Stop[x][y], - GfxAction[x][y]); -#endif -#if 0 - if (element == EL_YAMYAM) - printf("::: %d, %d, %d\n", - IS_ANIMATED(graphic), IS_MOVING(x, y), Stop[x][y]); -#endif -#endif if (IS_ANIMATED(graphic) && !IS_MOVING(x, y) && !Stop[x][y]) - { DrawLevelGraphicAnimationIfNeeded(x, y, graphic); -#if 0 - if (element == EL_BUG) - printf("::: %d, %d\n", graphic, GfxFrame[x][y]); -#endif - -#if 0 - if (element == EL_MOLE) - printf("::: %d, %d\n", graphic, GfxFrame[x][y]); -#endif - } - if (IS_GEM(element) || element == EL_SP_INFOTRON) EdelsteinFunkeln(x, y); } @@ -9668,10 +7762,6 @@ void GameActions() ContinueMoving(x, y); else if (IS_ACTIVE_BOMB(element)) CheckDynamite(x, y); -#if 0 - else if (element == EL_EXPLOSION && !game.explosions_delayed) - Explode(x, y, ExplodePhase[x][y], EX_TYPE_NORMAL); -#endif else if (element == EL_AMOEBA_GROWING) AmoebeWaechst(x, y); else if (element == EL_AMOEBA_SHRINKING) @@ -9697,21 +7787,11 @@ void GameActions() MauerAbleger(x, y); else if (element == EL_FLAMES) CheckForDragon(x, y); -#if 0 - else if (IS_AUTO_CHANGING(element)) - ChangeElement(x, y); -#endif else if (element == EL_EXPLOSION) ; /* drawing of correct explosion animation is handled separately */ else if (IS_ANIMATED(graphic) && !IS_CHANGING(x, y)) DrawLevelGraphicAnimationIfNeeded(x, y, graphic); -#if 0 - /* this may take place after moving, so 'element' may have changed */ - if (IS_AUTO_CHANGING(Feld[x][y])) - ChangeElement(x, y); -#endif - if (IS_BELT_ACTIVE(element)) PlayLevelSoundAction(x, y, ACTION_ACTIVE); @@ -9736,24 +7816,16 @@ void GameActions() #if USE_NEW_AMOEBA_CODE /* new experimental amoeba growth stuff */ -#if 1 if (!(FrameCounter % 8)) -#endif { static unsigned long random = 1684108901; for (i = 0; i < level.amoeba_speed * 28 / 8; i++) { -#if 0 - x = (random >> 10) % lev_fieldx; - y = (random >> 20) % lev_fieldy; -#else x = RND(lev_fieldx); y = RND(lev_fieldy); -#endif element = Feld[x][y]; -#if 1 if (!IS_PLAYER(x,y) && (element == EL_EMPTY || CAN_GROW_INTO(element) || @@ -9767,22 +7839,6 @@ void GameActions() (IN_LEV_FIELD(x, y+1) && Feld[x][y+1] == EL_AMOEBA_WET)) Feld[x][y] = EL_AMOEBA_DROP; } -#else - /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */ - if (!IS_PLAYER(x,y) && - (element == EL_EMPTY || - element == EL_SAND || - element == EL_QUICKSAND_EMPTY || - element == EL_ACID_SPLASH_LEFT || - element == EL_ACID_SPLASH_RIGHT)) - { - if ((IN_LEV_FIELD(x, y-1) && Feld[x][y-1] == EL_AMOEBA_WET) || - (IN_LEV_FIELD(x-1, y) && Feld[x-1][y] == EL_AMOEBA_WET) || - (IN_LEV_FIELD(x+1, y) && Feld[x+1][y] == EL_AMOEBA_WET) || - (IN_LEV_FIELD(x, y+1) && Feld[x][y+1] == EL_AMOEBA_WET)) - Feld[x][y] = EL_AMOEBA_DROP; - } -#endif random = random * 129 + 1; } @@ -9946,17 +8002,6 @@ void GameActions() redraw_mask |= REDRAW_FPS; } -#if 0 - if (stored_player[0].jx != stored_player[0].last_jx || - stored_player[0].jy != stored_player[0].last_jy) - printf("::: %d, %d, %d, %d, %d\n", - stored_player[0].MovDir, - stored_player[0].MovPos, - stored_player[0].GfxPos, - stored_player[0].Frame, - stored_player[0].StepFrame); -#endif - #if USE_NEW_MOVE_DELAY AdvanceFrameAndPlayerCounters(-1); /* advance counters for all players */ #else @@ -9983,14 +8028,12 @@ void GameActions() } #endif -#if 1 if (local_player->show_envelope != 0 && local_player->MovPos == 0) { ShowEnvelope(local_player->show_envelope - EL_ENVELOPE_1); local_player->show_envelope = 0; } -#endif #if USE_NEW_RANDOMIZE /* use random number generator in every frame to make it less predictable */ @@ -10068,40 +8111,6 @@ void ScrollLevel(int dx, int dy) redraw_mask |= REDRAW_FIELD; } -#if 0 -static boolean canEnterSupaplexPort(int x, int y, int dx, int dy) -{ - int nextx = x + dx, nexty = y + dy; - int element = Feld[x][y]; - - if ((dx == -1 && - element != EL_SP_PORT_LEFT && - element != EL_SP_GRAVITY_PORT_LEFT && - element != EL_SP_PORT_HORIZONTAL && - element != EL_SP_PORT_ANY) || - (dx == +1 && - element != EL_SP_PORT_RIGHT && - element != EL_SP_GRAVITY_PORT_RIGHT && - element != EL_SP_PORT_HORIZONTAL && - element != EL_SP_PORT_ANY) || - (dy == -1 && - element != EL_SP_PORT_UP && - element != EL_SP_GRAVITY_PORT_UP && - element != EL_SP_PORT_VERTICAL && - element != EL_SP_PORT_ANY) || - (dy == +1 && - element != EL_SP_PORT_DOWN && - element != EL_SP_GRAVITY_PORT_DOWN && - element != EL_SP_PORT_VERTICAL && - element != EL_SP_PORT_ANY) || - !IN_LEV_FIELD(nextx, nexty) || - !IS_FREE(nextx, nexty)) - return FALSE; - - return TRUE; -} -#endif - static boolean canFallDown(struct PlayerInfo *player) { int jx = player->jx, jy = player->jy; @@ -10141,166 +8150,37 @@ static boolean canMoveToValidFieldWithGravity(int x, int y, int move_dir) int dy = (move_dir & MV_UP ? -1 : move_dir & MV_DOWN ? +1 : 0); int newx = x + dx; int newy = y + dy; -#if 0 - int nextx = newx + dx; - int nexty = newy + dy; -#endif -#if 1 - return (IN_LEV_FIELD(newx, newy) && !IS_FREE_OR_PLAYER(newx, newy) && - IS_GRAVITY_REACHABLE(Feld[newx][newy]) && -#if 0 - (!IS_SP_PORT(Feld[newx][newy]) || move_dir == MV_UP) && -#endif - (IS_DIGGABLE(Feld[newx][newy]) || - IS_WALKABLE_FROM(Feld[newx][newy], opposite_dir) || - canPassField(newx, newy, move_dir))); -#else -#if 1 return (IN_LEV_FIELD(newx, newy) && !IS_FREE_OR_PLAYER(newx, newy) && IS_GRAVITY_REACHABLE(Feld[newx][newy]) && (IS_DIGGABLE(Feld[newx][newy]) || IS_WALKABLE_FROM(Feld[newx][newy], opposite_dir) || canPassField(newx, newy, move_dir))); -#else -#if 1 - return (IN_LEV_FIELD(newx, newy) && !IS_FREE_OR_PLAYER(newx, newy) && - (IS_DIGGABLE_WITH_GRAVITY(Feld[newx][newy]) || - IS_WALKABLE_FROM(Feld[newx][newy], opposite_dir) || - canPassField(newx, newy, move_dir))); -#else - return (IN_LEV_FIELD(newx, newy) && !IS_FREE_OR_PLAYER(newx, newy) && - (IS_DIGGABLE(Feld[newx][newy]) || - IS_WALKABLE_FROM(Feld[newx][newy], opposite_dir) || - (IS_PASSABLE_FROM(Feld[newx][newy], opposite_dir) && - !CAN_MOVE(Feld[newx][newy]) && - IN_LEV_FIELD(nextx, nexty) && !IS_PLAYER(nextx, nexty) && - IS_WALKABLE_FROM(Feld[nextx][nexty], move_dir) && - (level.can_pass_to_walkable || IS_FREE(nextx, nexty))))); -#endif -#endif -#endif } static void CheckGravityMovement(struct PlayerInfo *player) { if (game.gravity && !player->programmed_action) { -#if 1 int move_dir_horizontal = player->effective_action & MV_HORIZONTAL; int move_dir_vertical = player->effective_action & MV_VERTICAL; -#else - int move_dir_horizontal = player->action & MV_HORIZONTAL; - int move_dir_vertical = player->action & MV_VERTICAL; -#endif - -#if 1 boolean player_is_snapping = player->effective_action & JOY_BUTTON_1; -#else - boolean player_is_snapping = player->action & JOY_BUTTON_1; -#endif - int jx = player->jx, jy = player->jy; - boolean player_is_moving_to_valid_field = (!player_is_snapping && (canMoveToValidFieldWithGravity(jx, jy, move_dir_horizontal) || canMoveToValidFieldWithGravity(jx, jy, move_dir_vertical))); - -#if 0 - int move_dir = - (player->last_move_dir & MV_HORIZONTAL ? - (move_dir_vertical ? move_dir_vertical : move_dir_horizontal) : - (move_dir_horizontal ? move_dir_horizontal : move_dir_vertical)); -#endif - -#if 0 - int opposite_dir = MV_DIR_OPPOSITE(move_dir); - int dx = (move_dir & MV_LEFT ? -1 : move_dir & MV_RIGHT ? +1 : 0); - int dy = (move_dir & MV_UP ? -1 : move_dir & MV_DOWN ? +1 : 0); - int new_jx = jx + dx, new_jy = jy + dy; - int nextx = new_jx + dx, nexty = new_jy + dy; -#endif - -#if 1 - -#if 1 boolean player_can_fall_down = canFallDown(player); -#else - boolean player_can_fall_down = - (IN_LEV_FIELD(jx, jy + 1) && - (IS_FREE(jx, jy + 1) || - (Feld[jx][jy + 1] == EL_ACID && player->can_fall_into_acid))); -#endif -#else - boolean player_can_fall_down = - (IN_LEV_FIELD(jx, jy + 1) && - (IS_FREE(jx, jy + 1))); -#endif + if (player_can_fall_down && + !player_is_moving_to_valid_field) + player->programmed_action = MV_DOWN; + } +} -#if 0 - boolean player_is_moving_to_valid_field = - ( -#if 1 - !player_is_snapping && -#endif - -#if 1 - IN_LEV_FIELD(new_jx, new_jy) && - (IS_DIGGABLE(Feld[new_jx][new_jy]) || - (IS_SP_PORT(Feld[new_jx][new_jy]) && - element_info[Feld[new_jx][new_jy]].access_direction & opposite_dir && - IN_LEV_FIELD(nextx, nexty) && - element_info[Feld[nextx][nexty]].access_direction & move_dir)) -#else - IN_LEV_FIELD(new_jx, new_jy) && - (Feld[new_jx][new_jy] == EL_SP_BASE || - Feld[new_jx][new_jy] == EL_SAND || - (IS_SP_PORT(Feld[new_jx][new_jy]) && - canEnterSupaplexPort(new_jx, new_jy, dx, dy))) - /* !!! extend EL_SAND to anything diggable !!! */ -#endif - ); -#endif - -#if 0 - boolean player_is_standing_on_valid_field = - (IS_WALKABLE_INSIDE(Feld[jx][jy]) || - (IS_WALKABLE(Feld[jx][jy]) && !ACCESS_FROM(Feld[jx][jy], MV_DOWN))); -#endif - -#if 0 - printf("::: checking gravity NOW [%d, %d, %d] [%d] [%d / %d] ...\n", - player_can_fall_down, - player_is_standing_on_valid_field, - player_is_moving_to_valid_field, - (player_is_moving_to_valid_field ? Feld[new_jx][new_jy] : -1), - player->effective_action, - player->can_fall_into_acid); -#endif - - if (player_can_fall_down && -#if 0 - !player_is_standing_on_valid_field && -#endif - !player_is_moving_to_valid_field) - { -#if 0 - printf("::: setting programmed_action to MV_DOWN [%d,%d - %d] ...\n", - jx, jy, FrameCounter); -#endif - - player->programmed_action = MV_DOWN; - } - } -} - -static void CheckGravityMovementWhenNotMoving(struct PlayerInfo *player) -{ -#if 1 - return CheckGravityMovement(player); -#endif +static void CheckGravityMovementWhenNotMoving(struct PlayerInfo *player) +{ + return CheckGravityMovement(player); if (game.gravity && !player->programmed_action) { @@ -10327,22 +8207,6 @@ static void CheckGravityMovementWhenNotMoving(struct PlayerInfo *player) boolean MovePlayerOneStep(struct PlayerInfo *player, int dx, int dy, int real_dx, int real_dy) { -#if 0 - static int trigger_sides[4][2] = - { - /* enter side leave side */ - { CH_SIDE_RIGHT, CH_SIDE_LEFT }, /* moving left */ - { CH_SIDE_LEFT, CH_SIDE_RIGHT }, /* moving right */ - { CH_SIDE_BOTTOM, CH_SIDE_TOP }, /* moving up */ - { CH_SIDE_TOP, CH_SIDE_BOTTOM } /* moving down */ - }; - int move_direction = (dx == -1 ? MV_LEFT : - dx == +1 ? MV_RIGHT : - dy == -1 ? MV_UP : - dy == +1 ? MV_DOWN : MV_NO_MOVING); - int enter_side = trigger_sides[MV_DIR_BIT(move_direction)][0]; - int leave_side = trigger_sides[MV_DIR_BIT(move_direction)][1]; -#endif int jx = player->jx, jy = player->jy; int new_jx = jx + dx, new_jy = jy + dy; int element; @@ -10362,11 +8226,7 @@ boolean MovePlayerOneStep(struct PlayerInfo *player, if (!options.network && !AllPlayersInSight(player, new_jx, new_jy)) return MF_NO_ACTION; -#if 0 - element = MovingOrBlocked2Element(new_jx, new_jy); -#else element = MovingOrBlocked2ElementIfNotLeaving(new_jx, new_jy); -#endif if (DONT_RUN_INTO(element)) { @@ -10405,31 +8265,10 @@ boolean MovePlayerOneStep(struct PlayerInfo *player, player->step_counter++; -#if 0 - player->drop_delay = 0; -#endif - PlayerVisit[jx][jy] = FrameCounter; ScrollPlayer(player, SCROLL_INIT); -#if 0 - if (IS_CUSTOM_ELEMENT(Feld[jx][jy])) - { - CheckTriggeredElementChangeBySide(jx, jy, Feld[jx][jy], CE_PLAYER_LEAVES_X, - leave_side); - CheckElementChangeBySide(jx,jy, Feld[jx][jy],CE_LEFT_BY_PLAYER,leave_side); - } - - if (IS_CUSTOM_ELEMENT(Feld[new_jx][new_jy])) - { - CheckTriggeredElementChangeBySide(new_jx, new_jy, Feld[new_jx][new_jy], - CE_PLAYER_ENTERS_X, enter_side); - CheckElementChangeBySide(new_jx, new_jy, Feld[new_jx][new_jy], - CE_ENTERED_BY_PLAYER, enter_side); - } -#endif - return MF_MOVING; } @@ -10439,7 +8278,6 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) int old_jx = jx, old_jy = jy; int moved = MF_NO_ACTION; -#if 1 if (!player->active) return FALSE; @@ -10456,23 +8294,6 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) return FALSE; } -#else - if (!player->active || (!dx && !dy)) - return FALSE; -#endif - -#if 0 - if (!FrameReached(&player->move_delay, player->move_delay_value) && - !tape.playing) - return FALSE; -#else - -#if 1 - -#if 0 - printf("::: %d <= %d < %d ?\n", player->move_delay, FrameCounter, - player->move_delay + player->move_delay_value); -#endif #if USE_NEW_MOVE_DELAY if (player->move_delay > 0) @@ -10480,23 +8301,8 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) if (!FrameReached(&player->move_delay, player->move_delay_value)) #endif { -#if 0 - printf("::: can NOT move\n"); -#endif - return FALSE; } -#else - if (!FrameReached(&player->move_delay, player->move_delay_value) && - !(tape.playing && tape.file_version < FILE_VERSION_2_0)) - return FALSE; -#endif - -#endif - -#if 0 - printf("::: COULD move now\n"); -#endif #if USE_NEW_MOVE_DELAY player->move_delay = -1; /* set to "uninitialized" value */ @@ -10624,23 +8430,10 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) } } -#if 0 -#if 1 - InitPlayerGfxAnimation(player, ACTION_DEFAULT); -#else - if (!(moved & MF_MOVING) && !player->is_pushing) - player->Frame = 0; -#endif -#endif - player->StepFrame = 0; if (moved & MF_MOVING) { -#if 0 - printf("::: REALLY moves now\n"); -#endif - if (old_jx != jx && old_jy == jy) player->MovDir = (old_jx < jx ? MV_RIGHT : MV_LEFT); else if (old_jx == jx && old_jy != jy) @@ -10650,67 +8443,9 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) player->last_move_dir = player->MovDir; player->is_moving = TRUE; -#if 1 player->is_snapping = FALSE; -#endif - -#if 1 player->is_switching = FALSE; -#endif - player->is_dropping = FALSE; - - -#if 0 - /* !!! ENABLE THIS FOR OLD VERSIONS !!! */ - -#if 1 - if (game.engine_version < VERSION_IDENT(3,1,0,0)) -#endif - { - int move_direction = player->MovDir; -#if 1 - int enter_side = MV_DIR_OPPOSITE(move_direction); - int leave_side = move_direction; -#else - static int trigger_sides[4][2] = - { - /* enter side leave side */ - { CH_SIDE_RIGHT, CH_SIDE_LEFT }, /* moving left */ - { CH_SIDE_LEFT, CH_SIDE_RIGHT }, /* moving right */ - { CH_SIDE_BOTTOM, CH_SIDE_TOP }, /* moving up */ - { CH_SIDE_TOP, CH_SIDE_BOTTOM } /* moving down */ - }; - int enter_side = trigger_sides[MV_DIR_BIT(move_direction)][0]; - int leave_side = trigger_sides[MV_DIR_BIT(move_direction)][1]; -#endif - int old_element = Feld[old_jx][old_jy]; - int new_element = Feld[jx][jy]; - -#if 1 - /* !!! TEST ONLY !!! */ - if (IS_CUSTOM_ELEMENT(old_element)) - CheckElementChangeByPlayer(old_jx, old_jy, old_element, - CE_LEFT_BY_PLAYER, - player->index_bit, leave_side); - - CheckTriggeredElementChangeByPlayer(old_jx, old_jy, old_element, - CE_PLAYER_LEAVES_X, - player->index_bit, leave_side); - - if (IS_CUSTOM_ELEMENT(new_element)) - CheckElementChangeByPlayer(jx, jy, new_element, CE_ENTERED_BY_PLAYER, - player->index_bit, enter_side); - - CheckTriggeredElementChangeByPlayer(jx, jy, new_element, - CE_PLAYER_ENTERS_X, - player->index_bit, enter_side); -#endif - - } -#endif - - } else { @@ -10763,20 +8498,8 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) player->actual_frame_counter = FrameCounter; player->GfxPos = move_stepsize * (player->MovPos / move_stepsize); -#if 0 - printf("::: %06d: %d,%d: %d (%d) [%d]\n", - FrameCounter, - last_jx, last_jy, Feld[last_jx][last_jy], EL_EXPLOSION, - player->block_delay); -#endif - #if USE_NEW_BLOCK_STYLE -#if 0 - if (player->block_delay <= 0) - printf("::: ALERT! block_delay == %d\n", player->block_delay); -#endif - if ((player->block_last_field || player->block_delay_adjustment > 0) && Feld[last_jx][last_jy] == EL_EMPTY) { @@ -10798,25 +8521,6 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) /* add block delay adjustment (also possible when not blocking) */ last_field_block_delay += block_delay_adjustment; -#if 0 -#if USE_BLOCK_DELAY_BUGFIX - /* when blocking enabled, correct block delay for fast movement */ - if (player->block_last_field && - player->move_delay_value < MOVE_DELAY_NORMAL_SPEED) - last_field_block_delay = - player->move_delay_value + player->block_delay_adjustment; -#endif -#endif - -#if 0 -#if USE_GRAVITY_BUGFIX_NEW - /* when blocking enabled, correct block delay for gravity movement */ - if (player->block_last_field && - game.gravity && player->MovDir == MV_UP) - last_field_block_delay = player->move_delay_value - 1; -#endif -#endif - Feld[last_jx][last_jy] = EL_PLAYER_IS_LEAVING; MovDelay[last_jx][last_jy] = last_field_block_delay + 1; } @@ -10832,10 +8536,6 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) #endif #endif -#if 0 - DrawPlayer(player); -#endif - return; } else if (!FrameReached(&player->actual_frame_counter, 1)) @@ -10848,24 +8548,16 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) #else if (!player->block_last_field && Feld[last_jx][last_jy] == EL_PLAYER_IS_LEAVING) -#if 1 + RemoveField(last_jx, last_jy); -#else - Feld[last_jx][last_jy] = EL_EMPTY; -#endif #endif /* before DrawPlayer() to draw correct player graphic for this case */ if (player->MovPos == 0) CheckGravityMovement(player); -#if 0 - DrawPlayer(player); /* needed here only to cleanup last field */ -#endif - if (player->MovPos == 0) /* player reached destination field */ { -#if 1 if (player->move_delay_reset_counter > 0) { player->move_delay_reset_counter--; @@ -10879,26 +8571,13 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) player->move_delay = 0; } } -#else - if (IS_PASSABLE(Feld[last_jx][last_jy])) - { - /* continue with normal speed after quickly moving through gate */ - HALVE_PLAYER_SPEED(player); - - /* be able to make the next move without delay */ - player->move_delay = 0; - } -#endif #if USE_NEW_BLOCK_STYLE #else if (player->block_last_field && Feld[last_jx][last_jy] == EL_PLAYER_IS_LEAVING) -#if 1 + RemoveField(last_jx, last_jy); -#else - Feld[last_jx][last_jy] = EL_EMPTY; -#endif #endif player->last_jx = jx; @@ -10916,36 +8595,16 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) player->LevelSolved = player->GameOver = TRUE; } -#if 1 - /* !!! ENABLE THIS FOR NEW VERSIONS !!! */ /* this breaks one level: "machine", level 000 */ -#if 0 - if (game.engine_version >= VERSION_IDENT(3,1,0,0)) -#endif { int move_direction = player->MovDir; -#if 1 int enter_side = MV_DIR_OPPOSITE(move_direction); int leave_side = move_direction; -#else - static int trigger_sides[4][2] = - { - /* enter side leave side */ - { CH_SIDE_RIGHT, CH_SIDE_LEFT }, /* moving left */ - { CH_SIDE_LEFT, CH_SIDE_RIGHT }, /* moving right */ - { CH_SIDE_BOTTOM, CH_SIDE_TOP }, /* moving up */ - { CH_SIDE_TOP, CH_SIDE_BOTTOM } /* moving down */ - }; - int enter_side = trigger_sides[MV_DIR_BIT(move_direction)][0]; - int leave_side = trigger_sides[MV_DIR_BIT(move_direction)][1]; -#endif int old_jx = last_jx; int old_jy = last_jy; int old_element = Feld[old_jx][old_jy]; int new_element = Feld[jx][jy]; -#if 1 - /* !!! TEST ONLY !!! */ if (IS_CUSTOM_ELEMENT(old_element)) CheckElementChangeByPlayer(old_jx, old_jy, old_element, CE_LEFT_BY_PLAYER, @@ -10962,23 +8621,17 @@ void ScrollPlayer(struct PlayerInfo *player, int mode) CheckTriggeredElementChangeByPlayer(jx, jy, new_element, CE_PLAYER_ENTERS_X, player->index_bit, enter_side); -#endif - } -#endif if (game.engine_version >= VERSION_IDENT(3,0,7,0)) { TestIfHeroTouchesBadThing(jx, jy); TestIfPlayerTouchesCustomElement(jx, jy); -#if 1 -#if 1 + /* needed because pushed element has not yet reached its destination, so it would trigger a change event at its previous field location */ if (!player->is_pushing) -#endif TestIfElementTouchesCustomElement(jx, jy); /* for empty space */ -#endif if (!player->active) RemoveHero(player); @@ -11092,20 +8745,11 @@ void TestIfPlayerTouchesCustomElement(int x, int y) else continue; /* center and border element do not touch */ -#if 1 - /* !!! TEST ONLY !!! */ CheckElementChangeByPlayer(xx, yy, border_element, CE_TOUCHED_BY_PLAYER, player->index_bit, border_side); CheckTriggeredElementChangeByPlayer(xx, yy, border_element, CE_PLAYER_TOUCHES_X, player->index_bit, border_side); -#else - CheckTriggeredElementChangeByPlayer(xx, yy, border_element, - CE_PLAYER_TOUCHES_X, - player->index_bit, border_side); - CheckElementChangeByPlayer(xx, yy, border_element, CE_TOUCHED_BY_PLAYER, - player->index_bit, border_side); -#endif } else if (IS_PLAYER(xx, yy)) { @@ -11117,21 +8761,11 @@ void TestIfPlayerTouchesCustomElement(int x, int y) continue; /* center and border element do not touch */ } -#if 1 - /* !!! TEST ONLY !!! */ CheckElementChangeByPlayer(x, y, center_element, CE_TOUCHED_BY_PLAYER, player->index_bit, center_side); CheckTriggeredElementChangeByPlayer(x, y, center_element, CE_PLAYER_TOUCHES_X, player->index_bit, center_side); -#else - CheckTriggeredElementChangeByPlayer(x, y, center_element, - CE_PLAYER_TOUCHES_X, - player->index_bit, center_side); - CheckElementChangeByPlayer(x, y, center_element, CE_TOUCHED_BY_PLAYER, - player->index_bit, center_side); -#endif - break; } } @@ -11162,10 +8796,8 @@ void TestIfElementTouchesCustomElement(int x, int y) MV_LEFT | MV_RIGHT }; boolean change_center_element = FALSE; - int center_element_change_page = 0; int center_element = Feld[x][y]; /* should always be non-moving! */ - int border_trigger_element = EL_UNDEFINED; - int i, j; + int i; for (i = 0; i < NUM_DIRECTIONS; i++) { @@ -11187,231 +8819,61 @@ void TestIfElementTouchesCustomElement(int x, int y) else continue; /* center and border element do not touch */ -#if TEST_NEW_STUFF - /* check for change of center element (but change it only once) */ if (!change_center_element) change_center_element = CheckElementChangeBySide(x, y, center_element, border_element, CE_TOUCHING_X, border_side); - /* -> CheckElementChangeExtTEST */ - -#else + /* check for change of border element */ + CheckElementChangeBySide(xx, yy, border_element, center_element, + CE_TOUCHING_X, center_side); + } +} - /* check for change of center element (but change it only once) */ - if (IS_CUSTOM_ELEMENT(center_element) && - HAS_ANY_CHANGE_EVENT(center_element, CE_TOUCHING_X) && - !change_center_element) - { - for (j = 0; j < element_info[center_element].num_change_pages; j++) - { - struct ElementChangeInfo *change = - &element_info[center_element].change_page[j]; +void TestIfElementHitsCustomElement(int x, int y, int direction) +{ + int dx = (direction == MV_LEFT ? -1 : direction == MV_RIGHT ? +1 : 0); + int dy = (direction == MV_UP ? -1 : direction == MV_DOWN ? +1 : 0); + int hitx = x + dx, hity = y + dy; + int hitting_element = Feld[x][y]; + int touched_element; - if (change->can_change && - change->has_event[CE_TOUCHING_X] && - change->trigger_side & border_side && -#if 1 - IS_EQUAL_OR_IN_GROUP(border_element, change->trigger_element) -#else - change->trigger_element == border_element -#endif - ) - { - change_center_element = TRUE; - center_element_change_page = j; - border_trigger_element = border_element; + if (IN_LEV_FIELD(hitx, hity) && IS_FREE(hitx, hity)) + return; - break; - } - } - } + touched_element = (IN_LEV_FIELD(hitx, hity) ? + MovingOrBlocked2Element(hitx, hity) : EL_STEELWALL); +#if !USE_HITTING_SOMETHING_BUGFIX + /* "hitting something" is also true when hitting the playfield border */ + CheckElementChangeBySide(x, y, hitting_element, touched_element, + CE_HITTING_SOMETHING, direction); #endif -#if TEST_NEW_STUFF + if (IN_LEV_FIELD(hitx, hity)) + { + int opposite_direction = MV_DIR_OPPOSITE(direction); + int hitting_side = direction; + int touched_side = opposite_direction; + boolean object_hit = (!IS_MOVING(hitx, hity) || + MovDir[hitx][hity] != direction || + ABS(MovPos[hitx][hity]) <= TILEY / 2); - /* check for change of border element */ - CheckElementChangeBySide(xx, yy, border_element, center_element, - CE_TOUCHING_X, center_side); - -#else - - /* check for change of border element */ - if (IS_CUSTOM_ELEMENT(border_element) && - HAS_ANY_CHANGE_EVENT(border_element, CE_TOUCHING_X)) - { - for (j = 0; j < element_info[border_element].num_change_pages; j++) - { - struct ElementChangeInfo *change = - &element_info[border_element].change_page[j]; - - if (change->can_change && - change->has_event[CE_TOUCHING_X] && - change->trigger_side & center_side && -#if 1 - IS_EQUAL_OR_IN_GROUP(center_element, change->trigger_element) -#else - change->trigger_element == center_element -#endif - ) - { -#if 0 - printf("::: border_element %d, %d\n", x, y); -#endif - - CheckElementChangeByPage(xx, yy, border_element, center_element, - CE_TOUCHING_X, j); - break; - } - } - } - -#endif - - } - -#if !TEST_NEW_STUFF - - if (change_center_element) - { -#if 0 - printf("::: center_element %d, %d\n", x, y); -#endif - - CheckElementChangeByPage(x, y, center_element, border_trigger_element, - CE_TOUCHING_X, center_element_change_page); - } - -#endif - -} - -void TestIfElementHitsCustomElement(int x, int y, int direction) -{ - int dx = (direction == MV_LEFT ? -1 : direction == MV_RIGHT ? +1 : 0); - int dy = (direction == MV_UP ? -1 : direction == MV_DOWN ? +1 : 0); - int hitx = x + dx, hity = y + dy; - int hitting_element = Feld[x][y]; - int touched_element; -#if 0 - boolean object_hit = (IN_LEV_FIELD(hitx, hity) && - !IS_FREE(hitx, hity) && - (!IS_MOVING(hitx, hity) || - MovDir[hitx][hity] != direction || - ABS(MovPos[hitx][hity]) <= TILEY / 2)); -#endif - - if (IN_LEV_FIELD(hitx, hity) && IS_FREE(hitx, hity)) - return; - -#if 0 - if (IN_LEV_FIELD(hitx, hity) && !object_hit) - return; -#endif - - touched_element = (IN_LEV_FIELD(hitx, hity) ? - MovingOrBlocked2Element(hitx, hity) : EL_STEELWALL); - -#if !USE_HITTING_SOMETHING_BUGFIX - /* "hitting something" is also true when hitting the playfield border */ - CheckElementChangeBySide(x, y, hitting_element, touched_element, - CE_HITTING_SOMETHING, direction); -#endif - - if (IN_LEV_FIELD(hitx, hity)) - { - int opposite_direction = MV_DIR_OPPOSITE(direction); - int hitting_side = direction; - int touched_side = opposite_direction; -#if 0 - int touched_element = MovingOrBlocked2Element(hitx, hity); -#endif -#if 1 - boolean object_hit = (!IS_MOVING(hitx, hity) || - MovDir[hitx][hity] != direction || - ABS(MovPos[hitx][hity]) <= TILEY / 2); - - object_hit = TRUE; -#endif + object_hit = TRUE; if (object_hit) { - int i; - #if !USE_HIT_BY_SOMETHING_BUGFIX CheckElementChangeBySide(hitx, hity, touched_element, hitting_element, CE_HIT_BY_SOMETHING, opposite_direction); #endif -#if TEST_NEW_STUFF - CheckElementChangeBySide(x, y, hitting_element, touched_element, CE_HITTING_X, touched_side); -#else - - if (IS_CUSTOM_ELEMENT(hitting_element) && - HAS_ANY_CHANGE_EVENT(hitting_element, CE_HITTING_X)) - { - for (i = 0; i < element_info[hitting_element].num_change_pages; i++) - { - struct ElementChangeInfo *change = - &element_info[hitting_element].change_page[i]; - - if (change->can_change && - change->has_event[CE_HITTING_X] && - change->trigger_side & touched_side && - -#if 1 - IS_EQUAL_OR_IN_GROUP(touched_element, change->trigger_element) -#else - change->trigger_element == touched_element -#endif - ) - { - CheckElementChangeByPage(x, y, hitting_element, touched_element, - CE_HITTING_X, i); - break; - } - } - } - -#endif - -#if TEST_NEW_STUFF - CheckElementChangeBySide(hitx, hity, touched_element, hitting_element, CE_HIT_BY_X, hitting_side); -#else - - if (IS_CUSTOM_ELEMENT(touched_element) && - HAS_ANY_CHANGE_EVENT(touched_element, CE_HIT_BY_X)) - { - for (i = 0; i < element_info[touched_element].num_change_pages; i++) - { - struct ElementChangeInfo *change = - &element_info[touched_element].change_page[i]; - - if (change->can_change && - change->has_event[CE_HIT_BY_X] && - change->trigger_side & hitting_side && -#if 1 - IS_EQUAL_OR_IN_GROUP(hitting_element, change->trigger_element) -#else - change->trigger_element == hitting_element -#endif - ) - { - CheckElementChangeByPage(hitx, hity, touched_element, - hitting_element, CE_HIT_BY_X, i); - break; - } - } - } - -#endif #if USE_HIT_BY_SOMETHING_BUGFIX CheckElementChangeBySide(hitx, hity, touched_element, hitting_element, @@ -11480,73 +8942,11 @@ void TestIfElementSmashesCustomElement(int x, int y, int direction) CheckElementChangeBySide(hitx, hity, touched_element, hitting_element, CE_SMASHED_BY_SOMETHING, opposite_direction); -#if TEST_NEW_STUFF - CheckElementChangeBySide(x, y, hitting_element, touched_element, CE_OTHER_IS_SMASHING, touched_side); -#else - - if (IS_CUSTOM_ELEMENT(hitting_element) && - HAS_ANY_CHANGE_EVENT(hitting_element, CE_OTHER_IS_SMASHING)) - { - for (i = 0; i < element_info[hitting_element].num_change_pages; i++) - { - struct ElementChangeInfo *change = - &element_info[hitting_element].change_page[i]; - - if (change->can_change && - change->has_event[CE_OTHER_IS_SMASHING] && - change->trigger_side & touched_side && - -#if 1 - IS_EQUAL_OR_IN_GROUP(touched_element, change->trigger_element) -#else - change->trigger_element == touched_element -#endif - ) - { - CheckElementChangeByPage(x, y, hitting_element, touched_element, - CE_OTHER_IS_SMASHING, i); - break; - } - } - } - -#endif - -#if TEST_NEW_STUFF CheckElementChangeBySide(hitx, hity, touched_element, hitting_element, CE_OTHER_GETS_SMASHED, hitting_side); -#else - - if (IS_CUSTOM_ELEMENT(touched_element) && - HAS_ANY_CHANGE_EVENT(touched_element, CE_OTHER_GETS_SMASHED)) - { - for (i = 0; i < element_info[touched_element].num_change_pages; i++) - { - struct ElementChangeInfo *change = - &element_info[touched_element].change_page[i]; - - if (change->can_change && - change->has_event[CE_OTHER_GETS_SMASHED] && - change->trigger_side & hitting_side && -#if 1 - IS_EQUAL_OR_IN_GROUP(hitting_element, change->trigger_element) -#else - change->trigger_element == hitting_element -#endif - ) - { - CheckElementChangeByPage(hitx, hity, touched_element, - hitting_element, CE_OTHER_GETS_SMASHED,i); - break; - } - } - } - -#endif - } } } @@ -11584,11 +8984,7 @@ void TestIfGoodThingHitsBadThing(int good_x, int good_y, int good_move_dir) test_move_dir = (IS_MOVING(test_x, test_y) ? MovDir[test_x][test_y] : MV_NO_MOVING); -#if 0 - test_element = Feld[test_x][test_y]; -#else test_element = MovingOrBlocked2ElementIfNotLeaving(test_x, test_y); -#endif /* 1st case: good thing is moving towards DONT_RUN_INTO style bad thing; 2nd case: DONT_TOUCH style bad thing does not move away from good thing @@ -11610,18 +9006,11 @@ void TestIfGoodThingHitsBadThing(int good_x, int good_y, int good_move_dir) { struct PlayerInfo *player = PLAYERINFO(good_x, good_y); -#if 1 if (player->shield_deadly_time_left > 0 && !IS_INDESTRUCTIBLE(bad_element)) Bang(kill_x, kill_y); else if (!PLAYER_ENEMY_PROTECTED(good_x, good_y)) KillHero(player); -#else - if (player->shield_deadly_time_left > 0) - Bang(kill_x, kill_y); - else if (!PLAYER_ENEMY_PROTECTED(good_x, good_y)) - KillHero(player); -#endif } else Bang(good_x, good_y); @@ -11710,18 +9099,11 @@ void TestIfBadThingHitsGoodThing(int bad_x, int bad_y, int bad_move_dir) { struct PlayerInfo *player = PLAYERINFO(kill_x, kill_y); -#if 1 if (player->shield_deadly_time_left > 0 && !IS_INDESTRUCTIBLE(bad_element)) Bang(bad_x, bad_y); else if (!PLAYER_ENEMY_PROTECTED(kill_x, kill_y)) KillHero(player); -#else - if (player->shield_deadly_time_left > 0) - Bang(bad_x, bad_y); - else if (!PLAYER_ENEMY_PROTECTED(kill_x, kill_y)) - KillHero(player); -#endif } else Bang(kill_x, kill_y); @@ -11829,11 +9211,7 @@ void BuryHero(struct PlayerInfo *player) if (!player->active) return; -#if 1 PlayLevelSoundElementAction(jx, jy, player->element_nr, ACTION_DYING); -#else - PlayLevelSound(jx, jy, SND_CLASS_PLAYER_DYING); -#endif PlayLevelSound(jx, jy, SND_GAME_LOSING); player->GameOver = TRUE; @@ -11903,9 +9281,6 @@ int DigField(struct PlayerInfo *player, int oldx, int oldy, int x, int y, int real_dx, int real_dy, int mode) { -#if 0 - boolean use_spring_bug = (game.engine_version < VERSION_IDENT(2,2,0,0)); -#endif boolean is_player = (IS_PLAYER(oldx, oldy) || mode != DF_DIG); boolean player_was_pushing = player->is_pushing; int jx = oldx, jy = oldy; @@ -11916,18 +9291,7 @@ int DigField(struct PlayerInfo *player, dy == -1 ? MV_UP : dy == +1 ? MV_DOWN : MV_NO_MOVING); int opposite_direction = MV_DIR_OPPOSITE(move_direction); -#if 1 int dig_side = MV_DIR_OPPOSITE(move_direction); -#else - static int trigger_sides[4] = - { - CH_SIDE_RIGHT, /* moving left */ - CH_SIDE_LEFT, /* moving right */ - CH_SIDE_BOTTOM, /* moving up */ - CH_SIDE_TOP, /* moving down */ - }; - int dig_side = trigger_sides[MV_DIR_BIT(move_direction)]; -#endif int old_element = Feld[jx][jy]; int element; @@ -11958,56 +9322,14 @@ int DigField(struct PlayerInfo *player, if (IS_MOVING(x, y) || IS_PLAYER(x, y)) return MF_NO_ACTION; -#if 0 - -#if 0 - if (IS_TUBE(Feld[jx][jy]) || IS_TUBE(Back[jx][jy])) -#else - if (IS_TUBE(Feld[jx][jy]) || - (IS_TUBE(Back[jx][jy]) && game.engine_version >= VERSION_IDENT(2,2,0,0))) -#endif - { - int i = 0; - int tube_element = (IS_TUBE(Feld[jx][jy]) ? Feld[jx][jy] : Back[jx][jy]); - int tube_leave_directions[][2] = - { - { EL_TUBE_ANY, MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN }, - { EL_TUBE_VERTICAL, MV_UP | MV_DOWN }, - { EL_TUBE_HORIZONTAL, MV_LEFT | MV_RIGHT }, - { EL_TUBE_VERTICAL_LEFT, MV_LEFT | MV_UP | MV_DOWN }, - { EL_TUBE_VERTICAL_RIGHT, MV_RIGHT | MV_UP | MV_DOWN }, - { EL_TUBE_HORIZONTAL_UP, MV_LEFT | MV_RIGHT | MV_UP }, - { EL_TUBE_HORIZONTAL_DOWN, MV_LEFT | MV_RIGHT | MV_DOWN }, - { EL_TUBE_LEFT_UP, MV_LEFT | MV_UP }, - { EL_TUBE_LEFT_DOWN, MV_LEFT | MV_DOWN }, - { EL_TUBE_RIGHT_UP, MV_RIGHT | MV_UP }, - { EL_TUBE_RIGHT_DOWN, MV_RIGHT | MV_DOWN }, - { -1, MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN } - }; - - while (tube_leave_directions[i][0] != tube_element) - { - i++; - if (tube_leave_directions[i][0] == -1) /* should not happen */ - break; - } - - if (!(tube_leave_directions[i][1] & move_direction)) - return MF_NO_ACTION; /* tube has no opening in this direction */ - } - -#else - if (IS_TUBE(Back[jx][jy]) && game.engine_version >= VERSION_IDENT(2,2,0,0)) old_element = Back[jx][jy]; -#if USE_BACK_WALKABLE_BUGFIX +#if USE_BACK_WALKABLE_BUGFIX /* in case of element dropped at player position, check background */ else if (Back[jx][jy] != EL_EMPTY && game.engine_version >= VERSION_IDENT(2,2,0,0)) old_element = Back[jx][jy]; -#endif - #endif if (IS_WALKABLE(old_element) && !ACCESS_FROM(old_element, move_direction)) @@ -12025,791 +9347,472 @@ int DigField(struct PlayerInfo *player, game.engine_version >= VERSION_IDENT(2,2,0,0)) return MF_NO_ACTION; -#if 1 if (game.gravity && is_player && !player->is_auto_moving && canFallDown(player) && move_direction != MV_DOWN && !canMoveToValidFieldWithGravity(jx, jy, move_direction)) return MF_NO_ACTION; /* player cannot walk here due to gravity */ -#endif - -#if 0 - if (element == EL_EMPTY_SPACE && - game.gravity && !player->is_auto_moving && - canFallDown(player) && move_direction != MV_DOWN) - return MF_NO_ACTION; /* player cannot walk here due to gravity */ -#endif - switch (element) + if (IS_WALKABLE(element) && ACCESS_FROM(element, opposite_direction)) { -#if 0 - case EL_SP_PORT_LEFT: - case EL_SP_PORT_RIGHT: - case EL_SP_PORT_UP: - case EL_SP_PORT_DOWN: - case EL_SP_PORT_HORIZONTAL: - case EL_SP_PORT_VERTICAL: - case EL_SP_PORT_ANY: - case EL_SP_GRAVITY_PORT_LEFT: - case EL_SP_GRAVITY_PORT_RIGHT: - case EL_SP_GRAVITY_PORT_UP: - case EL_SP_GRAVITY_PORT_DOWN: -#if 1 - if (!canEnterSupaplexPort(x, y, dx, dy)) + int sound_element = SND_ELEMENT(element); + int sound_action = ACTION_WALKING; + + if (IS_RND_GATE(element)) + { + if (!player->key[RND_GATE_NR(element)]) return MF_NO_ACTION; -#else - if ((dx == -1 && - element != EL_SP_PORT_LEFT && - element != EL_SP_GRAVITY_PORT_LEFT && - element != EL_SP_PORT_HORIZONTAL && - element != EL_SP_PORT_ANY) || - (dx == +1 && - element != EL_SP_PORT_RIGHT && - element != EL_SP_GRAVITY_PORT_RIGHT && - element != EL_SP_PORT_HORIZONTAL && - element != EL_SP_PORT_ANY) || - (dy == -1 && - element != EL_SP_PORT_UP && - element != EL_SP_GRAVITY_PORT_UP && - element != EL_SP_PORT_VERTICAL && - element != EL_SP_PORT_ANY) || - (dy == +1 && - element != EL_SP_PORT_DOWN && - element != EL_SP_GRAVITY_PORT_DOWN && - element != EL_SP_PORT_VERTICAL && - element != EL_SP_PORT_ANY) || - !IN_LEV_FIELD(nextx, nexty) || - !IS_FREE(nextx, nexty)) + } + else if (IS_RND_GATE_GRAY(element)) + { + if (!player->key[RND_GATE_GRAY_NR(element)]) return MF_NO_ACTION; -#endif + } + else if (element == EL_EXIT_OPEN || + element == EL_SP_EXIT_OPEN || + element == EL_SP_EXIT_OPENING) + { + sound_action = ACTION_PASSING; /* player is passing exit */ + } + else if (element == EL_EMPTY) + { + sound_action = ACTION_MOVING; /* nothing to walk on */ + } + + /* play sound from background or player, whatever is available */ + if (element_info[sound_element].sound[sound_action] != SND_UNDEFINED) + PlayLevelSoundElementAction(x, y, sound_element, sound_action); + else + PlayLevelSoundElementAction(x, y, player->element_nr, sound_action); + } + else if (IS_PASSABLE(element) && canPassField(x, y, move_direction)) + { + if (!ACCESS_FROM(element, opposite_direction)) + return MF_NO_ACTION; /* field not accessible from this direction */ + + if (CAN_MOVE(element)) /* only fixed elements can be passed! */ + return MF_NO_ACTION; + if (IS_EM_GATE(element)) + { + if (!player->key[EM_GATE_NR(element)]) + return MF_NO_ACTION; + } + else if (IS_EM_GATE_GRAY(element)) + { + if (!player->key[EM_GATE_GRAY_NR(element)]) + return MF_NO_ACTION; + } + else if (IS_SP_PORT(element)) + { if (element == EL_SP_GRAVITY_PORT_LEFT || element == EL_SP_GRAVITY_PORT_RIGHT || element == EL_SP_GRAVITY_PORT_UP || element == EL_SP_GRAVITY_PORT_DOWN) game.gravity = !game.gravity; + else if (element == EL_SP_GRAVITY_ON_PORT_LEFT || + element == EL_SP_GRAVITY_ON_PORT_RIGHT || + element == EL_SP_GRAVITY_ON_PORT_UP || + element == EL_SP_GRAVITY_ON_PORT_DOWN) + game.gravity = TRUE; + else if (element == EL_SP_GRAVITY_OFF_PORT_LEFT || + element == EL_SP_GRAVITY_OFF_PORT_RIGHT || + element == EL_SP_GRAVITY_OFF_PORT_UP || + element == EL_SP_GRAVITY_OFF_PORT_DOWN) + game.gravity = FALSE; + } - /* automatically move to the next field with double speed */ - player->programmed_action = move_direction; -#if 1 - if (player->move_delay_reset_counter == 0) - { - player->move_delay_reset_counter = 2; /* two double speed steps */ + /* automatically move to the next field with double speed */ + player->programmed_action = move_direction; - DOUBLE_PLAYER_SPEED(player); - } -#else - player->move_delay_reset_counter = 2; + if (player->move_delay_reset_counter == 0) + { + player->move_delay_reset_counter = 2; /* two double speed steps */ DOUBLE_PLAYER_SPEED(player); -#endif - -#if 0 - printf("::: passing port %d,%d [%d]\n", x, y, FrameCounter); -#endif - - PlayLevelSound(x, y, SND_CLASS_SP_PORT_PASSING); - break; -#endif - -#if 0 - case EL_TUBE_ANY: - case EL_TUBE_VERTICAL: - case EL_TUBE_HORIZONTAL: - case EL_TUBE_VERTICAL_LEFT: - case EL_TUBE_VERTICAL_RIGHT: - case EL_TUBE_HORIZONTAL_UP: - case EL_TUBE_HORIZONTAL_DOWN: - case EL_TUBE_LEFT_UP: - case EL_TUBE_LEFT_DOWN: - case EL_TUBE_RIGHT_UP: - case EL_TUBE_RIGHT_DOWN: - { - int i = 0; - int tube_enter_directions[][2] = - { - { EL_TUBE_ANY, MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN }, - { EL_TUBE_VERTICAL, MV_UP | MV_DOWN }, - { EL_TUBE_HORIZONTAL, MV_LEFT | MV_RIGHT }, - { EL_TUBE_VERTICAL_LEFT, MV_RIGHT | MV_UP | MV_DOWN }, - { EL_TUBE_VERTICAL_RIGHT, MV_LEFT | MV_UP | MV_DOWN }, - { EL_TUBE_HORIZONTAL_UP, MV_LEFT | MV_RIGHT | MV_DOWN }, - { EL_TUBE_HORIZONTAL_DOWN, MV_LEFT | MV_RIGHT | MV_UP }, - { EL_TUBE_LEFT_UP, MV_RIGHT | MV_DOWN }, - { EL_TUBE_LEFT_DOWN, MV_RIGHT | MV_UP }, - { EL_TUBE_RIGHT_UP, MV_LEFT | MV_DOWN }, - { EL_TUBE_RIGHT_DOWN, MV_LEFT | MV_UP }, - { -1, MV_NO_MOVING } - }; - - while (tube_enter_directions[i][0] != element) - { - i++; - if (tube_enter_directions[i][0] == -1) /* should not happen */ - break; - } - - if (!(tube_enter_directions[i][1] & move_direction)) - return MF_NO_ACTION; /* tube has no opening in this direction */ - - PlayLevelSound(x, y, SND_CLASS_TUBE_WALKING); - } - break; -#endif - - default: - -#if 1 - if (IS_WALKABLE(element) && ACCESS_FROM(element, opposite_direction)) -#else - if (IS_WALKABLE(element)) -#endif - { - int sound_element = SND_ELEMENT(element); - int sound_action = ACTION_WALKING; - -#if 0 - if (!ACCESS_FROM(element, opposite_direction)) - return MF_NO_ACTION; /* field not accessible from this direction */ -#endif - -#if 0 - if (element == EL_EMPTY_SPACE && - game.gravity && !player->is_auto_moving && - canFallDown(player) && move_direction != MV_DOWN) - return MF_NO_ACTION; /* player cannot walk here due to gravity */ -#endif - - if (IS_RND_GATE(element)) - { - if (!player->key[RND_GATE_NR(element)]) - return MF_NO_ACTION; - } - else if (IS_RND_GATE_GRAY(element)) - { - if (!player->key[RND_GATE_GRAY_NR(element)]) - return MF_NO_ACTION; - } - else if (element == EL_EXIT_OPEN || - element == EL_SP_EXIT_OPEN || - element == EL_SP_EXIT_OPENING) - { - sound_action = ACTION_PASSING; /* player is passing exit */ - } - else if (element == EL_EMPTY) - { - sound_action = ACTION_MOVING; /* nothing to walk on */ - } - - /* play sound from background or player, whatever is available */ - if (element_info[sound_element].sound[sound_action] != SND_UNDEFINED) - PlayLevelSoundElementAction(x, y, sound_element, sound_action); - else - PlayLevelSoundElementAction(x, y, player->element_nr, sound_action); - - break; - } -#if 1 - else if (IS_PASSABLE(element) && canPassField(x, y, move_direction)) -#else - else if (IS_PASSABLE(element)) -#endif - { -#if 0 - if (!canPassField(x, y, move_direction)) - return MF_NO_ACTION; -#else - -#if 0 -#if 1 - if (!IN_LEV_FIELD(nextx, nexty) || IS_PLAYER(nextx, nexty) || - !IS_WALKABLE_FROM(Feld[nextx][nexty], move_direction) || - (!level.can_pass_to_walkable && !IS_FREE(nextx, nexty))) - return MF_NO_ACTION; -#else - if (!IN_LEV_FIELD(nextx, nexty) || !IS_FREE(nextx, nexty)) - return MF_NO_ACTION; -#endif -#endif - -#if 1 - if (!ACCESS_FROM(element, opposite_direction)) - return MF_NO_ACTION; /* field not accessible from this direction */ -#else - if (IS_CUSTOM_ELEMENT(element) && - !ACCESS_FROM(element, opposite_direction)) - return MF_NO_ACTION; /* field not accessible from this direction */ -#endif - -#if 1 - if (CAN_MOVE(element)) /* only fixed elements can be passed! */ - return MF_NO_ACTION; -#endif - -#endif - - if (IS_EM_GATE(element)) - { - if (!player->key[EM_GATE_NR(element)]) - return MF_NO_ACTION; - } - else if (IS_EM_GATE_GRAY(element)) - { - if (!player->key[EM_GATE_GRAY_NR(element)]) - return MF_NO_ACTION; - } - else if (IS_SP_PORT(element)) - { - if (element == EL_SP_GRAVITY_PORT_LEFT || - element == EL_SP_GRAVITY_PORT_RIGHT || - element == EL_SP_GRAVITY_PORT_UP || - element == EL_SP_GRAVITY_PORT_DOWN) - game.gravity = !game.gravity; - else if (element == EL_SP_GRAVITY_ON_PORT_LEFT || - element == EL_SP_GRAVITY_ON_PORT_RIGHT || - element == EL_SP_GRAVITY_ON_PORT_UP || - element == EL_SP_GRAVITY_ON_PORT_DOWN) - game.gravity = TRUE; - else if (element == EL_SP_GRAVITY_OFF_PORT_LEFT || - element == EL_SP_GRAVITY_OFF_PORT_RIGHT || - element == EL_SP_GRAVITY_OFF_PORT_UP || - element == EL_SP_GRAVITY_OFF_PORT_DOWN) - game.gravity = FALSE; - } - - /* automatically move to the next field with double speed */ - player->programmed_action = move_direction; -#if 1 - if (player->move_delay_reset_counter == 0) - { - player->move_delay_reset_counter = 2; /* two double speed steps */ + } - DOUBLE_PLAYER_SPEED(player); - } -#else - player->move_delay_reset_counter = 2; + PlayLevelSoundAction(x, y, ACTION_PASSING); + } + else if (IS_DIGGABLE(element)) + { + RemoveField(x, y); - DOUBLE_PLAYER_SPEED(player); -#endif + if (mode != DF_SNAP) + { + GfxElement[x][y] = GFX_ELEMENT(element); + player->is_digging = TRUE; + } - PlayLevelSoundAction(x, y, ACTION_PASSING); + PlayLevelSoundElementAction(x, y, element, ACTION_DIGGING); - break; - } - else if (IS_DIGGABLE(element)) - { - RemoveField(x, y); + CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_DIGS_X, + player->index_bit, dig_side); - if (mode != DF_SNAP) - { -#if 1 - GfxElement[x][y] = GFX_ELEMENT(element); -#else - GfxElement[x][y] = - (GFX_CRUMBLED(element) ? EL_SAND : GFX_ELEMENT(element)); -#endif - player->is_digging = TRUE; - } + if (mode == DF_SNAP) + TestIfElementTouchesCustomElement(x, y); /* for empty space */ + } + else if (IS_COLLECTIBLE(element)) + { + RemoveField(x, y); - PlayLevelSoundElementAction(x, y, element, ACTION_DIGGING); + if (is_player && mode != DF_SNAP) + { + GfxElement[x][y] = element; + player->is_collecting = TRUE; + } - CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_DIGS_X, - player->index_bit, dig_side); + if (element == EL_SPEED_PILL) + { + player->move_delay_value = MOVE_DELAY_HIGH_SPEED; + } + else if (element == EL_EXTRA_TIME && level.time > 0) + { + TimeLeft += 10; + DrawGameValue_Time(TimeLeft); + } + else if (element == EL_SHIELD_NORMAL || element == EL_SHIELD_DEADLY) + { + player->shield_normal_time_left += 10; + if (element == EL_SHIELD_DEADLY) + player->shield_deadly_time_left += 10; + } + else if (element == EL_DYNAMITE || element == EL_SP_DISK_RED) + { + if (player->inventory_size < MAX_INVENTORY_SIZE) + player->inventory_element[player->inventory_size++] = element; -#if 1 - if (mode == DF_SNAP) - TestIfElementTouchesCustomElement(x, y); /* for empty space */ -#endif + DrawGameValue_Dynamite(local_player->inventory_size); + } + else if (element == EL_DYNABOMB_INCREASE_NUMBER) + { + player->dynabomb_count++; + player->dynabombs_left++; + } + else if (element == EL_DYNABOMB_INCREASE_SIZE) + { + player->dynabomb_size++; + } + else if (element == EL_DYNABOMB_INCREASE_POWER) + { + player->dynabomb_xl = TRUE; + } + else if (IS_KEY(element)) + { + player->key[KEY_NR(element)] = TRUE; - break; - } - else if (IS_COLLECTIBLE(element)) - { - RemoveField(x, y); + DrawGameValue_Keys(player->key); - if (is_player && mode != DF_SNAP) - { - GfxElement[x][y] = element; - player->is_collecting = TRUE; - } + redraw_mask |= REDRAW_DOOR_1; + } + else if (IS_ENVELOPE(element)) + { + player->show_envelope = element; + } + else if (IS_DROPPABLE(element) || + IS_THROWABLE(element)) /* can be collected and dropped */ + { + int i; - if (element == EL_SPEED_PILL) - { - player->move_delay_value = MOVE_DELAY_HIGH_SPEED; - } - else if (element == EL_EXTRA_TIME && level.time > 0) - { - TimeLeft += 10; - DrawGameValue_Time(TimeLeft); - } - else if (element == EL_SHIELD_NORMAL || element == EL_SHIELD_DEADLY) - { - player->shield_normal_time_left += 10; - if (element == EL_SHIELD_DEADLY) - player->shield_deadly_time_left += 10; - } - else if (element == EL_DYNAMITE || element == EL_SP_DISK_RED) - { + if (element_info[element].collect_count == 0) + player->inventory_infinite_element = element; + else + for (i = 0; i < element_info[element].collect_count; i++) if (player->inventory_size < MAX_INVENTORY_SIZE) player->inventory_element[player->inventory_size++] = element; - DrawGameValue_Dynamite(local_player->inventory_size); - } - else if (element == EL_DYNABOMB_INCREASE_NUMBER) - { - player->dynabomb_count++; - player->dynabombs_left++; - } - else if (element == EL_DYNABOMB_INCREASE_SIZE) - { - player->dynabomb_size++; - } - else if (element == EL_DYNABOMB_INCREASE_POWER) - { - player->dynabomb_xl = TRUE; - } - else if (IS_KEY(element)) - { - player->key[KEY_NR(element)] = TRUE; - - DrawGameValue_Keys(player->key); - - redraw_mask |= REDRAW_DOOR_1; - } - else if (IS_ENVELOPE(element)) - { -#if 1 - player->show_envelope = element; -#else - ShowEnvelope(element - EL_ENVELOPE_1); -#endif - } - else if (IS_DROPPABLE(element) || - IS_THROWABLE(element)) /* can be collected and dropped */ - { - int i; - - if (element_info[element].collect_count == 0) - player->inventory_infinite_element = element; - else - for (i = 0; i < element_info[element].collect_count; i++) - if (player->inventory_size < MAX_INVENTORY_SIZE) - player->inventory_element[player->inventory_size++] = element; - - DrawGameValue_Dynamite(local_player->inventory_size); - } - else if (element_info[element].collect_count > 0) - { - local_player->gems_still_needed -= - element_info[element].collect_count; - if (local_player->gems_still_needed < 0) - local_player->gems_still_needed = 0; - - DrawGameValue_Emeralds(local_player->gems_still_needed); - } - - RaiseScoreElement(element); - PlayLevelSoundElementAction(x, y, element, ACTION_COLLECTING); - - if (is_player) - CheckTriggeredElementChangeByPlayer(x, y, element, - CE_PLAYER_COLLECTS_X, - player->index_bit, dig_side); - -#if 1 - if (mode == DF_SNAP) - TestIfElementTouchesCustomElement(x, y); /* for empty space */ -#endif - - break; - } - else if (IS_PUSHABLE(element)) - { - if (mode == DF_SNAP && element != EL_BD_ROCK) - return MF_NO_ACTION; - - if (CAN_FALL(element) && dy) - return MF_NO_ACTION; - - if (CAN_FALL(element) && IN_LEV_FIELD(x, y + 1) && IS_FREE(x, y + 1) && - !(element == EL_SPRING && level.use_spring_bug)) - return MF_NO_ACTION; + DrawGameValue_Dynamite(local_player->inventory_size); + } + else if (element_info[element].collect_count > 0) + { + local_player->gems_still_needed -= + element_info[element].collect_count; + if (local_player->gems_still_needed < 0) + local_player->gems_still_needed = 0; -#if 1 - if (CAN_MOVE(element) && GET_MAX_MOVE_DELAY(element) == 0 && - ((move_direction & MV_VERTICAL && - ((element_info[element].move_pattern & MV_LEFT && - IN_LEV_FIELD(x - 1, y) && IS_FREE(x - 1, y)) || - (element_info[element].move_pattern & MV_RIGHT && - IN_LEV_FIELD(x + 1, y) && IS_FREE(x + 1, y)))) || - (move_direction & MV_HORIZONTAL && - ((element_info[element].move_pattern & MV_UP && - IN_LEV_FIELD(x, y - 1) && IS_FREE(x, y - 1)) || - (element_info[element].move_pattern & MV_DOWN && - IN_LEV_FIELD(x, y + 1) && IS_FREE(x, y + 1)))))) - return MF_NO_ACTION; -#endif + DrawGameValue_Emeralds(local_player->gems_still_needed); + } -#if 1 - /* do not push elements already moving away faster than player */ - if (CAN_MOVE(element) && MovDir[x][y] == move_direction && - ABS(getElementMoveStepsize(x, y)) > MOVE_STEPSIZE_NORMAL) - return MF_NO_ACTION; -#else - if (element == EL_SPRING && MovDir[x][y] != MV_NO_MOVING) - return MF_NO_ACTION; -#endif + RaiseScoreElement(element); + PlayLevelSoundElementAction(x, y, element, ACTION_COLLECTING); -#if 1 + if (is_player) + CheckTriggeredElementChangeByPlayer(x, y, element, + CE_PLAYER_COLLECTS_X, + player->index_bit, dig_side); -#if 1 - if (game.engine_version >= VERSION_IDENT(3,1,0,0)) - { - if (player->push_delay_value == -1 || !player_was_pushing) - player->push_delay_value = GET_NEW_PUSH_DELAY(element); - } - else if (game.engine_version >= VERSION_IDENT(3,0,7,1)) - { - if (player->push_delay_value == -1) - player->push_delay_value = GET_NEW_PUSH_DELAY(element); - } -#else - if (game.engine_version >= VERSION_IDENT(3,0,7,1)) - { - if (player->push_delay_value == -1 || !player_was_pushing) - player->push_delay_value = GET_NEW_PUSH_DELAY(element); - } -#endif - else if (game.engine_version >= VERSION_IDENT(2,2,0,7)) - { - if (!player->is_pushing) - player->push_delay_value = GET_NEW_PUSH_DELAY(element); - } + if (mode == DF_SNAP) + TestIfElementTouchesCustomElement(x, y); /* for empty space */ + } + else if (IS_PUSHABLE(element)) + { + if (mode == DF_SNAP && element != EL_BD_ROCK) + return MF_NO_ACTION; - /* - if (game.engine_version >= VERSION_IDENT(2,2,0,7) && - (game.engine_version < VERSION_IDENT(3,0,7,1) || - !player_is_pushing)) - player->push_delay_value = GET_NEW_PUSH_DELAY(element); - */ -#else - if (!player->is_pushing && - game.engine_version >= VERSION_IDENT(2,2,0,7)) - player->push_delay_value = GET_NEW_PUSH_DELAY(element); -#endif + if (CAN_FALL(element) && dy) + return MF_NO_ACTION; -#if 0 - printf("::: push delay: %ld -> %ld [%d, %d] [%d / %d] [%d '%s': %d]\n", - player->push_delay, player->push_delay_value, - FrameCounter, game.engine_version, - player_was_pushing, player->is_pushing, - element, element_info[element].token_name, - GET_NEW_PUSH_DELAY(element)); -#endif + if (CAN_FALL(element) && IN_LEV_FIELD(x, y + 1) && IS_FREE(x, y + 1) && + !(element == EL_SPRING && level.use_spring_bug)) + return MF_NO_ACTION; - player->is_pushing = TRUE; + if (CAN_MOVE(element) && GET_MAX_MOVE_DELAY(element) == 0 && + ((move_direction & MV_VERTICAL && + ((element_info[element].move_pattern & MV_LEFT && + IN_LEV_FIELD(x - 1, y) && IS_FREE(x - 1, y)) || + (element_info[element].move_pattern & MV_RIGHT && + IN_LEV_FIELD(x + 1, y) && IS_FREE(x + 1, y)))) || + (move_direction & MV_HORIZONTAL && + ((element_info[element].move_pattern & MV_UP && + IN_LEV_FIELD(x, y - 1) && IS_FREE(x, y - 1)) || + (element_info[element].move_pattern & MV_DOWN && + IN_LEV_FIELD(x, y + 1) && IS_FREE(x, y + 1)))))) + return MF_NO_ACTION; - if (!(IN_LEV_FIELD(nextx, nexty) && - (IS_FREE(nextx, nexty) || - (Feld[nextx][nexty] == EL_SOKOBAN_FIELD_EMPTY && - IS_SB_ELEMENT(element))))) - return MF_NO_ACTION; + /* do not push elements already moving away faster than player */ + if (CAN_MOVE(element) && MovDir[x][y] == move_direction && + ABS(getElementMoveStepsize(x, y)) > MOVE_STEPSIZE_NORMAL) + return MF_NO_ACTION; - if (!checkDiagonalPushing(player, x, y, real_dx, real_dy)) - return MF_NO_ACTION; + if (game.engine_version >= VERSION_IDENT(3,1,0,0)) + { + if (player->push_delay_value == -1 || !player_was_pushing) + player->push_delay_value = GET_NEW_PUSH_DELAY(element); + } + else if (game.engine_version >= VERSION_IDENT(3,0,7,1)) + { + if (player->push_delay_value == -1) + player->push_delay_value = GET_NEW_PUSH_DELAY(element); + } + else if (game.engine_version >= VERSION_IDENT(2,2,0,7)) + { + if (!player->is_pushing) + player->push_delay_value = GET_NEW_PUSH_DELAY(element); + } -#if USE_NEW_PUSH_DELAY + player->is_pushing = TRUE; -#if 0 - if ( (player->push_delay == -1) != (player->push_delay2 == 0) ) - printf("::: ALERT: %d, %d [%d / %d]\n", - player->push_delay, player->push_delay2, - FrameCounter, FrameCounter / 50); -#endif + if (!(IN_LEV_FIELD(nextx, nexty) && + (IS_FREE(nextx, nexty) || + (Feld[nextx][nexty] == EL_SOKOBAN_FIELD_EMPTY && + IS_SB_ELEMENT(element))))) + return MF_NO_ACTION; - if (player->push_delay == -1) /* new pushing; restart delay */ - player->push_delay = 0; -#else - if (player->push_delay == 0) /* new pushing; restart delay */ - player->push_delay = FrameCounter; -#endif + if (!checkDiagonalPushing(player, x, y, real_dx, real_dy)) + return MF_NO_ACTION; #if USE_NEW_PUSH_DELAY -#if 0 - if ( (player->push_delay > 0) != (!xxx_fr) ) - printf("::: PUSH BUG! %d, (%d -> %d) %d [%d / %d]\n", - player->push_delay, - xxx_pdv2, player->push_delay2, player->push_delay_value, - FrameCounter, FrameCounter / 50); -#endif - -#if 0 - if (player->push_delay > 0 && - !(tape.playing && tape.file_version < FILE_VERSION_2_0) && - element != EL_SPRING && element != EL_BALLOON) + if (player->push_delay == -1) /* new pushing; restart delay */ + player->push_delay = 0; #else - /* !!! */ - if (player->push_delay < player->push_delay_value && - !(tape.playing && tape.file_version < FILE_VERSION_2_0) && - element != EL_SPRING && element != EL_BALLOON) + if (player->push_delay == 0) /* new pushing; restart delay */ + player->push_delay = FrameCounter; #endif +#if USE_NEW_PUSH_DELAY + if (player->push_delay < player->push_delay_value && + !(tape.playing && tape.file_version < FILE_VERSION_2_0) && + element != EL_SPRING && element != EL_BALLOON) #else - if (!FrameReached(&player->push_delay, player->push_delay_value) && - !(tape.playing && tape.file_version < FILE_VERSION_2_0) && - element != EL_SPRING && element != EL_BALLOON) + if (!FrameReached(&player->push_delay, player->push_delay_value) && + !(tape.playing && tape.file_version < FILE_VERSION_2_0) && + element != EL_SPRING && element != EL_BALLOON) #endif - { - /* make sure that there is no move delay before next try to push */ + { + /* make sure that there is no move delay before next try to push */ #if USE_NEW_MOVE_DELAY - if (game.engine_version >= VERSION_IDENT(3,0,7,1)) - player->move_delay = 0; + if (game.engine_version >= VERSION_IDENT(3,0,7,1)) + player->move_delay = 0; #else - if (game.engine_version >= VERSION_IDENT(3,0,7,1)) - player->move_delay = INITIAL_MOVE_DELAY_OFF; + if (game.engine_version >= VERSION_IDENT(3,0,7,1)) + player->move_delay = INITIAL_MOVE_DELAY_OFF; #endif - return MF_NO_ACTION; - } - -#if 0 - printf("::: NOW PUSHING... [%d]\n", FrameCounter); -#endif + return MF_NO_ACTION; + } - if (IS_SB_ELEMENT(element)) - { - if (element == EL_SOKOBAN_FIELD_FULL) - { - Back[x][y] = EL_SOKOBAN_FIELD_EMPTY; - local_player->sokobanfields_still_needed++; - } + if (IS_SB_ELEMENT(element)) + { + if (element == EL_SOKOBAN_FIELD_FULL) + { + Back[x][y] = EL_SOKOBAN_FIELD_EMPTY; + local_player->sokobanfields_still_needed++; + } - if (Feld[nextx][nexty] == EL_SOKOBAN_FIELD_EMPTY) - { - Back[nextx][nexty] = EL_SOKOBAN_FIELD_EMPTY; - local_player->sokobanfields_still_needed--; - } + if (Feld[nextx][nexty] == EL_SOKOBAN_FIELD_EMPTY) + { + Back[nextx][nexty] = EL_SOKOBAN_FIELD_EMPTY; + local_player->sokobanfields_still_needed--; + } - Feld[x][y] = EL_SOKOBAN_OBJECT; + Feld[x][y] = EL_SOKOBAN_OBJECT; - if (Back[x][y] == Back[nextx][nexty]) - PlayLevelSoundAction(x, y, ACTION_PUSHING); - else if (Back[x][y] != 0) - PlayLevelSoundElementAction(x, y, EL_SOKOBAN_FIELD_FULL, - ACTION_EMPTYING); - else - PlayLevelSoundElementAction(nextx, nexty, EL_SOKOBAN_FIELD_EMPTY, - ACTION_FILLING); + if (Back[x][y] == Back[nextx][nexty]) + PlayLevelSoundAction(x, y, ACTION_PUSHING); + else if (Back[x][y] != 0) + PlayLevelSoundElementAction(x, y, EL_SOKOBAN_FIELD_FULL, + ACTION_EMPTYING); + else + PlayLevelSoundElementAction(nextx, nexty, EL_SOKOBAN_FIELD_EMPTY, + ACTION_FILLING); - if (local_player->sokobanfields_still_needed == 0 && - game.emulation == EMU_SOKOBAN) - { - player->LevelSolved = player->GameOver = TRUE; - PlayLevelSound(x, y, SND_GAME_SOKOBAN_SOLVING); - } - } - else - PlayLevelSoundElementAction(x, y, element, ACTION_PUSHING); + if (local_player->sokobanfields_still_needed == 0 && + game.emulation == EMU_SOKOBAN) + { + player->LevelSolved = player->GameOver = TRUE; + PlayLevelSound(x, y, SND_GAME_SOKOBAN_SOLVING); + } + } + else + PlayLevelSoundElementAction(x, y, element, ACTION_PUSHING); - InitMovingField(x, y, move_direction); - GfxAction[x][y] = ACTION_PUSHING; + InitMovingField(x, y, move_direction); + GfxAction[x][y] = ACTION_PUSHING; - if (mode == DF_SNAP) - ContinueMoving(x, y); - else - MovPos[x][y] = (dx != 0 ? dx : dy); + if (mode == DF_SNAP) + ContinueMoving(x, y); + else + MovPos[x][y] = (dx != 0 ? dx : dy); - Pushed[x][y] = TRUE; - Pushed[nextx][nexty] = TRUE; + Pushed[x][y] = TRUE; + Pushed[nextx][nexty] = TRUE; - if (game.engine_version < VERSION_IDENT(2,2,0,7)) - player->push_delay_value = GET_NEW_PUSH_DELAY(element); - else - player->push_delay_value = -1; /* get new value later */ + if (game.engine_version < VERSION_IDENT(2,2,0,7)) + player->push_delay_value = GET_NEW_PUSH_DELAY(element); + else + player->push_delay_value = -1; /* get new value later */ #if USE_PUSH_BUGFIX - /* now: check for element change _after_ element has been pushed! */ -#if 1 - if (game.use_change_when_pushing_bug) -#else - if (game.engine_version < VERSION_IDENT(3,1,0,0)) -#endif - { - CheckElementChangeByPlayer(x, y, element, CE_PUSHED_BY_PLAYER, - player->index_bit, dig_side); - CheckTriggeredElementChangeByPlayer(x,y, element, CE_PLAYER_PUSHES_X, - player->index_bit, dig_side); - } - -#else - -#if 1 - /* check for element change _after_ element has been pushed! */ -#else + /* now: check for element change _after_ element has been pushed! */ + if (game.use_change_when_pushing_bug) + { + CheckElementChangeByPlayer(x, y, element, CE_PUSHED_BY_PLAYER, + player->index_bit, dig_side); + CheckTriggeredElementChangeByPlayer(x,y, element, CE_PLAYER_PUSHES_X, + player->index_bit, dig_side); + } -#if 1 - /* !!! TEST ONLY !!! */ - CheckElementChangeByPlayer(x, y, element, CE_PUSHED_BY_PLAYER, - player->index_bit, dig_side); - CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_PUSHES_X, - player->index_bit, dig_side); #else - CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_PUSHES_X, - player->index_bit, dig_side); - CheckElementChangeByPlayer(x, y, element, CE_PUSHED_BY_PLAYER, - player->index_bit, dig_side); -#endif + /* check for element change _after_ element has been pushed! */ #endif + } + else if (IS_SWITCHABLE(element)) + { + if (PLAYER_SWITCHING(player, x, y)) + { + CheckTriggeredElementChangeByPlayer(x,y, element, + CE_PLAYER_PRESSES_X, + player->index_bit, dig_side); -#endif - - break; - } - else if (IS_SWITCHABLE(element)) - { - if (PLAYER_SWITCHING(player, x, y)) - { - CheckTriggeredElementChangeByPlayer(x,y, element, - CE_PLAYER_PRESSES_X, - player->index_bit, dig_side); - - return MF_ACTION; - } - - player->is_switching = TRUE; - player->switch_x = x; - player->switch_y = y; - - PlayLevelSoundElementAction(x, y, element, ACTION_ACTIVATING); + return MF_ACTION; + } - if (element == EL_ROBOT_WHEEL) - { - Feld[x][y] = EL_ROBOT_WHEEL_ACTIVE; - ZX = x; - ZY = y; + player->is_switching = TRUE; + player->switch_x = x; + player->switch_y = y; - DrawLevelField(x, y); - } - else if (element == EL_SP_TERMINAL) - { - int xx, yy; + PlayLevelSoundElementAction(x, y, element, ACTION_ACTIVATING); - for (yy = 0; yy < lev_fieldy; yy++) for (xx=0; xx < lev_fieldx; xx++) - { - if (Feld[xx][yy] == EL_SP_DISK_YELLOW) - Bang(xx, yy); - else if (Feld[xx][yy] == EL_SP_TERMINAL) - Feld[xx][yy] = EL_SP_TERMINAL_ACTIVE; - } - } - else if (IS_BELT_SWITCH(element)) - { - ToggleBeltSwitch(x, y); - } - else if (element == EL_SWITCHGATE_SWITCH_UP || - element == EL_SWITCHGATE_SWITCH_DOWN) - { - ToggleSwitchgateSwitch(x, y); - } - else if (element == EL_LIGHT_SWITCH || - element == EL_LIGHT_SWITCH_ACTIVE) - { - ToggleLightSwitch(x, y); + if (element == EL_ROBOT_WHEEL) + { + Feld[x][y] = EL_ROBOT_WHEEL_ACTIVE; + ZX = x; + ZY = y; -#if 0 - PlayLevelSound(x, y, element == EL_LIGHT_SWITCH ? - SND_LIGHT_SWITCH_ACTIVATING : - SND_LIGHT_SWITCH_DEACTIVATING); -#endif - } - else if (element == EL_TIMEGATE_SWITCH) - { - ActivateTimegateSwitch(x, y); - } - else if (element == EL_BALLOON_SWITCH_LEFT || - element == EL_BALLOON_SWITCH_RIGHT || - element == EL_BALLOON_SWITCH_UP || - element == EL_BALLOON_SWITCH_DOWN || - element == EL_BALLOON_SWITCH_ANY) - { - if (element == EL_BALLOON_SWITCH_ANY) - game.balloon_dir = move_direction; - else - game.balloon_dir = (element == EL_BALLOON_SWITCH_LEFT ? MV_LEFT : - element == EL_BALLOON_SWITCH_RIGHT ? MV_RIGHT : - element == EL_BALLOON_SWITCH_UP ? MV_UP : - element == EL_BALLOON_SWITCH_DOWN ? MV_DOWN : - MV_NO_MOVING); - } - else if (element == EL_LAMP) - { - Feld[x][y] = EL_LAMP_ACTIVE; - local_player->lights_still_needed--; + DrawLevelField(x, y); + } + else if (element == EL_SP_TERMINAL) + { + int xx, yy; - ResetGfxAnimation(x, y); - DrawLevelField(x, y); - } - else if (element == EL_TIME_ORB_FULL) - { - Feld[x][y] = EL_TIME_ORB_EMPTY; - TimeLeft += 10; - DrawGameValue_Time(TimeLeft); + for (yy = 0; yy < lev_fieldy; yy++) for (xx=0; xx < lev_fieldx; xx++) + { + if (Feld[xx][yy] == EL_SP_DISK_YELLOW) + Bang(xx, yy); + else if (Feld[xx][yy] == EL_SP_TERMINAL) + Feld[xx][yy] = EL_SP_TERMINAL_ACTIVE; + } + } + else if (IS_BELT_SWITCH(element)) + { + ToggleBeltSwitch(x, y); + } + else if (element == EL_SWITCHGATE_SWITCH_UP || + element == EL_SWITCHGATE_SWITCH_DOWN) + { + ToggleSwitchgateSwitch(x, y); + } + else if (element == EL_LIGHT_SWITCH || + element == EL_LIGHT_SWITCH_ACTIVE) + { + ToggleLightSwitch(x, y); + } + else if (element == EL_TIMEGATE_SWITCH) + { + ActivateTimegateSwitch(x, y); + } + else if (element == EL_BALLOON_SWITCH_LEFT || + element == EL_BALLOON_SWITCH_RIGHT || + element == EL_BALLOON_SWITCH_UP || + element == EL_BALLOON_SWITCH_DOWN || + element == EL_BALLOON_SWITCH_ANY) + { + if (element == EL_BALLOON_SWITCH_ANY) + game.balloon_dir = move_direction; + else + game.balloon_dir = (element == EL_BALLOON_SWITCH_LEFT ? MV_LEFT : + element == EL_BALLOON_SWITCH_RIGHT ? MV_RIGHT : + element == EL_BALLOON_SWITCH_UP ? MV_UP : + element == EL_BALLOON_SWITCH_DOWN ? MV_DOWN : + MV_NO_MOVING); + } + else if (element == EL_LAMP) + { + Feld[x][y] = EL_LAMP_ACTIVE; + local_player->lights_still_needed--; - ResetGfxAnimation(x, y); - DrawLevelField(x, y); + ResetGfxAnimation(x, y); + DrawLevelField(x, y); + } + else if (element == EL_TIME_ORB_FULL) + { + Feld[x][y] = EL_TIME_ORB_EMPTY; + TimeLeft += 10; + DrawGameValue_Time(TimeLeft); -#if 0 - PlaySoundStereo(SND_TIME_ORB_FULL_COLLECTING, SOUND_MIDDLE); -#endif - } + ResetGfxAnimation(x, y); + DrawLevelField(x, y); + } - CheckTriggeredElementChangeByPlayer(x, y, element, - CE_SWITCH_OF_X, - player->index_bit, dig_side); + CheckTriggeredElementChangeByPlayer(x, y, element, + CE_SWITCH_OF_X, + player->index_bit, dig_side); - CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_PRESSES_X, - player->index_bit, dig_side); + CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_PRESSES_X, + player->index_bit, dig_side); - return MF_ACTION; - } - else - { - if (!PLAYER_SWITCHING(player, x, y)) - { - player->is_switching = TRUE; - player->switch_x = x; - player->switch_y = y; + return MF_ACTION; + } + else + { + if (!PLAYER_SWITCHING(player, x, y)) + { + player->is_switching = TRUE; + player->switch_x = x; + player->switch_y = y; -#if 1 - /* !!! TEST ONLY !!! */ - CheckElementChangeByPlayer(x, y, element, CE_SWITCHED, - player->index_bit, dig_side); - CheckTriggeredElementChangeByPlayer(x, y, element, - CE_SWITCH_OF_X, - player->index_bit, dig_side); -#else - CheckTriggeredElementChangeByPlayer(x, y, element, - CE_SWITCH_OF_X, - player->index_bit, dig_side); - CheckElementChangeByPlayer(x, y, element, CE_SWITCHED, - player->index_bit, dig_side); -#endif - } + CheckElementChangeByPlayer(x, y, element, CE_SWITCHED, + player->index_bit, dig_side); + CheckTriggeredElementChangeByPlayer(x, y, element, + CE_SWITCH_OF_X, + player->index_bit, dig_side); + } -#if 1 - /* !!! TEST ONLY !!! (this breaks "machine", level 000) */ - CheckElementChangeByPlayer(x, y, element, CE_PRESSED_BY_PLAYER, - player->index_bit, dig_side); - CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_PRESSES_X, - player->index_bit, dig_side); -#else - CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_PRESSES_X, - player->index_bit, dig_side); - CheckElementChangeByPlayer(x, y, element, CE_PRESSED_BY_PLAYER, - player->index_bit, dig_side); -#endif - } + CheckElementChangeByPlayer(x, y, element, CE_PRESSED_BY_PLAYER, + player->index_bit, dig_side); + CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_PRESSES_X, + player->index_bit, dig_side); - return MF_NO_ACTION; + return MF_NO_ACTION; } #if USE_NEW_PUSH_DELAY @@ -12838,13 +9841,8 @@ boolean SnapField(struct PlayerInfo *player, int dx, int dy) dy == -1 ? MV_UP : dy == +1 ? MV_DOWN : MV_NO_MOVING); -#if 0 - if (player->MovPos != 0) - return FALSE; -#else if (player->MovPos != 0 && game.engine_version >= VERSION_IDENT(2,2,0,0)) return FALSE; -#endif if (!player->active || !IN_LEV_FIELD(x, y)) return FALSE; @@ -12874,9 +9872,7 @@ boolean SnapField(struct PlayerInfo *player, int dx, int dy) player->MovDir = snap_direction; -#if 1 if (player->MovPos == 0) -#endif { player->is_moving = FALSE; player->is_digging = FALSE; @@ -12890,26 +9886,18 @@ boolean SnapField(struct PlayerInfo *player, int dx, int dy) player->is_snapping = TRUE; -#if 1 if (player->MovPos == 0) -#endif { player->is_moving = FALSE; player->is_digging = FALSE; player->is_collecting = FALSE; } -#if 1 if (player->MovPos != 0) /* prevent graphic bugs in versions < 2.2.0 */ DrawLevelField(player->last_jx, player->last_jy); -#endif DrawLevelField(x, y); -#if 0 - BackToFront(); -#endif - return TRUE; } @@ -12918,18 +9906,7 @@ boolean DropElement(struct PlayerInfo *player) int old_element, new_element; int dropx = player->jx, dropy = player->jy; int drop_direction = player->MovDir; -#if 1 int drop_side = drop_direction; -#else - static int trigger_sides[4] = - { - CH_SIDE_LEFT, /* dropping left */ - CH_SIDE_RIGHT, /* dropping right */ - CH_SIDE_TOP, /* dropping up */ - CH_SIDE_BOTTOM, /* dropping down */ - }; - int drop_side = trigger_sides[MV_DIR_BIT(drop_direction)]; -#endif int drop_element = (player->inventory_size > 0 ? player->inventory_element[player->inventory_size - 1] : player->inventory_infinite_element != EL_UNDEFINED ? @@ -12964,30 +9941,16 @@ boolean DropElement(struct PlayerInfo *player) return FALSE; /* check if player has anything that can be dropped */ -#if 1 if (new_element == EL_UNDEFINED) return FALSE; -#else - if (player->inventory_size == 0 && - player->inventory_infinite_element == EL_UNDEFINED && - player->dynabombs_left == 0) - return FALSE; -#endif /* check if anything can be dropped at the current position */ if (IS_ACTIVE_BOMB(old_element) || old_element == EL_EXPLOSION) return FALSE; /* collected custom elements can only be dropped on empty fields */ -#if 1 if (IS_CUSTOM_ELEMENT(new_element) && old_element != EL_EMPTY) return FALSE; -#else - if (player->inventory_size > 0 && - IS_CUSTOM_ELEMENT(player->inventory_element[player->inventory_size - 1]) - && old_element != EL_EMPTY) - return FALSE; -#endif if (old_element != EL_EMPTY) Back[dropx][dropy] = old_element; /* store old element on this field */ @@ -13002,10 +9965,6 @@ boolean DropElement(struct PlayerInfo *player) { player->inventory_size--; -#if 0 - new_element = player->inventory_element[player->inventory_size]; -#endif - DrawGameValue_Dynamite(local_player->inventory_size); if (new_element == EL_DYNAMITE) @@ -13022,25 +9981,14 @@ boolean DropElement(struct PlayerInfo *player) PlayLevelSoundAction(dropx, dropy, ACTION_DROPPING); -#if 1 /* needed if previous element just changed to "empty" in the last frame */ Changed[dropx][dropy] = FALSE; /* allow another change */ -#endif -#if 1 - /* !!! TEST ONLY !!! */ CheckElementChangeByPlayer(dropx, dropy, new_element, CE_DROPPED_BY_PLAYER, player->index_bit, drop_side); CheckTriggeredElementChangeByPlayer(dropx, dropy, new_element, CE_PLAYER_DROPS_X, player->index_bit, drop_side); -#else - CheckTriggeredElementChangeByPlayer(dropx, dropy, new_element, - CE_PLAYER_DROPS_X, - player->index_bit, drop_side); - CheckElementChangeByPlayer(dropx, dropy, new_element, CE_DROPPED_BY_PLAYER, - player->index_bit, drop_side); -#endif TestIfElementTouchesCustomElement(dropx, dropy); } @@ -13048,10 +9996,6 @@ boolean DropElement(struct PlayerInfo *player) { player->dynabombs_left--; -#if 0 - new_element = EL_DYNABOMB_PLAYER_1_ACTIVE + player->index_nr; -#endif - Feld[dropx][dropy] = new_element; if (IN_SCR_FIELD(SCREENX(dropx), SCREENY(dropy))) @@ -13061,29 +10005,14 @@ boolean DropElement(struct PlayerInfo *player) PlayLevelSoundAction(dropx, dropy, ACTION_DROPPING); } - - -#if 1 - if (Feld[dropx][dropy] == new_element) /* uninitialized unless CE change */ - { -#if 1 InitField_WithBug1(dropx, dropy, FALSE); -#else - InitField(dropx, dropy, FALSE); - if (CAN_MOVE(Feld[dropx][dropy])) - InitMovDir(dropx, dropy); -#endif - } new_element = Feld[dropx][dropy]; /* element might have changed */ if (IS_CUSTOM_ELEMENT(new_element) && CAN_MOVE(new_element) && element_info[new_element].move_pattern == MV_WHEN_DROPPED) { -#if 0 - int move_stepsize = element_info[new_element].move_stepsize; -#endif int move_direction, nextx, nexty; if (element_info[new_element].move_direction_initial == MV_START_AUTOMATIC) @@ -13093,54 +10022,11 @@ boolean DropElement(struct PlayerInfo *player) nextx = dropx + GET_DX_FROM_DIR(move_direction); nexty = dropy + GET_DY_FROM_DIR(move_direction); -#if 1 Changed[dropx][dropy] = FALSE; /* allow another change */ CheckCollision[dropx][dropy] = 2; -#else - - if (IN_LEV_FIELD_AND_IS_FREE(nextx, nexty)) - { -#if 0 - WasJustMoving[dropx][dropy] = 3; -#else -#if 1 - InitMovingField(dropx, dropy, move_direction); - ContinueMoving(dropx, dropy); -#endif -#endif - } -#if 0 - /* !!! commented out from 3.1.0-4 to 3.1.0-5 !!! */ - else - { - Changed[dropx][dropy] = FALSE; /* allow another change */ - -#if 1 - TestIfElementHitsCustomElement(dropx, dropy, move_direction); -#else - CheckElementChangeBySide(dropx, dropy, new_element, touched_element, - CE_HITTING_SOMETHING, move_direction); -#endif - } -#endif - -#endif - -#if 0 - player->drop_delay = 2 * TILEX / move_stepsize + 1; -#endif } -#if 0 - player->drop_delay = 8 + 8 + 8; -#endif - -#if 1 player->drop_delay = GET_NEW_DROP_DELAY(drop_element); -#endif - -#endif - player->is_dropping = TRUE; #if USE_DROP_BUGFIX @@ -13273,11 +10159,6 @@ void PlayLevelSound_EM(int x, int y, int element_em, int sample) { int element = (element_em > -1 ? map_element_EM_to_RND(element_em) : 0); -#if 0 - if (sample == SAMPLE_bug) - printf("::: PlayLevelSound_EM: %d, %d: %d\n", x, y, sample); -#endif - switch (sample) { case SAMPLE_blank: @@ -13536,19 +10417,13 @@ void RequestQuitGame(boolean ask_if_really_quit) } else { - -#if 1 if (tape.playing && tape.deactivate_display) TapeDeactivateDisplayOff(TRUE); -#endif OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK); -#if 1 if (tape.playing && tape.deactivate_display) TapeDeactivateDisplayOn(); -#endif - } } diff --git a/src/init.c b/src/init.c index 9fcad891..b49b9bfe 100644 --- a/src/init.c +++ b/src/init.c @@ -77,180 +77,6 @@ static int copy_properties[][5] = } }; -static void InitTileClipmasks() -{ -#if 0 -#if defined(TARGET_X11) - XGCValues clip_gc_values; - unsigned long clip_gc_valuemask; - -#if defined(TARGET_X11_NATIVE) - -#if 0 - GC copy_clipmask_gc; - - static struct - { - int start; - int count; - } - tile_needs_clipping[] = - { - { GFX_SPIELER1_UP, 4 }, - { GFX_SPIELER1_DOWN, 4 }, - { GFX_SPIELER1_LEFT, 4 }, - { GFX_SPIELER1_RIGHT, 4 }, - { GFX_SPIELER1_PUSH_LEFT, 4 }, - { GFX_SPIELER1_PUSH_RIGHT, 4 }, - { GFX_SPIELER2_UP, 4 }, - { GFX_SPIELER2_DOWN, 4 }, - { GFX_SPIELER2_LEFT, 4 }, - { GFX_SPIELER2_RIGHT, 4 }, - { GFX_SPIELER2_PUSH_LEFT, 4 }, - { GFX_SPIELER2_PUSH_RIGHT, 4 }, - { GFX_SPIELER3_UP, 4 }, - { GFX_SPIELER3_DOWN, 4 }, - { GFX_SPIELER3_LEFT, 4 }, - { GFX_SPIELER3_RIGHT, 4 }, - { GFX_SPIELER3_PUSH_LEFT, 4 }, - { GFX_SPIELER3_PUSH_RIGHT, 4 }, - { GFX_SPIELER4_UP, 4 }, - { GFX_SPIELER4_DOWN, 4 }, - { GFX_SPIELER4_LEFT, 4 }, - { GFX_SPIELER4_RIGHT, 4 }, - { GFX_SPIELER4_PUSH_LEFT, 4 }, - { GFX_SPIELER4_PUSH_RIGHT, 4 }, - { GFX_SP_MURPHY, 1 }, - { GFX_MURPHY_GO_LEFT, 3 }, - { GFX_MURPHY_GO_RIGHT, 3 }, - { GFX_MURPHY_SNAP_UP, 1 }, - { GFX_MURPHY_SNAP_DOWN, 1 }, - { GFX_MURPHY_SNAP_RIGHT, 1 }, - { GFX_MURPHY_SNAP_LEFT, 1 }, - { GFX_MURPHY_PUSH_RIGHT, 1 }, - { GFX_MURPHY_PUSH_LEFT, 1 }, - { GFX_GEBLUBBER, 4 }, - { GFX_DYNAMIT, 7 }, - { GFX_DYNABOMB, 4 }, - { GFX_EXPLOSION, 8 }, - { GFX_SOKOBAN_OBJEKT, 1 }, - { GFX_FUNKELN_BLAU, 3 }, - { GFX_FUNKELN_WEISS, 3 }, - { GFX2_SHIELD_PASSIVE, 3 }, - { GFX2_SHIELD_ACTIVE, 3 }, - { -1, 0 } - }; -#endif - -#endif /* TARGET_X11_NATIVE */ -#endif /* TARGET_X11 */ - - int i; - - /* initialize pixmap array for special X11 tile clipping to Pixmap 'None' */ - for (i = 0; i < NUM_TILES; i++) - tile_clipmask[i] = None; - -#if defined(TARGET_X11) - /* This stuff is needed because X11 (XSetClipOrigin(), to be precise) is - often very slow when preparing a masked XCopyArea() for big Pixmaps. - To prevent this, create small (tile-sized) mask Pixmaps which will then - be set much faster with XSetClipOrigin() and speed things up a lot. */ - - clip_gc_values.graphics_exposures = False; - clip_gc_valuemask = GCGraphicsExposures; - tile_clip_gc = XCreateGC(display, window->drawable, - clip_gc_valuemask, &clip_gc_values); - -#if 0 - for (i = 0; i < NUM_BITMAPS; i++) - { - if (pix[i]->clip_mask) - { - clip_gc_values.graphics_exposures = False; - clip_gc_values.clip_mask = pix[i]->clip_mask; - clip_gc_valuemask = GCGraphicsExposures | GCClipMask; - pix[i]->stored_clip_gc = XCreateGC(display, window->drawable, - clip_gc_valuemask, &clip_gc_values); - } - } -#endif - -#if defined(TARGET_X11_NATIVE) - -#if 0 - /* create graphic context structures needed for clipping */ - clip_gc_values.graphics_exposures = False; - clip_gc_valuemask = GCGraphicsExposures; - copy_clipmask_gc = XCreateGC(display, pix[PIX_BACK]->clip_mask, - clip_gc_valuemask, &clip_gc_values); - - /* create only those clipping Pixmaps we really need */ - for (i = 0; tile_needs_clipping[i].start >= 0; i++) - { - int j; - - for (j = 0; j < tile_needs_clipping[i].count; j++) - { - int tile = tile_needs_clipping[i].start + j; - int graphic = tile; - int src_x, src_y; - Bitmap *src_bitmap; - Pixmap src_pixmap; - - getGraphicSource(graphic, &src_bitmap, &src_x, &src_y); - src_pixmap = src_bitmap->clip_mask; - - tile_clipmask[tile] = XCreatePixmap(display, window->drawable, - TILEX, TILEY, 1); - - XCopyArea(display, src_pixmap, tile_clipmask[tile], copy_clipmask_gc, - src_x, src_y, TILEX, TILEY, 0, 0); - } - } - - XFreeGC(display, copy_clipmask_gc); -#endif - -#endif /* TARGET_X11_NATIVE */ -#endif /* TARGET_X11 */ -#endif -} - -void FreeTileClipmasks() -{ -#if 0 -#if defined(TARGET_X11) - int i; - - for (i = 0; i < NUM_TILES; i++) - { - if (tile_clipmask[i] != None) - { - XFreePixmap(display, tile_clipmask[i]); - tile_clipmask[i] = None; - } - } - - if (tile_clip_gc) - XFreeGC(display, tile_clip_gc); - tile_clip_gc = None; - -#if 0 - for (i = 0; i < NUM_BITMAPS; i++) - { - if (pix[i] != NULL && pix[i]->stored_clip_gc) - { - XFreeGC(display, pix[i]->stored_clip_gc); - pix[i]->stored_clip_gc = None; - } - } -#endif - -#endif /* TARGET_X11 */ -#endif -} - void FreeGadgets() { FreeLevelEditorGadgets(); @@ -296,22 +122,8 @@ void InitElementSmallImages() InitElementSmallImagesScaledUp(element_to_special_graphic[i].graphic); /* initialize images from dynamic configuration (may be elements or other) */ -#if 1 for (i = 0; i < num_property_mappings; i++) InitElementSmallImagesScaledUp(property_mapping[i].artwork_index); -#else - /* !!! THIS DOES NOT WORK -- "artwork_index" is graphic, not element !!! */ - /* !!! ALSO, non-element graphics might need scaling-up !!! */ - for (i = 0; i < num_property_mappings; i++) - if (property_mapping[i].artwork_index < MAX_NUM_ELEMENTS) - InitElementSmallImagesScaledUp(property_mapping[i].artwork_index); -#endif - -#if 0 - /* !!! FIX THIS (CHANGE TO USING NORMAL ELEMENT GRAPHIC DEFINITIONS) !!! */ - for (i = IMG_EMC_OBJECT; i <= IMG_EMC_SPRITE; i++) - InitElementSmallImagesScaledUp(i); -#endif } #if 1 @@ -358,13 +170,8 @@ void InitFontGraphicInfo() /* ---------- initialize font graphic definitions ---------- */ /* always start with reliable default values (normal font graphics) */ -#if 1 for (i = 0; i < NUM_FONTS; i++) font_info[i].graphic = IMG_FONT_INITIAL_1; -#else - for (i = 0; i < NUM_FONTS; i++) - font_info[i].graphic = FONT_INITIAL_1; -#endif /* initialize normal font/graphic mapping from static configuration */ for (i = 0; font_to_graphic[i].font_nr > -1; i++) @@ -631,7 +438,6 @@ void InitElementGraphicInfo() element_info[EL_AMOEBA_TO_DIAMOND].graphic[ACTION_DEFAULT] = IMG_AMOEBA_DEAD; #endif -#if 1 /* now set all undefined/invalid graphics to -1 to set to default after it */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) { @@ -659,9 +465,7 @@ void InitElementGraphicInfo() } } } -#endif -#if 1 /* adjust graphics with 2nd tile for movement according to direction (do this before correcting '-1' values to minimize calculations) */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) @@ -689,18 +493,6 @@ void InitElementGraphicInfo() g->offset_y != 0); boolean front_is_left_or_upper = (src_x_front < src_x_back || src_y_front < src_y_back); -#if 0 - boolean second_tile_is_back = - ((move_dir == MV_BIT_LEFT && front_is_left_or_upper) || - (move_dir == MV_BIT_UP && front_is_left_or_upper)); - boolean second_tile_is_front = - ((move_dir == MV_BIT_RIGHT && front_is_left_or_upper) || - (move_dir == MV_BIT_DOWN && front_is_left_or_upper)); - boolean second_tile_should_be_front = - (g->second_tile_is_start == 0); - boolean second_tile_should_be_back = - (g->second_tile_is_start == 1); -#endif boolean swap_movement_tiles_always = (g->swap_double_tiles == 1); boolean swap_movement_tiles_autodetected = (!frames_are_ordered_diagonally && @@ -710,17 +502,6 @@ void InitElementGraphicInfo() (move_dir == MV_BIT_DOWN && front_is_left_or_upper))); Bitmap *dummy; -#if 0 - printf("::: CHECKING element %d ('%s'), '%s', dir %d [(%d -> %d, %d), %d => %d]\n", - i, element_info[i].token_name, - element_action_info[act].suffix, move_dir, - g->swap_double_tiles, - swap_movement_tiles_never, - swap_movement_tiles_always, - swap_movement_tiles_autodetected, - swap_movement_tiles); -#endif - /* swap frontside and backside graphic tile coordinates, if needed */ if (swap_movement_tiles_always || swap_movement_tiles_autodetected) { @@ -738,16 +519,11 @@ void InitElementGraphicInfo() /* do not swap front and backside tiles again after correction */ g->swap_double_tiles = 0; - -#if 0 - printf(" CORRECTED\n"); -#endif } } } } } -#endif /* now set all '-1' values to element specific default values */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) @@ -879,16 +655,6 @@ void InitElementGraphicInfo() if (element_info[i].direction_crumbled[act][dir] == -1) element_info[i].direction_crumbled[act][dir] = default_action_direction_crumbled; - -#if 0 - if (i == EL_EMC_GRASS && - act == ACTION_DIGGING && - dir == MV_BIT_DOWN) - printf("::: direction_crumbled == %d, %d, %d\n", - element_info[i].direction_crumbled[act][dir], - default_action_direction_crumbled, - element_info[i].crumbled[act]); -#endif } /* no graphic for this specific action -- use default action graphic */ @@ -910,7 +676,6 @@ void InitElementGraphicInfo() } } -#if 1 /* set animation mode to "none" for each graphic with only 1 frame */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) { @@ -936,7 +701,6 @@ void InitElementGraphicInfo() } } } -#endif #if 0 #if DEBUG @@ -1000,14 +764,12 @@ void InitElementSpecialGraphicInfo() element_info[element].special_graphic[special] = graphic; } -#if 1 /* now set all undefined/invalid graphics to default */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) for (j = 0; j < NUM_SPECIAL_GFX_ARGS; j++) if (graphic_info[element_info[i].special_graphic[j]].bitmap == NULL) element_info[i].special_graphic[j] = element_info[i].graphic[ACTION_DEFAULT]; -#endif } static int get_element_from_token(char *token) @@ -1047,48 +809,9 @@ static void set_graphic_parameters(int graphic, int graphic_copy_from) int anim_frames_per_line = 1; int i; -#if 1 -#if 1 - - /* !!! NEW ARTWORK FALLBACK CODE !!! NEARLY UNTESTED !!! */ /* if fallback to default artwork is done, also use the default parameters */ if (image->fallback_to_default) - { -#if 0 - printf("::: FALLBACK for %d\n", graphic_copy_from); -#endif - parameter_raw = image->default_parameter; - } - -#else - - /* !!! ARTWORK FALLBACK CODE !!! NEARLY UNTESTED !!! */ - /* (better try to set a "fallback -> use default parameters" flag) */ - if (src_bitmap) - { - int len_source_filename = strlen(src_bitmap->source_filename); - int len_default_filename = strlen(image->default_filename); - int pos_basename = len_source_filename - len_default_filename; - char *source_basename = &src_bitmap->source_filename[pos_basename]; - -#if 0 - printf("::: src_bitmap->source_filename -> '%s'\n", - src_bitmap->source_filename); - printf("::: image->default_filename -> '%s'\n", - image->default_filename); - printf("::: image->filename -> '%s'\n", - image->filename); -#endif - - /* check if there was a fallback to the default artwork file */ - if (strcmp(image->filename, image->default_filename) != 0 && - pos_basename >= 0 && - strcmp(source_basename, image->default_filename) == 0) - parameter_raw = image->default_parameter; - } -#endif -#endif /* get integer values from string parameters */ for (i = 0; i < NUM_GFX_ARGS; i++) @@ -1296,10 +1019,6 @@ static void InitGraphicInfo() graphic_info = checked_calloc(num_images * sizeof(struct GraphicInfo)); -#if 0 - printf("::: graphic_info: %d entries\n", num_images); -#endif - #if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) if (clipmasks_initialized) { @@ -1323,14 +1042,9 @@ static void InitGraphicInfo() int first_frame, last_frame; int src_bitmap_width, src_bitmap_height; -#if 0 - printf("::: image: '%s' [%d]\n", image->token, i); -#endif - #if 0 printf("::: image # %d: '%s' ['%s']\n", - i, image->token, - getTokenFromImageID(i)); + i, image->token, getTokenFromImageID(i)); #endif set_graphic_parameters(i, i); @@ -1363,10 +1077,6 @@ static void InitGraphicInfo() src_x, src_y); Error(ERR_RETURN, "custom graphic rejected for this element/action"); -#if 0 - Error(ERR_RETURN, "scale_up_factor == %d", scale_up_factor); -#endif - if (i == fallback_graphic) Error(ERR_EXIT, "fatal error: no fallback graphic available"); @@ -1542,7 +1252,6 @@ static void InitElementSoundInfo() } } -#if 1 /* copy sound settings to some elements that are only stored in level file in native R'n'D levels, but are used by game engine in native EM levels */ for (i = 0; copy_properties[i][0] != -1; i++) @@ -1550,7 +1259,6 @@ static void InitElementSoundInfo() for (act = 0; act < NUM_ACTIONS; act++) element_info[copy_properties[i][j]].sound[act] = element_info[copy_properties[i][0]].sound[act]; -#endif } static void InitGameModeSoundInfo() @@ -1579,7 +1287,6 @@ static void InitGameModeSoundInfo() menu.sound[i] = menu.sound[GAME_MODE_DEFAULT]; #if 0 - /* TEST ONLY */ for (i = 0; i < NUM_SPECIAL_GFX_ARGS; i++) if (menu.sound[i] != -1) printf("::: menu.sound[%d] == %d\n", i, menu.sound[i]); @@ -1610,10 +1317,6 @@ static void set_sound_parameters(int sound, char **parameter_raw) static void InitSoundInfo() { -#if 0 - struct PropertyMapping *property_mapping = getSoundListPropertyMapping(); - int num_property_mappings = getSoundListPropertyMappingSize(); -#endif int *sound_effect_properties; int num_sounds = getSoundListSize(); int i, j; @@ -1657,11 +1360,6 @@ static void InitSoundInfo() } } -#if 0 - if (strcmp(sound->token, "custom_42") == 0) - printf("::: '%s' -> %d\n", sound->token, sound_info[i].loop); -#endif - /* associate elements and some selected sound actions */ for (j = 0; j < MAX_NUM_ELEMENTS; j++) @@ -1686,77 +1384,6 @@ static void InitSoundInfo() } free(sound_effect_properties); - -#if 0 - /* !!! MOVED TO "InitElementSoundInfo()" !!! */ - /* !!! everything defined here gets overwritten there !!! */ - - /* copy sound settings to some elements that are only stored in level file - in native R'n'D levels, but are used by game engine in native EM levels */ - for (i = 0; i < NUM_ACTIONS; i++) - for (j = 0; copy_properties[j][0] != -1; j++) - for (k = 1; k <= 4; k++) - element_info[copy_properties[j][k]].sound[i] = - element_info[copy_properties[j][0]].sound[i]; - - printf("::: bug -> %d\n", element_info[EL_BUG].sound[ACTION_MOVING]); - printf("::: bug_r -> %d\n", element_info[EL_BUG_RIGHT].sound[ACTION_MOVING]); -#endif - -#if 0 - /* !!! now handled in InitElementSoundInfo() !!! */ - /* initialize element/sound mapping from dynamic configuration */ - for (i = 0; i < num_property_mappings; i++) - { - int element = property_mapping[i].base_index; - int action = property_mapping[i].ext1_index; - int sound = property_mapping[i].artwork_index; - - if (action < 0) - action = ACTION_DEFAULT; - - printf("::: %d: %d, %d, %d ['%s']\n", - i, element, action, sound, element_info[element].token_name); - - element_info[element].sound[action] = sound; - } -#endif - -#if 0 - /* TEST ONLY */ - { - int element = EL_CUSTOM_11; - int j = 0; - - while (element_action_info[j].suffix) - { - printf("element %d, sound action '%s' == %d\n", - element, element_action_info[j].suffix, - element_info[element].sound[j]); - j++; - } - } - - PlaySoundLevelElementAction(0,0, EL_CUSTOM_11, ACTION_PUSHING); -#endif - -#if 0 - /* TEST ONLY */ - { - int element = EL_SAND; - int sound_action = ACTION_DIGGING; - int j = 0; - - while (element_action_info[j].suffix) - { - if (element_action_info[j].value == sound_action) - printf("element %d, sound action '%s' == %d\n", - element, element_action_info[j].suffix, - element_info[element].sound[sound_action]); - j++; - } - } -#endif } static void InitGameModeMusicInfo() @@ -1834,7 +1461,6 @@ static void InitGameModeMusicInfo() menu.music[i] = menu.music[GAME_MODE_DEFAULT]; #if 0 - /* TEST ONLY */ for (i = 0; i < MAX_LEVELS; i++) if (levelset.music[i] != -1) printf("::: levelset.music[%d] == %d\n", i, levelset.music[i]); @@ -2030,7 +1656,6 @@ static int get_special_property_bit(int element, int property_bit_nr) return -1; } -#if 1 void setBitfieldProperty(int *bitfield, int property_bit_nr, int element, boolean property_value) { @@ -2055,32 +1680,6 @@ boolean getBitfieldProperty(int *bitfield, int property_bit_nr, int element) return FALSE; } -#else - -void setMoveIntoAcidProperty(struct LevelInfo *level, int element, boolean set) -{ - int bit_nr = get_special_property_bit(element, EP_CAN_MOVE_INTO_ACID); - - if (bit_nr > -1) - { - level->can_move_into_acid_bits &= ~(1 << bit_nr); - - if (set) - level->can_move_into_acid_bits |= (1 << bit_nr); - } -} - -boolean getMoveIntoAcidProperty(struct LevelInfo *level, int element) -{ - int bit_nr = get_special_property_bit(element, EP_CAN_MOVE_INTO_ACID); - - if (bit_nr > -1) - return ((level->can_move_into_acid_bits & (1 << bit_nr)) != 0); - - return FALSE; -} -#endif - void InitElementPropertiesStatic() { static int ep_diggable[] = @@ -2529,11 +2128,6 @@ void InitElementPropertiesStatic() EL_PENGUIN, EL_PIG, EL_DRAGON, - -#if 0 /* USE_GRAVITY_BUGFIX_OLD */ - EL_PLAYER_IS_LEAVING, /* needed for gravity + "block last field" */ -#endif - -1 }; @@ -3690,38 +3284,6 @@ void InitElementPropertiesStatic() void InitElementPropertiesEngine(int engine_version) { -#if 0 - static int active_properties[] = - { - EP_AMOEBALIVE, - EP_AMOEBOID, - EP_PFORTE, - EP_DONT_COLLIDE_WITH, - EP_MAUER, - EP_CAN_FALL, - EP_CAN_SMASH, - EP_CAN_PASS_MAGIC_WALL, - EP_CAN_MOVE, - EP_DONT_TOUCH, - EP_DONT_RUN_INTO, - EP_GEM, - EP_EXPLODES_BY_FIRE, - EP_PUSHABLE, - EP_PLAYER, - EP_HAS_CONTENT, - EP_DIGGABLE, - EP_PASSABLE_INSIDE, - EP_OVER_PLAYER, - EP_ACTIVE_BOMB, - - EP_BELT, - EP_BELT_ACTIVE, - EP_BELT_SWITCH, - EP_WALKABLE_UNDER, - EP_EM_SLIPPERY_WALL, - }; -#endif - static int no_wall_properties[] = { EP_DIGGABLE, @@ -3753,10 +3315,6 @@ void InitElementPropertiesEngine(int engine_version) int i, j; -#if 0 - InitElementPropertiesStatic(); -#endif - /* important: after initialization in InitElementPropertiesStatic(), the elements are not again initialized to a default value; therefore all changes have to make sure that they leave the element with a defined @@ -3766,11 +3324,6 @@ void InitElementPropertiesEngine(int engine_version) /* set all special, combined or engine dependent element properties */ for (i = 0; i < MAX_NUM_ELEMENTS; i++) { -#if 0 - for (j = EP_ACCESSIBLE_OVER; j < NUM_ELEMENT_PROPERTIES; j++) - SET_PROPERTY(i, j, FALSE); -#endif - /* ---------- INACTIVE ------------------------------------------------- */ SET_PROPERTY(i, EP_INACTIVE, (i >= EL_CHAR_START && i <= EL_CHAR_END)); @@ -3825,12 +3378,6 @@ void InitElementPropertiesEngine(int engine_version) !IS_DIGGABLE(i) && !IS_COLLECTIBLE(i))); -#if 0 - /* ---------- PROTECTED ------------------------------------------------ */ - if (IS_ACCESSIBLE_INSIDE(i)) - SET_PROPERTY(i, EP_PROTECTED, TRUE); -#endif - /* ---------- DRAGONFIRE_PROOF ----------------------------------------- */ if (IS_HISTORIC_SOLID(i) || i == EL_EXPLOSION) @@ -3845,20 +3392,9 @@ void InitElementPropertiesEngine(int engine_version) else if (engine_version < VERSION_IDENT(2,2,0,0)) SET_PROPERTY(i, EP_EXPLOSION_PROOF, IS_INDESTRUCTIBLE(i)); else -#if 1 SET_PROPERTY(i, EP_EXPLOSION_PROOF, (IS_INDESTRUCTIBLE(i) && (!IS_WALKABLE(i) || IS_PROTECTED(i)))); -#else -#if 1 - SET_PROPERTY(i, EP_EXPLOSION_PROOF, (IS_INDESTRUCTIBLE(i) && - !IS_WALKABLE_OVER(i) && - !IS_WALKABLE_UNDER(i))); -#else - SET_PROPERTY(i, EP_EXPLOSION_PROOF, (IS_INDESTRUCTIBLE(i) && - IS_PROTECTED(i))); -#endif -#endif if (IS_CUSTOM_ELEMENT(i)) { @@ -3882,25 +3418,6 @@ void InitElementPropertiesEngine(int engine_version) CAN_SMASH_ENEMIES(i) || CAN_SMASH_EVERYTHING(i))); -#if 0 - /* ---------- CAN_EXPLODE ---------------------------------------------- */ - SET_PROPERTY(i, EP_CAN_EXPLODE, (CAN_EXPLODE_BY_FIRE(i) || - CAN_EXPLODE_SMASHED(i) || - CAN_EXPLODE_IMPACT(i))); -#endif - -#if 0 - /* ---------- CAN_EXPLODE_3X3 ------------------------------------------ */ -#if 0 - SET_PROPERTY(i, EP_CAN_EXPLODE_3X3, (!CAN_EXPLODE_1X1(i) && - !CAN_EXPLODE_CROSS(i))); -#else - SET_PROPERTY(i, EP_CAN_EXPLODE_3X3, (CAN_EXPLODE(i) && - !CAN_EXPLODE_1X1(i) && - !CAN_EXPLODE_CROSS(i))); -#endif -#endif - /* ---------- CAN_EXPLODE_BY_FIRE -------------------------------------- */ SET_PROPERTY(i, EP_CAN_EXPLODE_BY_FIRE, (CAN_EXPLODE(i) && EXPLODES_BY_FIRE(i))); @@ -3971,25 +3488,6 @@ void InitElementPropertiesEngine(int engine_version) #endif } -#if 0 - /* determine inactive elements (used for engine main loop optimization) */ - for (i = 0; i < MAX_NUM_ELEMENTS; i++) - { - boolean active = FALSE; - - for (j = 0; i < NUM_ELEMENT_PROPERTIES; j++) - { - if (HAS_PROPERTY(i, j)) - active = TRUE; - } - -#if 0 - if (!active) - SET_PROPERTY(i, EP_INACTIVE, TRUE); -#endif - } -#endif - /* dynamically adjust element properties according to game engine version */ { static int ep_em_slippery_wall[] = @@ -4014,7 +3512,6 @@ void InitElementPropertiesEngine(int engine_version) engine_version > VERSION_IDENT(2,0,1,0))); } -#if 1 /* set default push delay values (corrected since version 3.0.7-1) */ if (engine_version < VERSION_IDENT(3,0,7,1)) { @@ -4059,8 +3556,6 @@ void InitElementPropertiesEngine(int engine_version) SET_PROPERTY(EL_SP_SNIKSNAK, EP_DONT_COLLIDE_WITH, FALSE); SET_PROPERTY(EL_SP_ELECTRON, EP_DONT_COLLIDE_WITH, FALSE); } -#endif - #endif /* this is needed because some graphics depend on element properties */ @@ -4241,24 +3736,6 @@ void Execute_Command(char *command) while (*str_ptr != ' ' && *str_ptr != '\t' && *str_ptr != '\0') str_ptr++; } - -#if 0 - printf("level set == '%s'\n", global.autoplay_leveldir); - - if (global.autoplay_all) - printf("play all levels\n"); - else - { - printf("play the following levels:"); - - for (i = 0; i < MAX_TAPES_PER_SET; i++) - if (global.autoplay_level[i]) - printf(" %03d", i); - - printf("\n"); - } -#endif - } else if (strncmp(command, "convert ", 8) == 0) { @@ -4531,8 +4008,6 @@ void InitGfx() DrawInitText(PROGRAM_COPYRIGHT_STRING, 50, FC_RED); DrawInitText("Loading graphics:", 120, FC_GREEN); - - InitTileClipmasks(); } void InitGfxBackground() @@ -4569,9 +4044,7 @@ void InitLevelArtworkInfo() static void InitImages() { -#if 1 setLevelArtworkDir(artwork.gfx_first); -#endif #if 0 printf("::: InitImages for '%s' ['%s', '%s'] ['%s', '%s']\n", @@ -4595,10 +4068,8 @@ static void InitSound(char *identifier) if (identifier == NULL) identifier = artwork.snd_current->identifier; -#if 1 /* set artwork path to send it to the sound server process */ setLevelArtworkDir(artwork.snd_first); -#endif InitReloadCustomSounds(identifier); ReinitializeSounds(); @@ -4609,10 +4080,8 @@ static void InitMusic(char *identifier) if (identifier == NULL) identifier = artwork.mus_current->identifier; -#if 1 /* set artwork path to send it to the sound server process */ setLevelArtworkDir(artwork.mus_first); -#endif InitReloadCustomMusic(identifier); ReinitializeMusic(); @@ -4725,12 +4194,7 @@ static char *getNewArtworkIdentifier(int type) artwork_current_identifier) != 0) artwork_new_identifier = artwork_current_identifier; -#if 1 *(ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type))= artwork_current_identifier; -#else - /* newer versions of gcc do not like this anymore :-/ */ - *(&(ARTWORK_CURRENT_IDENTIFIER(artwork, type))) = artwork_current_identifier; -#endif #if 0 if (type == ARTWORK_TYPE_GRAPHICS) @@ -4783,14 +4247,6 @@ void ReloadCustomArtwork(int force_reload) InitImages(); -#if 0 - printf("... '%s'\n", - leveldir_current->graphics_set); -#endif - - FreeTileClipmasks(); - InitTileClipmasks(); - redraw_screen = TRUE; } @@ -4920,7 +4376,6 @@ void CloseAllAndExit(int exit_value) #endif FreeAllImages(); - FreeTileClipmasks(); #if defined(TARGET_SDL) if (network_server) /* terminate network server */ diff --git a/src/init.h b/src/init.h index 08f999e3..e3f88585 100644 --- a/src/init.h +++ b/src/init.h @@ -16,7 +16,6 @@ #include "main.h" -#if 1 #define setMoveIntoAcidProperty(l, e, v) \ (setBitfieldProperty(&(l)->can_move_into_acid_bits, \ EP_CAN_MOVE_INTO_ACID, e, v)) @@ -33,12 +32,6 @@ void setBitfieldProperty(int *, int, int, boolean); boolean getBitfieldProperty(int *, int, int); -#else - -void setMoveIntoAcidProperty(struct LevelInfo *, int, boolean); -boolean getMoveIntoAcidProperty(struct LevelInfo *, int); -#endif - void InitElementPropertiesStatic(void); void InitElementPropertiesEngine(int); diff --git a/src/libgame/gadgets.c b/src/libgame/gadgets.c index 5ac104c8..2f980f3c 100644 --- a/src/libgame/gadgets.c +++ b/src/libgame/gadgets.c @@ -64,21 +64,6 @@ static int getNewGadgetID() return id; } -#if 0 -void DUMP_GADGET_MAP_STATE() -{ - struct GadgetInfo *gi = gadget_list_first_entry; - - while (gi != NULL) - { - printf("-XXX-1-> '%s': %s\n", - gi->info_text, (gi->mapped ? "mapped" : "not mapped")); - - gi = gi->next; - } -} -#endif - static struct GadgetInfo *getGadgetInfoFromMousePosition(int mx, int my) { struct GadgetInfo *gi; @@ -1452,14 +1437,9 @@ boolean HandleGadgets(int mx, int my, int button) insideSelectboxLine(new_gi, mx, my)); /* if mouse button pressed outside text or selectbox gadget, deactivate it */ -#if 1 if (anyTextGadgetActive() && (gadget_pressed_off_borders || (gadget_pressed_inside_select_line && !mouse_inside_select_area))) -#else - if (anyTextGadgetActive() && - button != 0 && !motion_status && new_gi != last_gi) -#endif { struct GadgetInfo *gi = last_gi; boolean gadget_changed = (gi->event_mask & GD_EVENT_TEXT_LEAVING); @@ -1483,13 +1463,8 @@ boolean HandleGadgets(int mx, int my, int button) gi->event.type = GD_EVENT_TEXT_LEAVING; -#if 1 if (gadget_changed && !(gi->type & GD_TYPE_SELECTBOX)) gi->callback_action(gi); -#else - if (gi->event_mask & GD_EVENT_TEXT_LEAVING) - gi->callback_action(gi); -#endif last_gi = NULL; @@ -1513,19 +1488,8 @@ boolean HandleGadgets(int mx, int my, int button) /* when handling selectbox, set additional state values */ if (gadget_released_inside && (last_gi->type & GD_TYPE_SELECTBOX)) { - struct GadgetInfo *gi = last_gi; - -#if 1 - gadget_released_inside_select_line = insideSelectboxLine(gi, mx, my); - gadget_released_inside_select_area = insideSelectboxArea(gi, mx, my); -#else - gadget_released_inside_select_line = - (mx >= gi->x && mx < gi->x + gi->width && - my >= gi->y && my < gi->y + gi->height); - gadget_released_inside_select_area = - (mx >= gi->selectbox.x && mx < gi->selectbox.x + gi->selectbox.width && - my >= gi->selectbox.y && my < gi->selectbox.y + gi->selectbox.height); -#endif + gadget_released_inside_select_line = insideSelectboxLine(last_gi, mx, my); + gadget_released_inside_select_area = insideSelectboxArea(last_gi, mx, my); } else { @@ -1548,7 +1512,6 @@ boolean HandleGadgets(int mx, int my, int button) /* if mouse button released, no gadget needs to be handled anymore */ if (gadget_released) { -#if 1 if (gi->type & GD_TYPE_SELECTBOX && (mouse_released_where_pressed || !gadget_released_inside_select_area)) /* selectbox stays open */ @@ -1557,12 +1520,6 @@ boolean HandleGadgets(int mx, int my, int button) pressed_mx = 0; pressed_my = 0; } -#else - if (gi->type & GD_TYPE_SELECTBOX && - (gadget_released_inside_select_line || - gadget_released_off_borders)) /* selectbox stays open */ - gi->selectbox.stay_open = TRUE; -#endif else if (!(gi->type & GD_TYPE_TEXT_INPUT || gi->type & GD_TYPE_TEXT_AREA)) /* text input stays open */ last_gi = NULL; @@ -1847,21 +1804,12 @@ boolean HandleGadgets(int mx, int my, int button) if (gi->type & GD_TYPE_SELECTBOX) { -#if 1 if (mouse_released_where_pressed || !gadget_released_inside_select_area) /* selectbox stays open */ { deactivate_gadget = FALSE; gadget_changed = FALSE; } -#else - if (gadget_released_inside_select_line || - gadget_released_off_borders) /* selectbox stays open */ - { - deactivate_gadget = FALSE; - gadget_changed = FALSE; - } -#endif else if (gi->selectbox.index != gi->selectbox.current_index) gi->selectbox.index = gi->selectbox.current_index; else @@ -1876,15 +1824,10 @@ boolean HandleGadgets(int mx, int my, int button) gi->state = GD_BUTTON_UNPRESSED; gi->event.type = GD_EVENT_RELEASED; -#if 1 if ((gi->event_mask & GD_EVENT_RELEASED) && gadget_changed) { gi->callback_action(gi); } -#else - if ((gi->event_mask & GD_EVENT_RELEASED) && deactivate_gadget) - gi->callback_action(gi); -#endif } if (gadget_released_off_borders) @@ -1968,13 +1911,8 @@ boolean HandleGadgetsKeyInput(Key key) last_gi = NULL; } -#if 1 if (gadget_changed) gi->callback_action(gi); -#else - if (gi->event_mask & GD_EVENT_TEXT_RETURN) - gi->callback_action(gi); -#endif } else if (gi->type & GD_TYPE_TEXT_INPUT) /* only valid for text input */ { diff --git a/src/libgame/image.c b/src/libgame/image.c index 09ec64f6..719c662a 100644 --- a/src/libgame/image.c +++ b/src/libgame/image.c @@ -31,13 +31,6 @@ Image *newImage(unsigned int width, unsigned int height, unsigned int depth) unsigned int bytes_per_pixel = (depth + 7) / 8; int i; -#if 0 - if (depth > 8) - Error(ERR_EXIT, "images with more than 256 colors are not supported"); - - depth = 8; -#endif - image = checked_calloc(sizeof(Image)); image->data = checked_calloc(width * height * bytes_per_pixel); image->width = width; @@ -836,7 +829,7 @@ static void *Load_PCX(char *filename) ImageInfo *img_info; #if 0 - printf("loading PCX file '%s'\n", filename); + printf("::: loading PCX file '%s'\n", filename); #endif img_info = checked_calloc(sizeof(ImageInfo)); @@ -1036,7 +1029,7 @@ void InitImageList(struct ConfigInfo *config_list, int num_file_list_entries, void ReloadCustomImages() { #if 0 - printf("DEBUG: reloading images '%s' ...\n", artwork.gfx_current_identifier); + printf("::: reloading images '%s' ...\n", artwork.gfx_current_identifier); #endif LoadArtworkConfig(image_info); @@ -1054,16 +1047,6 @@ void CreateImageWithSmallImages(int pos, int zoom_factor) img_info->contains_small_images = TRUE; img_info->scaled_up = TRUE; - -#if 0 - if (zoom_factor) - printf("CreateImageWithSmallImages: '%s' zoomed by factor %d\n", - img_info->source_filename, zoom_factor); -#endif - -#if 0 - printf("CreateImageWithSmallImages: '%s' done\n", img_info->source_filename); -#endif } void FreeAllImages() diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 3881d202..6f6d68b3 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -206,14 +206,6 @@ static void sleep_milliseconds(unsigned long milliseconds_delay) { boolean do_busy_waiting = (milliseconds_delay < 5 ? TRUE : FALSE); -#if 0 -#if defined(PLATFORM_MSDOS) - /* don't use select() to perform waiting operations under DOS - environment; always use a busy loop for waiting instead */ - do_busy_waiting = TRUE; -#endif -#endif - if (do_busy_waiting) { /* we want to wait only a few ms -- if we assume that we have a @@ -741,10 +733,8 @@ void GetOptions(char *argv[], void (*print_usage_function)(void)) if (option_arg == next_option) options_left++; -#if 1 /* when doing batch processing, always enable verbose mode (warnings) */ options.verbose = TRUE; -#endif } else if (*option == '-') { @@ -1484,10 +1474,6 @@ void addNodeToList(ListNode **node_first, char *key, void *content) { ListNode *node_new = newListNode(); -#if 0 - printf("LIST: adding node with key '%s'\n", key); -#endif - node_new->key = getStringCopy(key); node_new->content = content; node_new->next = *node_first; @@ -1500,17 +1486,8 @@ void deleteNodeFromList(ListNode **node_first, char *key, if (node_first == NULL || *node_first == NULL) return; -#if 0 - printf("[CHECKING LIST KEY '%s' == '%s']\n", - (*node_first)->key, key); -#endif - if (strcmp((*node_first)->key, key) == 0) { -#if 0 - printf("[DELETING LIST ENTRY]\n"); -#endif - free((*node_first)->key); if (destructor_function) destructor_function((*node_first)->content); @@ -1560,10 +1537,6 @@ boolean fileExists(char *filename) if (filename == NULL) return FALSE; -#if 0 - printf("checking file '%s'\n", filename); -#endif - return (access(filename, F_OK) == 0); } @@ -1890,11 +1863,6 @@ static boolean token_suffix_match(char *token, char *suffix, int start_pos) int len_token = strlen(token); int len_suffix = strlen(suffix); -#if 0 - if (IS_PARENT_PROCESS()) - printf(":::::::::: check '%s' for '%s' ::::::::::\n", token, suffix); -#endif - if (start_pos < 0) /* compare suffix from end of string */ start_pos += len_token; @@ -1937,16 +1905,6 @@ static void read_token_parameters(SetupFileHash *setup_file_hash, /* mark config file token as well known from default config */ setHashEntry(setup_file_hash, file_list_entry->token, known_token_value); } -#if 0 - else - { - if (strcmp(file_list_entry->filename, - file_list_entry->default_filename) != 0) - printf("___ resetting '%s' to default\n", file_list_entry->token); - - setString(&file_list_entry->filename, file_list_entry->default_filename); - } -#endif /* check for config tokens that can be build by base token and suffixes */ for (i = 0; suffix_list[i].token != NULL; i++) @@ -1976,11 +1934,6 @@ static void add_dynamic_file_list_entry(struct FileInfo **list, struct FileInfo *new_list_entry; int parameter_array_size = num_suffix_list_entries * sizeof(char *); -#if 0 - if (IS_PARENT_PROCESS()) - printf("===> found dynamic definition '%s'\n", token); -#endif - (*num_list_entries)++; *list = checked_realloc(*list, *num_list_entries * sizeof(struct FileInfo)); new_list_entry = &(*list)[*num_list_entries - 1]; @@ -2042,10 +1995,6 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, if (filename == NULL) return; -#if 0 - printf("::: LoadArtworkConfigFromFilename: '%s'\n", filename); -#endif - if ((setup_file_hash = loadSetupFileHash(filename)) == NULL) return; @@ -2064,7 +2013,6 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, /* at this point, we do not need the setup file hash anymore -- free it */ freeSetupFileHash(setup_file_hash); -#if 1 /* map deprecated to current tokens (using prefix match and replace) */ BEGIN_HASH_ITERATION(valid_file_hash, itr) { @@ -2085,7 +2033,6 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, } } END_HASH_ITERATION(valid_file_hash, itr) -#endif /* read parameters for all known config file tokens */ for (i = 0; i < num_file_list_entries; i++) @@ -2143,16 +2090,6 @@ static void LoadArtworkConfigFromFilename(struct ArtworkListInfo *artwork_info, parameter_suffix_found = TRUE; } -#if 0 - if (IS_PARENT_PROCESS()) - { - if (parameter_suffix_found) - printf("---> skipping token '%s' (parameter token)\n", token); - else - printf("---> examining token '%s': search prefix ...\n", token); - } -#endif - if (parameter_suffix_found) continue; @@ -2491,25 +2428,14 @@ static void deleteArtworkListEntry(struct ArtworkListInfo *artwork_info, { char *filename = (*listnode)->source_filename; -#if 0 - printf("[decrementing reference counter of artwork '%s']\n", filename); -#endif - if (--(*listnode)->num_references <= 0) - { -#if 0 - printf("[deleting artwork '%s']\n", filename); -#endif - deleteNodeFromList(&artwork_info->content_list, filename, artwork_info->free_artwork); - } *listnode = NULL; } } -#if 1 static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, struct ListNodeInfo **listnode, struct FileInfo *file_list_entry) @@ -2525,12 +2451,6 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, char *basename = file_list_entry->filename; char *filename = getCustomArtworkFilename(basename, artwork_info->type); -#if 0 - if (strcmp(file_list_entry->token, "background.DOOR") == 0) - printf("::: replaceArtworkListEntry: '%s' => '%s'\n", - basename, filename); -#endif - if (filename == NULL) { Error(ERR_WARN, "cannot find artwork file '%s'", basename); @@ -2591,110 +2511,6 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, return; } -#if 0 - if (strcmp(file_list_entry->token, "background.DOOR") == 0) - printf("::: replaceArtworkListEntry: LOAD IT'\n"); -#endif - -#if 0 - printf("::: %s: '%s'\n", init_text[artwork_info->type], basename); -#endif - - DrawInitText(init_text[artwork_info->type], 120, FC_GREEN); - DrawInitText(basename, 150, FC_YELLOW); - - if ((*listnode = artwork_info->load_artwork(filename)) != NULL) - { -#if 0 - printf("[adding new artwork '%s']\n", filename); -#endif - - (*listnode)->num_references = 1; - addNodeToList(&artwork_info->content_list, (*listnode)->source_filename, - *listnode); - } - else - { - int error_mode = ERR_WARN; - -#if 1 - /* we can get away without sounds and music, but not without graphics */ - if (artwork_info->type == ARTWORK_TYPE_GRAPHICS) - error_mode = ERR_EXIT; -#endif - - Error(error_mode, "cannot load artwork file '%s'", basename); - return; - } -} - -#else - -static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, - struct ListNodeInfo **listnode, - char *basename) -{ - char *init_text[] = - { - "Loading graphics:", - "Loading sounds:", - "Loading music:" - }; - - ListNode *node; - char *filename = getCustomArtworkFilename(basename, artwork_info->type); - - if (filename == NULL) - { - int error_mode = ERR_WARN; - -#if 1 - /* !!! NEW ARTWORK FALLBACK CODE !!! NEARLY UNTESTED !!! */ - /* before failing, try fallback to default artwork */ -#else - /* we can get away without sounds and music, but not without graphics */ - if (*listnode == NULL && artwork_info->type == ARTWORK_TYPE_GRAPHICS) - error_mode = ERR_EXIT; -#endif - - Error(error_mode, "cannot find artwork file '%s'", basename); - return; - } - - /* check if the old and the new artwork file are the same */ - if (*listnode && strcmp((*listnode)->source_filename, filename) == 0) - { - /* The old and new artwork are the same (have the same filename and path). - This usually means that this artwork does not exist in this artwork set - and a fallback to the existing artwork is done. */ - -#if 0 - printf("[artwork '%s' already exists (same list entry)]\n", filename); -#endif - - return; - } - - /* delete existing artwork file entry */ - deleteArtworkListEntry(artwork_info, listnode); - - /* check if the new artwork file already exists in the list of artworks */ - if ((node = getNodeFromKey(artwork_info->content_list, filename)) != NULL) - { -#if 0 - printf("[artwork '%s' already exists (other list entry)]\n", filename); -#endif - - *listnode = (struct ListNodeInfo *)node->content; - (*listnode)->num_references++; - - return; - } - -#if 0 - printf("::: %s: '%s'\n", init_text[artwork_info->type], basename); -#endif - DrawInitText(init_text[artwork_info->type], 120, FC_GREEN); DrawInitText(basename, 150, FC_YELLOW); @@ -2712,19 +2528,15 @@ static void replaceArtworkListEntry(struct ArtworkListInfo *artwork_info, { int error_mode = ERR_WARN; -#if 1 /* we can get away without sounds and music, but not without graphics */ if (artwork_info->type == ARTWORK_TYPE_GRAPHICS) error_mode = ERR_EXIT; -#endif Error(error_mode, "cannot load artwork file '%s'", basename); return; } } -#endif -#if 1 static void LoadCustomArtwork(struct ArtworkListInfo *artwork_info, struct ListNodeInfo **listnode, struct FileInfo *file_list_entry) @@ -2733,12 +2545,6 @@ static void LoadCustomArtwork(struct ArtworkListInfo *artwork_info, printf("GOT CUSTOM ARTWORK FILE '%s'\n", filename); #endif -#if 0 - if (strcmp(file_list_entry->token, "background.DOOR") == 0) - printf("::: -> '%s' -> '%s'\n", - file_list_entry->token, file_list_entry->filename); -#endif - if (strcmp(file_list_entry->filename, UNDEFINED_FILENAME) == 0) { deleteArtworkListEntry(artwork_info, listnode); @@ -2748,86 +2554,6 @@ static void LoadCustomArtwork(struct ArtworkListInfo *artwork_info, replaceArtworkListEntry(artwork_info, listnode, file_list_entry); } -#else - -static void LoadCustomArtwork(struct ArtworkListInfo *artwork_info, - struct ListNodeInfo **listnode, - char *basename) -{ -#if 0 - printf("GOT CUSTOM ARTWORK FILE '%s'\n", filename); -#endif - - if (strcmp(basename, UNDEFINED_FILENAME) == 0) - { - deleteArtworkListEntry(artwork_info, listnode); - return; - } - - replaceArtworkListEntry(artwork_info, listnode, basename); -} -#endif - -#if 1 -static void LoadArtworkToList(struct ArtworkListInfo *artwork_info, - struct ListNodeInfo **listnode, - struct FileInfo *file_list_entry) -{ -#if 0 - if (artwork_info->artwork_list == NULL || - list_pos >= artwork_info->num_file_list_entries) - return; -#endif - -#if 0 - printf("loading artwork '%s' ... [%d]\n", - file_list_entry->filename, getNumNodes(artwork_info->content_list)); -#endif - -#if 1 - LoadCustomArtwork(artwork_info, listnode, file_list_entry); -#else - LoadCustomArtwork(artwork_info, &artwork_info->artwork_list[list_pos], - basename); -#endif - -#if 0 - printf("loading artwork '%s' done [%d]\n", - basename, getNumNodes(artwork_info->content_list)); -#endif -} - -#else - -static void LoadArtworkToList(struct ArtworkListInfo *artwork_info, - struct ListNodeInfo **listnode, - char *basename, int list_pos) -{ -#if 0 - if (artwork_info->artwork_list == NULL || - list_pos >= artwork_info->num_file_list_entries) - return; -#endif - -#if 0 - printf("loading artwork '%s' ... [%d]\n", - basename, getNumNodes(artwork_info->content_list)); -#endif - -#if 1 - LoadCustomArtwork(artwork_info, listnode, basename); -#else - LoadCustomArtwork(artwork_info, &artwork_info->artwork_list[list_pos], - basename); -#endif - -#if 0 - printf("loading artwork '%s' done [%d]\n", - basename, getNumNodes(artwork_info->content_list)); -#endif -} -#endif - void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info) { struct FileInfo *file_list = artwork_info->file_list; @@ -2837,86 +2563,13 @@ void ReloadCustomArtworkList(struct ArtworkListInfo *artwork_info) artwork_info->num_dynamic_file_list_entries; int i; -#if 0 - printf("DEBUG: reloading %d static artwork files ...\n", - num_file_list_entries); -#endif - for (i = 0; i < num_file_list_entries; i++) - { -#if 0 - if (strcmp(file_list[i].token, "background.DOOR") == 0) - printf("::: '%s' -> '%s'\n", file_list[i].token, file_list[i].filename); -#endif - -#if 1 - LoadArtworkToList(artwork_info, &artwork_info->artwork_list[i], + LoadCustomArtwork(artwork_info, &artwork_info->artwork_list[i], &file_list[i]); -#else - LoadArtworkToList(artwork_info, &artwork_info->artwork_list[i], - file_list[i].filename, i); -#endif - -#if 0 - if (strcmp(file_list[i].token, "background.DOOR") == 0) - { - Bitmap *bitmap = getBitmapFromImageID(i); - - printf("::: BITMAP: %08lx\n", bitmap); - -#if 0 - BlitBitmap(bitmap, window, 0, 0, 100, 280, 0, 0); -#endif - } -#endif - -#if 0 - /* !!! NEW ARTWORK FALLBACK CODE !!! NEARLY UNTESTED !!! */ - if (artwork_info->artwork_list[i] == NULL && - strcmp(file_list[i].filename, UNDEFINED_FILENAME) != 0 && - strcmp(file_list[i].default_filename, file_list[i].filename) != 0 && - strcmp(file_list[i].default_filename, UNDEFINED_FILENAME) != 0) - { - Error(ERR_WARN, "trying default artwork file '%s'", - file_list[i].default_filename); - - LoadArtworkToList(artwork_info, &artwork_info->artwork_list[i], - file_list[i].default_filename, i); - - /* even the fallback to default artwork was not successful -- fail now */ - if (artwork_info->artwork_list[i] == NULL && - artwork_info->type == ARTWORK_TYPE_GRAPHICS) - Error(ERR_EXIT, "cannot find artwork file '%s' or default file '%s'", - file_list[i].filename, file_list[i].default_filename); - - file_list[i].fallback_to_default = TRUE; - } -#endif - } - -#if 0 - printf("DEBUG: reloading %d dynamic artwork files ...\n", - num_dynamic_file_list_entries); -#endif for (i = 0; i < num_dynamic_file_list_entries; i++) - { -#if 1 - LoadArtworkToList(artwork_info, &artwork_info->dynamic_artwork_list[i], + LoadCustomArtwork(artwork_info, &artwork_info->dynamic_artwork_list[i], &dynamic_file_list[i]); -#else - LoadArtworkToList(artwork_info, &artwork_info->dynamic_artwork_list[i], - dynamic_file_list[i].filename, i); -#endif - -#if 0 - printf("::: '%s', '0x%08x'\n", - dynamic_file_list[i].filename, - dynamic_file_list[i].default_filename); -#endif - - /* dynamic artwork does not have default filename! */ - } #if 0 dumpList(artwork_info->content_list); @@ -2945,21 +2598,11 @@ void FreeCustomArtworkLists(struct ArtworkListInfo *artwork_info) if (artwork_info == NULL) return; -#if 0 - printf("%s: FREEING ARTWORK ...\n", - IS_CHILD_PROCESS() ? "CHILD" : "PARENT"); -#endif - FreeCustomArtworkList(artwork_info, &artwork_info->artwork_list, &artwork_info->num_file_list_entries); FreeCustomArtworkList(artwork_info, &artwork_info->dynamic_artwork_list, &artwork_info->num_dynamic_file_list_entries); - -#if 0 - printf("%s: FREEING ARTWORK -- DONE\n", - IS_CHILD_PROCESS() ? "CHILD" : "PARENT"); -#endif } diff --git a/src/libgame/pcx.c b/src/libgame/pcx.c index 5fdf6f3e..8bf4d6c1 100644 --- a/src/libgame/pcx.c +++ b/src/libgame/pcx.c @@ -53,52 +53,6 @@ struct PCX_Header /* global PCX error value */ int errno_pcx = PCX_Success; -#if 0 -static byte *PCX_ReadBitmap(Image *image, byte *buffer_ptr, byte *buffer_last) -{ - /* Run Length Encoding: If the two high bits are set, - * then the low 6 bits contain a repeat count, and the byte to - * repeat is the next byte in the file. If the two high bits are - * not set, then this is the byte to write. - */ - - unsigned int bytes_per_pixel = (image->depth + 7) / 8; - register byte *bitmap_ptr, *bitmap_last; - register byte value, count; - - bitmap_ptr = image->data; - bitmap_last = bitmap_ptr + (image->width * image->height * bytes_per_pixel); - - while (bitmap_ptr < bitmap_last && buffer_ptr < buffer_last) - { - value = *buffer_ptr++; - - if ((value & 0xc0) == 0xc0) /* this is a repeat count byte */ - { - count = value & 0x3f; /* extract repeat count from byte */ - value = *buffer_ptr++; /* next byte is value to repeat */ - - for (; count && bitmap_ptr < bitmap_last; count--) - *bitmap_ptr++ = value; - - if (count) /* repeat count spans end of bitmap */ - return NULL; - } - else - *bitmap_ptr++ = value; - - image->rgb.color_used[value] = TRUE; - } - - /* check if end of buffer was reached before end of bitmap */ - if (bitmap_ptr < bitmap_last) - return NULL; - - /* return current buffer position for next decoding function */ - return buffer_ptr; -} -#endif - static boolean PCX_ReadBitmap(FILE *file, struct PCX_Header *pcx, Image *image) { int width = image->width; @@ -203,35 +157,6 @@ static boolean PCX_ReadBitmap(FILE *file, struct PCX_Header *pcx, Image *image) return TRUE; } -#if 0 -static byte *PCX_ReadColormap(Image *image,byte *buffer_ptr, byte *buffer_last) -{ - int i, magic; - - /* read colormap magic byte */ - magic = *buffer_ptr++; - - /* check magic colormap header byte */ - if (magic != PCX_256COLORS_MAGIC) - return NULL; - - /* check if enough bytes left for a complete colormap */ - if (buffer_ptr + PCX_COLORMAP_SIZE > buffer_last) - return NULL; - - /* read 256 colors from PCX colormap */ - for (i = 0; i < PCX_MAXCOLORS; i++) - { - image->rgb.red[i] = *buffer_ptr++ << 8; - image->rgb.green[i] = *buffer_ptr++ << 8; - image->rgb.blue[i] = *buffer_ptr++ << 8; - } - - /* return current buffer position for next decoding function */ - return buffer_ptr; -} -#endif - static boolean PCX_ReadColormap(FILE *file,struct PCX_Header *pcx,Image *image) { int pcx_depth = pcx->bits_per_pixel * pcx->color_planes; diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index b127c784..e27c822e 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -248,11 +248,6 @@ inline void SDLFillRectangle(Bitmap *dst_bitmap, int x, int y, { Bitmap *real_dst_bitmap = (dst_bitmap == window ? backbuffer : dst_bitmap); SDL_Rect rect; -#if 0 - unsigned int color_r = (color >> 16) & 0xff; - unsigned int color_g = (color >> 8) & 0xff; - unsigned int color_b = (color >> 0) & 0xff; -#endif #ifdef FULLSCREEN_BUG if (dst_bitmap == backbuffer || dst_bitmap == window) @@ -267,13 +262,7 @@ inline void SDLFillRectangle(Bitmap *dst_bitmap, int x, int y, rect.w = width; rect.h = height; -#if 1 SDL_FillRect(real_dst_bitmap->surface, &rect, color); -#else - SDL_FillRect(real_dst_bitmap->surface, &rect, - SDL_MapRGB(real_dst_bitmap->surface->format, - color_r, color_g, color_b)); -#endif if (dst_bitmap == window) SDL_UpdateRect(backbuffer->surface, x, y, width, height); @@ -284,11 +273,6 @@ inline void SDLDrawSimpleLine(Bitmap *dst_bitmap, int from_x, int from_y, { SDL_Surface *surface = dst_bitmap->surface; SDL_Rect rect; -#if 0 - unsigned int color_r = (color >> 16) & 0xff; - unsigned int color_g = (color >> 8) & 0xff; - unsigned int color_b = (color >> 0) & 0xff; -#endif if (from_x > to_x) swap_numbers(&from_x, &to_x); @@ -309,12 +293,7 @@ inline void SDLDrawSimpleLine(Bitmap *dst_bitmap, int from_x, int from_y, } #endif -#if 1 SDL_FillRect(surface, &rect, color); -#else - SDL_FillRect(surface, &rect, - SDL_MapRGB(surface->format, color_r, color_g, color_b)); -#endif } inline void SDLDrawLine(Bitmap *dst_bitmap, int from_x, int from_y, diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 7c4fc880..d78e3c70 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -938,13 +938,8 @@ void dumpTreeInfo(TreeInfo *node, int depth) for (i = 0; i < (depth + 1) * 3; i++) printf(" "); -#if 1 printf("subdir == '%s' ['%s', '%s'] [%d])\n", node->subdir, node->fullpath, node->basepath, node->in_user_dir); -#else - printf("subdir == '%s' (%s) [%s] (%d)\n", - node->subdir, node->name, node->identifier, node->sort_priority); -#endif if (node->node_group != NULL) dumpTreeInfo(node->node_group, depth + 1); @@ -1396,7 +1391,6 @@ char *removeHashEntry(SetupFileHash *hash, char *token) } #if 0 -#ifdef DEBUG static void printSetupFileHash(SetupFileHash *hash) { BEGIN_HASH_ITERATION(hash, itr) @@ -1407,7 +1401,6 @@ static void printSetupFileHash(SetupFileHash *hash) END_HASH_ITERATION(hash, itr) } #endif -#endif static void *loadSetupFileData(char *filename, boolean use_hash) { @@ -1698,7 +1691,6 @@ static void setTreeInfoToDefaultsFromParent(TreeInfo *ldi, TreeInfo *parent) return; } -#if 1 /* copy all values from the parent structure */ ldi->type = parent->type; @@ -1751,47 +1743,6 @@ static void setTreeInfoToDefaultsFromParent(TreeInfo *ldi, TreeInfo *parent) ldi->handicap = TRUE; ldi->skip_levels = FALSE; } - -#else - - /* first copy all values from the parent structure ... */ - *ldi = *parent; - - /* ... then set all fields to default that cannot be inherited from parent. - This is especially important for all those fields that can be set from - the 'levelinfo.conf' config file, because the function 'setSetupInfo()' - calls 'free()' for all already set token values which requires that no - other structure's pointer may point to them! - */ - - ldi->subdir = NULL; - ldi->fullpath = NULL; - ldi->basepath = NULL; - ldi->identifier = NULL; - ldi->name = getStringCopy(ANONYMOUS_NAME); - ldi->name_sorting = NULL; - ldi->author = getStringCopy(parent->author); - - ldi->imported_from = getStringCopy(parent->imported_from); - ldi->imported_by = getStringCopy(parent->imported_by); - ldi->class_desc = getStringCopy(parent->class_desc); - - ldi->graphics_set = NULL; - ldi->sounds_set = NULL; - ldi->music_set = NULL; - ldi->graphics_path = NULL; - ldi->sounds_path = NULL; - ldi->music_path = NULL; - - ldi->level_group = FALSE; - ldi->parent_link = FALSE; - - ldi->node_top = parent->node_top; - ldi->node_parent = parent; - ldi->node_group = NULL; - ldi->next = NULL; - -#endif } static void freeTreeInfo(TreeInfo *ldi) @@ -1915,7 +1866,6 @@ static void createParentTreeInfoNode(TreeInfo *node_parent) ti_new->node_parent = node_parent; ti_new->parent_link = TRUE; -#if 1 setString(&ti_new->identifier, node_parent->identifier); setString(&ti_new->name, ".. (parent directory)"); setString(&ti_new->name_sorting, ti_new->name); @@ -1927,19 +1877,6 @@ static void createParentTreeInfoNode(TreeInfo *node_parent) ti_new->latest_engine = node_parent->latest_engine; setString(&ti_new->class_desc, getLevelClassDescription(ti_new)); -#else - ti_new->identifier = getStringCopy(node_parent->identifier); - ti_new->name = ".. (parent directory)"; - ti_new->name_sorting = getStringCopy(ti_new->name); - - ti_new->subdir = ".."; - ti_new->fullpath = getStringCopy(node_parent->fullpath); - - ti_new->sort_priority = node_parent->sort_priority; - ti_new->latest_engine = node_parent->latest_engine; - - ti_new->class_desc = getLevelClassDescription(ti_new); -#endif pushTreeInfo(&node_parent->node_group, ti_new); } @@ -1997,16 +1934,8 @@ static boolean LoadLevelInfoFromLevelConf(TreeInfo **node_first, getHashEntry(setup_file_hash, levelinfo_tokens[i].text)); *leveldir_new = ldi; -#if 1 if (strcmp(leveldir_new->name, ANONYMOUS_NAME) == 0) setString(&leveldir_new->name, leveldir_new->subdir); -#else - if (strcmp(leveldir_new->name, ANONYMOUS_NAME) == 0) - { - free(leveldir_new->name); - leveldir_new->name = getStringCopy(leveldir_new->subdir); - } -#endif DrawInitText(leveldir_new->name, 150, FC_YELLOW); @@ -2033,31 +1962,21 @@ static boolean LoadLevelInfoFromLevelConf(TreeInfo **node_first, leveldir_new->last_level = leveldir_new->first_level + leveldir_new->levels - 1; -#if 1 leveldir_new->in_user_dir = (strcmp(leveldir_new->basepath, options.level_directory) != 0); -#else - leveldir_new->in_user_dir = - (leveldir_new->basepath == options.level_directory ? FALSE : TRUE); -#endif -#if 1 /* adjust sort priority if user's private level directory was detected */ if (leveldir_new->sort_priority == LEVELCLASS_UNDEFINED && leveldir_new->in_user_dir && strcmp(leveldir_new->subdir, getLoginName()) == 0) leveldir_new->sort_priority = LEVELCLASS_PRIVATE_START; -#endif leveldir_new->user_defined = (leveldir_new->in_user_dir && IS_LEVELCLASS_PRIVATE(leveldir_new)); leveldir_new->color = LEVELCOLOR(leveldir_new); -#if 1 + setString(&leveldir_new->class_desc, getLevelClassDescription(leveldir_new)); -#else - leveldir_new->class_desc = getLevelClassDescription(leveldir_new); -#endif leveldir_new->handicap_level = /* set handicap to default value */ (leveldir_new->user_defined || !leveldir_new->handicap ? @@ -2237,16 +2156,8 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, getHashEntry(setup_file_hash, levelinfo_tokens[i].text)); *artwork_new = ldi; -#if 1 if (strcmp(artwork_new->name, ANONYMOUS_NAME) == 0) setString(&artwork_new->name, artwork_new->subdir); -#else - if (strcmp(artwork_new->name, ANONYMOUS_NAME) == 0) - { - free(artwork_new->name); - artwork_new->name = getStringCopy(artwork_new->subdir); - } -#endif #if 0 DrawInitText(artwork_new->name, 150, FC_YELLOW); @@ -2270,86 +2181,42 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, artwork_new->fullpath = getPath2(node_parent->fullpath, directory_name); } -#if 1 artwork_new->in_user_dir = (strcmp(artwork_new->basepath, OPTIONS_ARTWORK_DIRECTORY(type)) != 0); -#else - artwork_new->in_user_dir = - (artwork_new->basepath == OPTIONS_ARTWORK_DIRECTORY(type) ? FALSE : TRUE); -#endif /* (may use ".sort_priority" from "setup_file_hash" above) */ artwork_new->color = ARTWORKCOLOR(artwork_new); -#if 1 + setString(&artwork_new->class_desc, getLevelClassDescription(artwork_new)); -#else - artwork_new->class_desc = getLevelClassDescription(artwork_new); -#endif if (setup_file_hash == NULL) /* (after determining ".user_defined") */ { -#if 0 - if (artwork_new->name != NULL) - { - free(artwork_new->name); - artwork_new->name = NULL; - } -#endif - -#if 0 - if (artwork_new->identifier != NULL) - { - free(artwork_new->identifier); - artwork_new->identifier = NULL; - } -#endif - if (strcmp(artwork_new->subdir, ".") == 0) { if (artwork_new->user_defined) { -#if 1 setString(&artwork_new->identifier, "private"); -#else - artwork_new->identifier = getStringCopy("private"); -#endif artwork_new->sort_priority = ARTWORKCLASS_PRIVATE; } else { -#if 1 setString(&artwork_new->identifier, "classic"); -#else - artwork_new->identifier = getStringCopy("classic"); -#endif artwork_new->sort_priority = ARTWORKCLASS_CLASSICS; } /* set to new values after changing ".sort_priority" */ artwork_new->color = ARTWORKCOLOR(artwork_new); -#if 1 + setString(&artwork_new->class_desc, getLevelClassDescription(artwork_new)); -#else - artwork_new->class_desc = getLevelClassDescription(artwork_new); -#endif } else { -#if 1 setString(&artwork_new->identifier, artwork_new->subdir); -#else - artwork_new->identifier = getStringCopy(artwork_new->subdir); -#endif } -#if 1 setString(&artwork_new->name, artwork_new->identifier); setString(&artwork_new->name_sorting, artwork_new->name); -#else - artwork_new->name = getStringCopy(artwork_new->identifier); - artwork_new->name_sorting = getStringCopy(artwork_new->name); -#endif } DrawInitText(artwork_new->name, 150, FC_YELLOW); @@ -2427,7 +2294,6 @@ static TreeInfo *getDummyArtworkInfo(int type) setTreeInfoToDefaults(artwork_new, type); -#if 1 setString(&artwork_new->subdir, UNDEFINED_FILENAME); setString(&artwork_new->fullpath, UNDEFINED_FILENAME); setString(&artwork_new->basepath, UNDEFINED_FILENAME); @@ -2435,17 +2301,6 @@ static TreeInfo *getDummyArtworkInfo(int type) setString(&artwork_new->identifier, UNDEFINED_FILENAME); setString(&artwork_new->name, UNDEFINED_FILENAME); setString(&artwork_new->name_sorting, UNDEFINED_FILENAME); -#else - artwork_new->subdir = getStringCopy(UNDEFINED_FILENAME); - artwork_new->fullpath = getStringCopy(UNDEFINED_FILENAME); - artwork_new->basepath = getStringCopy(UNDEFINED_FILENAME); - - checked_free(artwork_new->name); - - artwork_new->identifier = getStringCopy(UNDEFINED_FILENAME); - artwork_new->name = getStringCopy(UNDEFINED_FILENAME); - artwork_new->name_sorting = getStringCopy(UNDEFINED_FILENAME); -#endif return artwork_new; } @@ -2538,12 +2393,6 @@ void LoadArtworkInfoFromLevelInfo(ArtworkDirTree **artwork_node, char *path = getPath2(getLevelDirFromTreeInfo(level_node), ARTWORK_DIRECTORY((*artwork_node)->type)); -#if 0 - if (!level_node->parent_link) - printf("CHECKING '%s' ['%s', '%s'] ...\n", path, - level_node->subdir, level_node->name); -#endif - if (!level_node->parent_link) { TreeInfo *topnode_last = *artwork_node; @@ -2650,29 +2499,10 @@ static void SaveUserLevelInfo() /* always start with reliable default values */ setTreeInfoToDefaults(level_info, TREE_TYPE_LEVEL_DIR); -#if 1 setString(&level_info->name, getLoginName()); setString(&level_info->author, getRealName()); level_info->levels = 100; level_info->first_level = 1; -#if 0 - level_info->sort_priority = LEVELCLASS_PRIVATE_START; - level_info->readonly = FALSE; - setString(&level_info->graphics_set, GFX_CLASSIC_SUBDIR); - setString(&level_info->sounds_set, SND_CLASSIC_SUBDIR); - setString(&level_info->music_set, MUS_CLASSIC_SUBDIR); -#endif -#else - ldi.name = getStringCopy(getLoginName()); - ldi.author = getStringCopy(getRealName()); - ldi.levels = 100; - ldi.first_level = 1; - ldi.sort_priority = LEVELCLASS_PRIVATE_START; - ldi.readonly = FALSE; - ldi.graphics_set = getStringCopy(GFX_CLASSIC_SUBDIR); - ldi.sounds_set = getStringCopy(SND_CLASSIC_SUBDIR); - ldi.music_set = getStringCopy(MUS_CLASSIC_SUBDIR); -#endif token_value_position = TOKEN_VALUE_POSITION_SHORT; @@ -2682,7 +2512,6 @@ static void SaveUserLevelInfo() ldi = *level_info; for (i = 0; i < NUM_LEVELINFO_TOKENS; i++) { -#if 1 if (i == LEVELINFO_TOKEN_NAME || i == LEVELINFO_TOKEN_AUTHOR || i == LEVELINFO_TOKEN_LEVELS || @@ -2692,15 +2521,6 @@ static void SaveUserLevelInfo() /* just to make things nicer :) */ if (i == LEVELINFO_TOKEN_AUTHOR) fprintf(file, "\n"); -#else - if (i != LEVELINFO_TOKEN_IDENTIFIER && - i != LEVELINFO_TOKEN_NAME_SORTING && - i != LEVELINFO_TOKEN_IMPORTED_FROM && - i != LEVELINFO_TOKEN_IMPORTED_BY && - i != LEVELINFO_TOKEN_FILENAME && - i != LEVELINFO_TOKEN_FILETYPE) - fprintf(file, "%s\n", getSetupLine(levelinfo_tokens, "", i)); -#endif } token_value_position = TOKEN_VALUE_POSITION_DEFAULT; diff --git a/src/libgame/sound.c b/src/libgame/sound.c index 6eb1de14..a4b31c06 100644 --- a/src/libgame/sound.c +++ b/src/libgame/sound.c @@ -70,25 +70,6 @@ #define SAME_SOUND_NR(x,y) ((x).nr == (y).nr) #define SAME_SOUND_DATA(x,y) ((x).data_ptr == (y).data_ptr) -#if 0 -struct SoundHeader_SUN -{ - unsigned long magic; - unsigned long hdr_size; - unsigned long data_size; - unsigned long encoding; - unsigned long sample_rate; - unsigned long channels; -}; - -struct SoundHeader_8SVX -{ - char magic_FORM[4]; - unsigned long chunk_size; - char magic_8SVX[4]; -}; -#endif - #if defined(AUDIO_UNIX_NATIVE) struct SoundHeader_WAV { @@ -151,16 +132,8 @@ typedef struct SoundControl SoundControl; static struct ArtworkListInfo *sound_info = NULL; static struct ArtworkListInfo *music_info = NULL; -#if 0 -static SoundInfo **Sound = NULL; -#endif - static MusicInfo **Music_NoConf = NULL; -#if 0 -static int num_sounds = 0; -#endif - static int num_music_noconf = 0; static int stereo_volume[SOUND_MAX_LEFT2RIGHT + 1]; @@ -271,11 +244,6 @@ static boolean ForkAudioProcess(void) if (audio.mixer_pid == 0) /* we are the child process */ audio.mixer_pid = getpid(); -#if 0 - printf("PID: %d [%s]\n", getpid(),(IS_CHILD_PROCESS() ? "child" : "parent")); - Delay(10000 * 0); -#endif - if (IS_CHILD_PROCESS()) Mixer_Main(); /* this function never returns */ else @@ -831,22 +799,6 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) int num_sounds = getSoundListSize(); int num_music = getMusicListSize(); -#if 0 - if (IS_MUSIC(snd_ctrl)) - printf("NEW MUSIC %d ARRIVED [%d/%d] [%d ACTIVE CHANNELS]\n", - snd_ctrl.nr, num_music, num_music_noconf, mixer_active_channels); - else - printf("NEW SOUND %d ARRIVED [%d] [%d ACTIVE CHANNELS]\n", - snd_ctrl.nr, num_sounds, mixer_active_channels); -#endif - -#if 0 - /* !!! TEST ONLY !!! */ - if (IS_MUSIC(snd_ctrl)) - snd_ctrl.nr = 0; -#endif - -#if 1 if (IS_MUSIC(snd_ctrl)) { if (snd_ctrl.nr >= num_music) /* invalid music */ @@ -871,32 +823,6 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) snd_info = getSoundInfoEntryFromSoundID(snd_ctrl.nr); } - /* - if (snd_ctrl.nr >= (IS_MUSIC(snd_ctrl) ? num_music : num_sounds)) - return; - */ -#else - if (IS_MUSIC(snd_ctrl)) - { - if (num_music_noconf == 0) - return; - - snd_ctrl.nr = snd_ctrl.nr % num_music_noconf; - } - else if (snd_ctrl.nr >= num_sounds) - return; -#endif - -#if 0 -#if 1 - snd_info = (IS_MUSIC(snd_ctrl) ? getMusicInfoEntryFromMusicID(snd_ctrl.nr) : - getSoundInfoEntryFromSoundID(snd_ctrl.nr)); -#else - snd_info = (IS_MUSIC(snd_ctrl) ? Music_NoConf[snd_ctrl.nr] : - getSoundInfoEntryFromSoundID(snd_ctrl.nr)); -#endif -#endif - if (snd_info == NULL) return; @@ -910,10 +836,6 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) /* play music samples on a dedicated music channel */ if (IS_MUSIC(snd_ctrl)) { -#if 0 - printf("::: slot %d, ptr 0x%08x\n", snd_ctrl.nr, snd_ctrl.data_ptr); -#endif - Mixer_StopMusicChannel(); mixer[audio.music_channel] = snd_ctrl; @@ -927,10 +849,6 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) if (mixer[i].active && SAME_SOUND_DATA(mixer[i], snd_ctrl)) k++; -#if 0 - printf("SOUND %d [CURRENTLY PLAYING %d TIMES]\n", snd_ctrl.nr, k); -#endif - /* reset expiration delay for already playing loop sounds */ if (k > 0 && IS_LOOP(snd_ctrl)) { @@ -938,10 +856,6 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) { if (mixer[i].active && SAME_SOUND_DATA(mixer[i], snd_ctrl)) { -#if 0 - printf("RESETTING EXPIRATION FOR SOUND %d\n", snd_ctrl.nr); -#endif - if (IS_FADING(mixer[i])) Mixer_UnFadeChannel(i); @@ -951,21 +865,12 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) Mixer_SetChannelProperties(i); Mixer_ResetChannelExpiration(i); - -#if 0 - printf("RESETTING VOLUME/STEREO FOR SOUND %d TO %d/%d\n", - snd_ctrl.nr, snd_ctrl.volume, snd_ctrl.stereo_position); -#endif } } return; } -#if 0 - printf("PLAYING NEW SOUND %d\n", snd_ctrl.nr); -#endif - /* don't play sound more than n times simultaneously (with n == 2 for now) */ if (k >= 2) { @@ -1052,16 +957,8 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) /* add the new sound to the mixer */ for (i = audio.first_sound_channel; i < audio.num_channels; i++) { -#if 0 - printf("CHECKING CHANNEL %d FOR SOUND %d ...\n", i, snd_ctrl.nr); -#endif - if (!mixer[i].active) { -#if 0 - printf("ADDING NEW SOUND %d TO MIXER\n", snd_ctrl.nr); -#endif - #if defined(AUDIO_UNIX_NATIVE) if (snd_info->data_len == 0) { @@ -1408,11 +1305,9 @@ static int Mixer_Main_SimpleAudio(SoundControl snd_ctrl) mixer[i].volume * (long)premix_first_buffer[j] / SOUND_MAX_VOLUME; /* might be needed for u-law /dev/audio */ -#if 1 for (j = 0; j < sample_size; j++) playing_buffer[j] = linear_to_ulaw(premix_first_buffer[j]); -#endif /* delete completed sound entries from the mixer */ if (mixer[i].playing_pos >= mixer[i].data_len) @@ -1638,10 +1533,6 @@ static void *Load_WAV(char *filename) if (!audio.sound_available) return NULL; -#if 0 - printf("loading WAV file '%s'\n", filename); -#endif - snd_info = checked_calloc(sizeof(SoundInfo)); #if defined(TARGET_SDL) @@ -1926,25 +1817,13 @@ void LoadCustomMusic_NoConf(void) if (music_already_used) continue; -#if 0 - if (FileIsSound(basename) || FileIsMusic(basename)) - printf("DEBUG: loading music '%s' ...\n", basename); -#endif - if (draw_init_text) DrawInitText(basename, 150, FC_YELLOW); filename = getPath2(music_directory, basename); -#if 1 if (FileIsMusic(basename)) mus_info = Load_WAV_or_MOD(filename); -#else - if (FileIsSound(basename)) - mus_info = Load_WAV(filename); - else if (FileIsMusic(basename)) - mus_info = Load_MOD(filename); -#endif free(filename); @@ -2107,11 +1986,6 @@ void InitSoundList(struct ConfigInfo *config_list, int num_file_list_entries, sound_info->load_artwork = Load_WAV; sound_info->free_artwork = FreeSound; - -#if 0 - num_sounds = sound_info->num_file_list_entries; - Sound = (SoundInfo **)sound_info->artwork_list; -#endif } void InitMusicList(struct ConfigInfo *config_list, int num_file_list_entries, @@ -2309,30 +2183,24 @@ void StopSoundExt(int nr, int state) static void ReloadCustomSounds() { #if 0 - printf("DEBUG: reloading sounds '%s' ...\n", artwork.snd_current_identifier); + printf("::: reloading sounds '%s' ...\n", artwork.snd_current_identifier); #endif LoadArtworkConfig(sound_info); ReloadCustomArtworkList(sound_info); - -#if 0 - num_sounds = getSoundListSize(); -#endif } static void ReloadCustomMusic() { #if 0 - printf("DEBUG: reloading music '%s' ...\n", artwork.mus_current_identifier); + printf("::: reloading music '%s' ...\n", artwork.mus_current_identifier); #endif LoadArtworkConfig(music_info); ReloadCustomArtworkList(music_info); -#if 1 /* load all music files from directory not defined in "musicinfo.conf" */ LoadCustomMusic_NoConf(); -#endif } void InitReloadCustomSounds(char *set_identifier) diff --git a/src/libgame/system.c b/src/libgame/system.c index 8e65d970..364394f1 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -213,29 +213,6 @@ static void DrawBitmapFromTile(Bitmap *bitmap, Bitmap *tile, void SetBackgroundBitmap(Bitmap *background_bitmap_tile, int mask) { - /* !!! THIS DOES NOT WORK !!! REPLACED BITMAPS MAY HAVE SAME ADDRESS !!! */ -#if 0 - static Bitmap *main_bitmap_tile = NULL; - static Bitmap *door_bitmap_tile = NULL; - - if (mask == REDRAW_FIELD) - { - if (background_bitmap_tile == main_bitmap_tile) - return; /* main background tile has not changed */ - - main_bitmap_tile = background_bitmap_tile; - } - else if (mask == REDRAW_DOOR_1) - { - if (background_bitmap_tile == door_bitmap_tile) - return; /* main background tile has not changed */ - - door_bitmap_tile = background_bitmap_tile; - } - else /* should not happen */ - return; -#endif - if (background_bitmap_tile != NULL) gfx.background_bitmap_mask |= mask; else @@ -444,13 +421,8 @@ inline boolean DrawingDeactivated(int x, int y, int width, int height) inline boolean DrawingOnBackground(int x, int y) { -#if 1 return (CheckDrawingArea(x, y, 1, 1, gfx.background_bitmap_mask) && CheckDrawingArea(x, y, 1, 1, gfx.draw_background_mask)); -#else - return ((gfx.draw_background_mask & gfx.background_bitmap_mask) && - CheckDrawingArea(x, y, 1, 1, gfx.draw_background_mask)); -#endif } inline void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap, @@ -487,12 +459,6 @@ inline void ClearRectangleOnBackground(Bitmap *bitmap, int x, int y, ClearRectangle(bitmap, x, y, width, height); } -#if 0 -#ifndef TARGET_SDL -static GC last_clip_gc = 0; /* needed for XCopyArea() through clip mask */ -#endif -#endif - inline void SetClipMask(Bitmap *bitmap, GC clip_gc, Pixmap clip_pixmap) { #if defined(TARGET_X11) @@ -501,9 +467,6 @@ inline void SetClipMask(Bitmap *bitmap, GC clip_gc, Pixmap clip_pixmap) bitmap->clip_gc = clip_gc; XSetClipMask(display, bitmap->clip_gc, clip_pixmap); } -#if 0 - last_clip_gc = clip_gc; -#endif #endif } @@ -515,9 +478,6 @@ inline void SetClipOrigin(Bitmap *bitmap, GC clip_gc, int clip_x, int clip_y) bitmap->clip_gc = clip_gc; XSetClipOrigin(display, bitmap->clip_gc, clip_x, clip_y); } -#if 0 - last_clip_gc = clip_gc; -#endif #endif } @@ -900,20 +860,6 @@ void CreateBitmapWithSmallBitmaps(Bitmap *old_bitmap, int zoom_factor) if (zoom_factor != 8) FreeBitmap(tmp_bitmap_8); -#if 0 - -#if defined(TARGET_SDL) - /* !!! what about the old old_bitmap->surface ??? FIX ME !!! */ - old_bitmap->surface = new_bitmap->surface; - new_bitmap->surface = NULL; -#else - /* !!! see above !!! */ - old_bitmap->drawable = new_bitmap->drawable; - new_bitmap->drawable = None; -#endif - -#else - /* replace image with extended image (containing normal, 1/2 and 1/8 size) */ #if defined(TARGET_SDL) swap_bitmap.surface = old_bitmap->surface; @@ -923,8 +869,6 @@ void CreateBitmapWithSmallBitmaps(Bitmap *old_bitmap, int zoom_factor) swap_bitmap.drawable = old_bitmap->drawable; old_bitmap->drawable = new_bitmap->drawable; new_bitmap->drawable = swap_bitmap.drawable; -#endif - #endif old_bitmap->width = new_bitmap->width; @@ -974,7 +918,9 @@ static const char *cursor_image_playfield[] = /* hot spot */ "0,0" + #else + /* pixels */ " X ", "X.X ", @@ -1165,6 +1111,7 @@ inline void PeekEvent(Event *event) inline Key GetEventKey(KeyEvent *event, boolean with_modifiers) { #if defined(TARGET_SDL) + #if 0 printf("unicode == '%d', sym == '%d', mod == '0x%04x'\n", (int)event->keysym.unicode, @@ -1178,7 +1125,9 @@ inline Key GetEventKey(KeyEvent *event, boolean with_modifiers) return event->keysym.unicode; else return event->keysym.sym; + #else + #if 0 printf("with modifiers == '0x%04x', without modifiers == '0x%04x'\n", (int)XLookupKeysym(event, event->state), diff --git a/src/libgame/toons.c b/src/libgame/toons.c index 2d0a3550..fd2bb8e5 100644 --- a/src/libgame/toons.c +++ b/src/libgame/toons.c @@ -48,11 +48,7 @@ int getAnimationFrame(int num_frames, int delay, int mode, int start_frame, } else if (mode & ANIM_PINGPONG) /* oscillate (border frames once) */ { -#if 1 int max_anim_frames = (num_frames > 1 ? 2 * num_frames - 2 : 1); -#else - int max_anim_frames = 2 * num_frames - 2; -#endif frame = (sync_frame % (delay * max_anim_frames)) / delay; frame = (frame < num_frames ? frame : max_anim_frames - frame); @@ -127,7 +123,6 @@ void DrawAnim(Bitmap *toon_bitmap, GC toon_clip_gc, { int buf_x = DOOR_GFX_PAGEX3, buf_y = DOOR_GFX_PAGEY1; -#if 1 /* special method to avoid flickering interference with BackToFront() */ BlitBitmap(backbuffer, screen_info.save_buffer, dest_x-pad_x, dest_y-pad_y, width+2*pad_x, height+2*pad_y, buf_x, buf_y); @@ -141,16 +136,6 @@ void DrawAnim(Bitmap *toon_bitmap, GC toon_clip_gc, BlitBitmap(screen_info.save_buffer, backbuffer, buf_x, buf_y, width+2*pad_x, height+2*pad_y, dest_x-pad_x, dest_y-pad_y); -#else - /* normal method, causing flickering interference with BackToFront() */ - BlitBitmap(backbuffer, screen_info.save_buffer, dest_x-pad_x, dest_y-pad_y, - width+2*pad_x, height+2*pad_y, buf_x, buf_y); - SetClipOrigin(toon_bitmap,toon_clip_gc, buf_x-src_x+pad_x,buf_y-src_y+pad_y); - BlitBitmapMasked(toon_bitmap, screen_info.save_buffer, - src_x, src_y, width, height, buf_x+pad_x, buf_y+pad_y); - BlitBitmap(screen_info.save_buffer, window, buf_x, buf_y, - width+2*pad_x, height+2*pad_y, dest_x-pad_x, dest_y-pad_y); -#endif FlushDisplay(); } diff --git a/src/libgame/toons.h b/src/libgame/toons.h index 31345837..4d3e0be8 100644 --- a/src/libgame/toons.h +++ b/src/libgame/toons.h @@ -35,27 +35,8 @@ struct ToonScreenInfo struct ToonInfo { -#if 0 - int graphic; - int width, height; - int src_x, src_y; - int anim_frames; - int step_delay; - int step_offset; - int anim_mode; - int direction; - int position; - - int anim_delay; - int anim_start_frame; - Bitmap *bitmap; /* dynamically initialized */ - - char *direction_str; - char *position_str; - -#else - Bitmap *bitmap; + int src_x, src_y; int width, height; int anim_frames; @@ -64,9 +45,9 @@ struct ToonInfo int anim_mode; int step_offset; int step_delay; + char *direction; char *position; -#endif }; diff --git a/src/libgame/x11.c b/src/libgame/x11.c index f03e961c..30aaa1bc 100644 --- a/src/libgame/x11.c +++ b/src/libgame/x11.c @@ -93,9 +93,6 @@ static DrawWindow *X11InitWindow() Pixmap icon_pixmap, iconmask_pixmap; unsigned int icon_width, icon_height; int icon_hot_x, icon_hot_y; -#if 0 - char icon_filename[256]; -#endif XSizeHints size_hints; XWMHints wm_hints; XClassHint class_hints; @@ -111,16 +108,6 @@ static DrawWindow *X11InitWindow() const int width = video.width, height = video.height; int i; -#if 0 -#if !defined(PLATFORM_MSDOS) - static struct IconFileInfo icon_pic = - { - "rocks_icon.xbm", - "rocks_iconmask.xbm" - }; -#endif -#endif - screen_width = XDisplayWidth(display, screen); screen_height = XDisplayHeight(display, screen); @@ -140,10 +127,6 @@ static DrawWindow *X11InitWindow() XChangeProperty(display, new_window->drawable, proto_atom, XA_ATOM, 32, PropModePrepend, (unsigned char *) &delete_atom, 1); -#if 0 - sprintf(icon_filename, "%s/%s", options.graphics_directory, - icon_pic.picture_filename); -#endif if (XReadBitmapFile(display, new_window->drawable, getCustomImageFilename(program.x11_icon_filename), &icon_width, &icon_height, &icon_pixmap, @@ -151,10 +134,6 @@ static DrawWindow *X11InitWindow() Error(ERR_EXIT, "cannot read icon bitmap file '%s'", program.x11_icon_filename); -#if 0 - sprintf(icon_filename, "%s/%s", options.graphics_directory, - icon_pic.picturemask_filename); -#endif if (XReadBitmapFile(display, new_window->drawable, getCustomImageFilename(program.x11_iconmask_filename), &icon_width, &icon_height, &iconmask_pixmap, diff --git a/src/main.c b/src/main.c index f2db9290..7d2c4237 100644 --- a/src/main.c +++ b/src/main.c @@ -19,14 +19,7 @@ #include "events.h" #include "config.h" -#if 0 -GC tile_clip_gc; -Bitmap *pix[NUM_BITMAPS]; -#endif Bitmap *bitmap_db_field, *bitmap_db_door; -#if 0 -Pixmap tile_clipmask[NUM_TILES]; -#endif DrawBuffer *fieldbuffer; DrawBuffer *drawto_field; diff --git a/src/main.h b/src/main.h index fcfbf320..d18e2de2 100644 --- a/src/main.h +++ b/src/main.h @@ -191,15 +191,8 @@ #define CE_PLAYER_PUSHES_X 13 #define CE_PLAYER_COLLECTS_X 14 #define CE_PLAYER_DROPS_X 15 - -#if 1 #define CE_COUNT_AT_ZERO 16 #define CE_COUNT_AT_ZERO_OF_X 17 -#else -#define CE_BY_PLAYER_OBSOLETE 16 /* obsolete; now CE_BY_DIRECT_ACTION */ -#define CE_BY_COLLISION_OBSOLETE 17 /* obsolete; now CE_BY_DIRECT_ACTION */ -#endif - #define CE_BY_OTHER_ACTION 18 /* activates other element events */ #define CE_BY_DIRECT_ACTION 19 /* activates direct element events */ #define CE_PLAYER_DIGS_X 20 @@ -218,8 +211,6 @@ #define CE_BITMASK_DEFAULT 0 -#if 1 - #define CH_EVENT_VAR(e,c) (element_info[e].change->has_event[c]) #define CH_ANY_EVENT_VAR(e,c) (element_info[e].has_change_event[c]) @@ -234,26 +225,6 @@ #define SET_ANY_CHANGE_EVENT(e,c,v) (IS_CUSTOM_ELEMENT(e) ? \ CH_ANY_EVENT_VAR(e,c) = (v) : 0) -#else - -#define CH_EVENT_BIT(c) (1 << (c)) -#define CH_EVENT_VAR(e) (element_info[e].change->events) -#define CH_ANY_EVENT_VAR(e) (element_info[e].change_events) - -#define HAS_CHANGE_EVENT(e,c) (IS_CUSTOM_ELEMENT(e) && \ - (CH_EVENT_VAR(e) & CH_EVENT_BIT(c)) != 0) -#define HAS_ANY_CHANGE_EVENT(e,c) (IS_CUSTOM_ELEMENT(e) && \ - (CH_ANY_EVENT_VAR(e) & CH_EVENT_BIT(c)) != 0) -#define SET_CHANGE_EVENT(e,c,v) (IS_CUSTOM_ELEMENT(e) ? \ - ((v) ? \ - (CH_EVENT_VAR(e) |= CH_EVENT_BIT(c)) : \ - (CH_EVENT_VAR(e) &= ~CH_EVENT_BIT(c))) : 0) -#define SET_ANY_CHANGE_EVENT(e,c,v) (IS_CUSTOM_ELEMENT(e) ? \ - ((v) ? \ - (CH_ANY_EVENT_VAR(e) |= CH_EVENT_BIT(c)) : \ - (CH_ANY_EVENT_VAR(e) &= ~CH_EVENT_BIT(c))) : 0) -#endif - /* values for player bitmasks */ #define PLAYER_BITS_NONE 0 #define PLAYER_BITS_1 (1 << 0) @@ -616,8 +587,6 @@ #define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_PLAYER_1]) #define SHIELD_ON(p) ((p)->shield_normal_time_left > 0) -#if 1 - #define ENEMY_PROTECTED_FIELD(x,y) (IS_PROTECTED(Feld[x][y]) || \ IS_PROTECTED(Back[x][y])) #define EXPLOSION_PROTECTED_FIELD(x,y) (IS_EXPLOSION_PROOF(Feld[x][y])) @@ -626,16 +595,6 @@ #define PLAYER_EXPLOSION_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \ EXPLOSION_PROTECTED_FIELD(x, y)) -#else - -#define PROTECTED_FIELD(x,y) (IS_ACCESSIBLE_INSIDE(Feld[x][y]) && \ - IS_INDESTRUCTIBLE(Feld[x][y])) -#define PLAYER_ENEMY_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \ - PROTECTED_FIELD(x, y)) -#define PLAYER_EXPLOSION_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \ - PROTECTED_FIELD(x, y)) -#endif - #define PLAYER_SWITCHING(p,x,y) ((p)->is_switching && \ (p)->switch_x == (x) && (p)->switch_y == (y)) @@ -1657,23 +1616,12 @@ struct PlayerInfo int show_envelope; -#if 1 /* USE_NEW_MOVE_DELAY */ int move_delay; int move_delay_value; -#else - unsigned long move_delay; - int move_delay_value; -#endif - int move_delay_reset_counter; -#if 1 /* USE_NEW_PUSH_DELAY */ int push_delay; int push_delay_value; -#else - unsigned long push_delay; - unsigned long push_delay_value; -#endif unsigned long actual_frame_counter; @@ -1779,11 +1727,6 @@ struct LevelInfo boolean block_last_field; /* player blocks previous field while moving */ boolean sp_block_last_field; /* player blocks previous field while moving */ -#if 0 /* !!! THIS IS NOT A LEVEL SETTING => LOGIC MOVED TO "game.c" !!! */ - int block_delay; /* delay for blocking previous field */ - int sp_block_delay; /* delay for blocking previous field */ -#endif - /* ('int' instead of 'boolean' because used as selectbox value in editor) */ int use_step_counter; /* count steps instead of seconds for level */ @@ -1894,11 +1837,7 @@ struct ElementChangeInfo { boolean can_change; /* use or ignore this change info */ -#if 1 boolean has_event[NUM_CHANGE_EVENTS]; /* change events */ -#else - unsigned long events; /* change events */ -#endif int trigger_player; /* player triggering change */ int trigger_side; /* side triggering change */ @@ -2041,22 +1980,13 @@ struct ElementInfo /* ---------- internal values used at runtime when playing ---------- */ -#if 1 boolean has_change_event[NUM_CHANGE_EVENTS]; -#else - unsigned long change_events; /* bitfield for combined change events */ -#endif int event_page_nr[NUM_CHANGE_EVENTS]; /* page number for each event */ struct ElementChangeInfo *event_page[NUM_CHANGE_EVENTS]; /* page for event */ boolean in_group[NUM_GROUP_ELEMENTS]; -#if 0 - boolean can_leave_element; /* element can leave other element behind */ - boolean can_leave_element_last; -#endif - int counter; /* current value of generic CE counter */ /* ---------- internal values used in level editor ---------- */ @@ -2192,10 +2122,6 @@ struct HelpAnimInfo }; -#if 0 -extern GC tile_clip_gc; -extern Bitmap *pix[]; -#endif extern Bitmap *bitmap_db_field, *bitmap_db_door; extern Pixmap tile_clipmask[]; extern DrawBuffer *fieldbuffer; diff --git a/src/netserv.c b/src/netserv.c index 69226533..991fbba6 100644 --- a/src/netserv.c +++ b/src/netserv.c @@ -203,7 +203,6 @@ static void AddPlayer(int fd) nxn = 1; -#if 1 while (again) { again = FALSE; @@ -221,19 +220,6 @@ static void AddPlayer(int fd) v = v->next; } } -#else - again: - v = player->next; - while (v) - { - if (v->number == nxn) - { - nxn++; - goto again; - } - v = v->next; - } -#endif player->number = nxn; #if !defined(TARGET_SDL) diff --git a/src/screens.c b/src/screens.c index 43a9b607..4d2dffc9 100644 --- a/src/screens.c +++ b/src/screens.c @@ -418,7 +418,6 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) if (new_level_nr > leveldir_current->last_level) new_level_nr = leveldir_current->last_level; -#if 1 if (setup.handicap && new_level_nr > leveldir_current->handicap_level) { /* skipping levels is only allowed when trying to skip single level */ @@ -431,10 +430,6 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) new_level_nr = leveldir_current->handicap_level; } -#else - if (setup.handicap && new_level_nr > leveldir_current->handicap_level) - new_level_nr = leveldir_current->handicap_level; -#endif if (new_level_nr != old_level_nr) { @@ -511,34 +506,20 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) } else if (y == 5) { -#if 1 StartGameActions(options.network, setup.autorecord, NEW_RANDOMIZE); -#else - if (setup.autorecord) - TapeStartRecording(); - -#if defined(NETWORK_AVALIABLE) - if (options.network) - SendToServer_StartPlaying(); - else -#endif - { - game_status = GAME_MODE_PLAYING; - StopAnimation(); - InitGame(); - } -#endif } else if (y == 6) { game_status = GAME_MODE_SETUP; setup_mode = SETUP_MODE_MAIN; + DrawSetupScreen(); } else if (y == 7) { SaveLevelSetup_LastSeries(); SaveLevelSetup_SeriesInfo(); + if (Request("Do you really want to quit ?", REQ_ASK | REQ_STAY_CLOSED)) game_status = GAME_MODE_QUIT; } @@ -750,10 +731,6 @@ void DrawInfoScreen_HelpAnim(int start, int max_anims, boolean init) for (i = 0; i < MAX_INFO_ELEMENTS_ON_SCREEN; i++) infoscreen_step[i] = infoscreen_frame[i] = 0; -#if 0 - SetMainBackgroundImage(IMG_BACKGROUND_INFO); -#endif - ClearWindow(); DrawHeadline(); @@ -861,11 +838,7 @@ static char *getHelpText(int element, int action, int direction) void DrawInfoScreen_HelpText(int element, int action, int direction, int ypos) { -#if 0 - int font_nr = FONT_TEXT_2; -#else int font_nr = FONT_LEVEL_NUMBER; -#endif int font_width = getFontWidth(font_nr); int sx = mSX + MINI_TILEX + TILEX + MINI_TILEX; int sy = mSY + 65 + 2 * 32 + 1; @@ -1225,11 +1198,7 @@ void DrawInfoScreen_LevelSet() int ystart = 150; int ybottom = SYSIZE - 20; char *filename = getLevelSetInfoFilename(); -#if 0 - int font_nr = FONT_TEXT_2; -#else int font_nr = FONT_LEVEL_NUMBER; -#endif int font_width = getFontWidth(font_nr); int font_height = getFontHeight(font_nr); int pad_x = 32; @@ -2250,14 +2219,8 @@ static void DrawSetupScreen_Generic() (value_ptr == &setup.fullscreen && !video.fullscreen_available)) setup_info[i].type |= TYPE_GHOSTED; -#if 0 - if (setup_info[i].type & TYPE_STRING || - (setup_info[i].type & TYPE_SWITCH && setup_mode == SETUP_MODE_EDITOR)) - font_nr = FONT_MENU_2; -#else if (setup_info[i].type & TYPE_STRING) font_nr = FONT_MENU_2; -#endif DrawText(mSX + 32, mSY + ypos * 32, setup_info[i].text, font_nr); @@ -2448,14 +2411,11 @@ static void drawPlayerSetupInputInfo(int player_nr) custom_key = setup.input[player_nr].key; DrawText(mSX+11*32, mSY+2*32, int2str(player_nr +1, 1), FONT_INPUT_1_ACTIVE); -#if 1 + ClearRectangleOnBackground(drawto, mSX + 8 * TILEX, mSY + 2 * TILEY, TILEX, TILEY); DrawGraphicThruMaskExt(drawto, mSX + 8 * TILEX, mSY + 2 * TILEY, PLAYER_NR_GFX(IMG_PLAYER_1, player_nr), 0); -#else - DrawGraphicThruMask(8, 2, PLAYER_NR_GFX(IMG_PLAYER_1, player_nr), 0); -#endif if (setup.input[player_nr].use_joystick) { diff --git a/src/tape.c b/src/tape.c index 44062885..e8fb1b7e 100644 --- a/src/tape.c +++ b/src/tape.c @@ -345,102 +345,6 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) }, }; -#if 0 - if (state & VIDEO_STATE_FFWD_OFF) - { -#if 1 - int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2; - - if (value != VIDEO_DISPLAY_SYMBOL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_LABEL_XPOS, - cy + VIDEO_LABEL_YPOS, - VIDEO_LABEL_XSIZE, - VIDEO_LABEL_YSIZE, - VX + VIDEO_LABEL_XPOS, - VY + VIDEO_LABEL_YPOS); - - cx = DOOR_GFX_PAGEX3; - cy = DOOR_GFX_PAGEY2; - - if (value != VIDEO_DISPLAY_LABEL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_FFWD_SYMBOL_XPOS, - cy + VIDEO_SYMBOL_YPOS, - VIDEO_FFWD_SYMBOL_XSIZE, - VIDEO_FFWD_SYMBOL_YSIZE, - VX + VIDEO_SYMBOL_XPOS, - VY + VIDEO_SYMBOL_YPOS); -#else - int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2; - - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_PLAY_SYMBOL_XPOS - 9, - cy + VIDEO_PLAY_SYMBOL_YPOS, - VIDEO_PLAY_SYMBOL_XSIZE - 2, - VIDEO_PLAY_SYMBOL_YSIZE, - VX + VIDEO_PLAY_SYMBOL_XPOS - 9, - VY + VIDEO_PLAY_SYMBOL_YPOS); -#endif - } -#endif - -#if 0 - if (state & VIDEO_STATE_PBEND_OFF) - { -#if 1 - int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2; - - if (value != VIDEO_DISPLAY_SYMBOL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_LABEL_XPOS, - cy + VIDEO_LABEL_YPOS, - VIDEO_LABEL_XSIZE, - VIDEO_LABEL_YSIZE, - VX + VIDEO_LABEL_XPOS, - VY + VIDEO_LABEL_YPOS); - - cx = DOOR_GFX_PAGEX3; - cy = DOOR_GFX_PAGEY2; - - if (value != VIDEO_DISPLAY_LABEL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_PBEND_SYMBOL_XPOS, - cy + VIDEO_SYMBOL_YPOS, - VIDEO_PBEND_SYMBOL_XSIZE, - VIDEO_PBEND_SYMBOL_YSIZE, - VX + VIDEO_PBEND_SYMBOL_XPOS, - VY + VIDEO_SYMBOL_YPOS); -#else - int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2; - - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_REC_LABEL_XPOS, - cy + VIDEO_REC_LABEL_YPOS, - VIDEO_PBEND_LABEL_XSIZE, - VIDEO_PBEND_LABEL_YSIZE, - VX + VIDEO_REC_LABEL_XPOS, - VY + VIDEO_REC_LABEL_YPOS); -#endif - } -#endif - -#if 0 - if (state & VIDEO_STATE_1STEP_OFF) - { - int cx = DOOR_GFX_PAGEX3, cy = DOOR_GFX_PAGEY2; - - if (value != VIDEO_DISPLAY_LABEL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_1STEP_SYMBOL_XPOS, - cy + VIDEO_SYMBOL_YPOS, - VIDEO_1STEP_SYMBOL_XSIZE, - VIDEO_1STEP_SYMBOL_YSIZE, - VX + VIDEO_1STEP_SYMBOL_XPOS, - VY + VIDEO_SYMBOL_YPOS); - } -#endif - for (k = 0; k < NUM_TAPE_FUNCTION_STATES; k++) /* on or off states */ { for (i = 0; i < NUM_TAPE_FUNCTIONS; i++) /* record, play, ... */ @@ -476,102 +380,6 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) } } -#if 0 - if (state & VIDEO_STATE_FFWD_ON) - { -#if 1 - int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1; - - if (value != VIDEO_DISPLAY_SYMBOL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_FFWD_LABEL_XPOS, - cy + VIDEO_FFWD_LABEL_YPOS, - VIDEO_LABEL_XSIZE, - VIDEO_LABEL_YSIZE, - VX + VIDEO_LABEL_XPOS, - VY + VIDEO_LABEL_YPOS); - - cx = DOOR_GFX_PAGEX6; - cy = DOOR_GFX_PAGEY1; - - if (value != VIDEO_DISPLAY_LABEL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_FFWD_SYMBOL_XPOS, - cy + VIDEO_FFWD_SYMBOL_YPOS, - VIDEO_FFWD_SYMBOL_XSIZE, - VIDEO_FFWD_SYMBOL_YSIZE, - VX + VIDEO_SYMBOL_XPOS, - VY + VIDEO_SYMBOL_YPOS); -#else - int cx = DOOR_GFX_PAGEX4, cy = DOOR_GFX_PAGEY2; - - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_PLAY_SYMBOL_XPOS, - cy + VIDEO_PLAY_SYMBOL_YPOS, - VIDEO_PLAY_SYMBOL_XSIZE - 2, - VIDEO_PLAY_SYMBOL_YSIZE, - VX + VIDEO_PLAY_SYMBOL_XPOS - 9, - VY + VIDEO_PLAY_SYMBOL_YPOS); -#endif - } -#endif - -#if 0 - if (state & VIDEO_STATE_PBEND_ON) - { -#if 1 - int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1; - - if (value != VIDEO_DISPLAY_SYMBOL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_PBEND_LABEL_XPOS, - cy + VIDEO_PBEND_LABEL_YPOS, - VIDEO_LABEL_XSIZE, - VIDEO_LABEL_YSIZE, - VX + VIDEO_LABEL_XPOS, - VY + VIDEO_LABEL_YPOS); - - cx = DOOR_GFX_PAGEX6; - cy = DOOR_GFX_PAGEY1; - - if (value != VIDEO_DISPLAY_LABEL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_PBEND_SYMBOL_XPOS, - cy + VIDEO_PBEND_SYMBOL_YPOS, - VIDEO_PBEND_SYMBOL_XSIZE, - VIDEO_PBEND_SYMBOL_YSIZE, - VX + VIDEO_SYMBOL_XPOS, - VY + VIDEO_SYMBOL_YPOS); -#else - int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1; - - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_PBEND_LABEL_XPOS, - cy + VIDEO_PBEND_LABEL_YPOS, - VIDEO_PBEND_LABEL_XSIZE, - VIDEO_PBEND_LABEL_YSIZE, - VX + VIDEO_REC_LABEL_XPOS, - VY + VIDEO_REC_LABEL_YPOS); -#endif - } -#endif - -#if 0 - if (state & VIDEO_STATE_1STEP_ON) - { - int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY1; - - if (value != VIDEO_DISPLAY_LABEL_ONLY) - BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, - cx + VIDEO_1STEP_SYMBOL_XPOS, - cy + VIDEO_1STEP_SYMBOL_YPOS, - VIDEO_1STEP_SYMBOL_XSIZE, - VIDEO_1STEP_SYMBOL_YSIZE, - VX + VIDEO_1STEP_SYMBOL_XPOS, - VY + VIDEO_SYMBOL_YPOS); - } -#endif - if (state & VIDEO_STATE_DATE_ON) { int tag = value % 100; @@ -597,16 +405,7 @@ void DrawVideoDisplay(unsigned long state, unsigned long value) int2str(sec, 2), FONT_TAPE_RECORDER); } -#if 1 redraw_mask |= REDRAW_DOOR_2; -#else - if (state & VIDEO_STATE_DATE) - redraw_mask |= REDRAW_VIDEO_1; - if ((state & ~VIDEO_STATE_DATE) & VIDEO_STATE) - redraw_mask |= REDRAW_VIDEO_2; - if (state & VIDEO_PRESS) - redraw_mask |= REDRAW_VIDEO_3; -#endif } void DrawCompleteVideoDisplay() @@ -684,11 +483,6 @@ void TapeErase() TapeSetDate(); -#if 0 - printf("::: tape.engine_version = level.game_version = %d \n", - level.game_version); -#endif - for (i = 0; i < MAX_PLAYERS; i++) tape.player_participates[i] = FALSE; } @@ -782,11 +576,6 @@ void TapeHaltRecording() void TapeStopRecording() { -#if 0 - if (!tape.recording) - return; -#endif - TapeHaltRecording(); tape.recording = FALSE; @@ -800,13 +589,8 @@ void TapeRecordAction(byte action[MAX_PLAYERS]) { int i; -#if 1 - if (!tape.recording) /* record action even when tape is paused! */ + if (!tape.recording) /* (record action even when tape is paused) */ return; -#else - if (!tape.recording || tape.pausing) - return; -#endif if (tape.counter >= MAX_TAPE_LEN - 1) { @@ -814,10 +598,6 @@ void TapeRecordAction(byte action[MAX_PLAYERS]) return; } -#if 0 - printf("::: %05d: recording action: %d\n", FrameCounter, action[0]); -#endif - if (tape.pos[tape.counter].delay > 0) /* already stored action */ { boolean changed_events = FALSE; @@ -837,11 +617,6 @@ void TapeRecordAction(byte action[MAX_PLAYERS]) if (tape.pos[tape.counter].delay == 0) /* store new action */ { - -#if 0 - printf("::: %05d: new sequence\n", FrameCounter); -#endif - for (i = 0; i < MAX_PLAYERS; i++) tape.pos[tape.counter].action[i] = action[i]; @@ -853,11 +628,6 @@ void TapeTogglePause(boolean toggle_manual) { int state = 0; -#if 0 - if (!tape.recording && !tape.playing) - return; -#endif - if (tape.pause_before_death) state |= VIDEO_STATE_PBEND_OFF; else if (tape.fast_forward) @@ -878,11 +648,6 @@ void TapeTogglePause(boolean toggle_manual) DrawVideoDisplay(state, 0); -#if 0 - if (tape.pausing) - DrawVideoDisplay(VIDEO_STATE_PAUSE_ON, 0); -#endif - if (tape.warp_forward) { TapeStopWarpForward(); @@ -892,9 +657,6 @@ void TapeTogglePause(boolean toggle_manual) tape.quick_resume = FALSE; TapeAppendRecording(); -#if 0 - TapeTogglePause(toggle_manual); -#endif } } } @@ -931,11 +693,6 @@ static void TapeStartGamePlaying() void TapeStopPlaying() { -#if 0 - if (!tape.playing) - return; -#endif - tape.playing = FALSE; tape.pausing = FALSE; @@ -1028,22 +785,11 @@ byte *TapePlayAction() tape.delay_played = 0; } -#if 0 - printf("::: %05d: replaying action: %d\n", FrameCounter, action[0]); -#endif - return action; } void TapeStop() { -#if 0 - if (tape.recording) - printf("::: stopped recording: %d\n", FrameCounter); - else if (tape.playing) - printf("::: stopped playing: %d\n\n", FrameCounter); -#endif - TapeStopRecording(); TapeStopPlaying(); @@ -1079,7 +825,6 @@ static void TapeStartWarpForward() { tape.warp_forward = TRUE; -#if 1 if (!tape.fast_forward && !tape.pause_before_death) { tape.pausing = FALSE; @@ -1087,15 +832,6 @@ static void TapeStartWarpForward() TapeDeactivateDisplayOn(); } -#else - if (!tape.fast_forward || tape.pause_before_death) - { - tape.pausing = FALSE; - tape.deactivate_display = TRUE; - - TapeDeactivateDisplayOn(); - } -#endif if (tape.fast_forward || tape.pause_before_death) DrawVideoDisplay(VIDEO_STATE_WARP_ON, VIDEO_DISPLAY_SYMBOL_ONLY); @@ -1112,16 +848,6 @@ static void TapeStopWarpForward() TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING); -#if 0 -#if 1 - if (game_status == GAME_MODE_PLAYING) -#endif - { - RedrawPlayfield(TRUE, 0,0,0,0); - DrawGameDoorValues(); - } -#endif - if (tape.pause_before_death) state |= VIDEO_STATE_WARP_OFF | VIDEO_STATE_PBEND_ON; else if (tape.fast_forward) @@ -1310,11 +1036,8 @@ void AutoPlayTape() #endif LoadSolutionTape(level_nr); -#if 1 + if (tape.no_valid_file) -#else - if (TAPE_IS_EMPTY(tape)) -#endif { num_tape_missing++; if (level_nr >= 0 && level_nr < MAX_TAPES_PER_SET) @@ -1543,15 +1266,6 @@ static void HandleTapeButtons(struct GadgetInfo *gi) else /* WARP FORWARD PLAY -> PLAY */ { TapeStopWarpForward(); - -#if 0 - if (tape.pause_before_death) - DrawVideoDisplay(VIDEO_STATE_WARP_OFF | VIDEO_STATE_PLAY_ON, 0); - else if (tape.fast_forward) - DrawVideoDisplay(VIDEO_STATE_WARP_OFF | VIDEO_STATE_FFWD_ON, 0); - else - DrawVideoDisplay(VIDEO_STATE_WARP_OFF | VIDEO_STATE_PBEND_ON, 0); -#endif } } else if (tape.recording) @@ -1600,28 +1314,17 @@ static void HandleTapeButtons(struct GadgetInfo *gi) else if (!tape.pause_before_death) /* FFWD PLAY -> AUTO PAUSE */ { tape.pause_before_death = TRUE; -#if 1 DrawVideoDisplay(VIDEO_STATE_FFWD_OFF | VIDEO_STATE_PBEND_ON, 0); -#else - DrawVideoDisplay(VIDEO_STATE_PBEND_ON, VIDEO_DISPLAY_LABEL_ONLY); -#endif } else /* AUTO PAUSE -> NORMAL PLAY */ { -#if 1 if (tape.warp_forward) TapeStopWarpForward(); -#else - tape.warp_forward = FALSE; -#endif + tape.fast_forward = FALSE; tape.pause_before_death = FALSE; -#if 1 DrawVideoDisplay(VIDEO_STATE_PBEND_OFF | VIDEO_STATE_PLAY_ON, 0); -#else - DrawVideoDisplay(VIDEO_STATE_FFWD_OFF | VIDEO_STATE_PBEND_OFF, 0); -#endif } } break; diff --git a/src/tools.c b/src/tools.c index 883a670f..0f5aadab 100644 --- a/src/tools.c +++ b/src/tools.c @@ -256,8 +256,8 @@ void BackToFront() { BlitBitmap(buffer, window, fx, fy, SXSIZE, SYSIZE, SX, SY); -#ifdef DEBUG #if 0 +#ifdef DEBUG printf("redrawing all (ScreenGfxPos == %d) because %s\n", ScreenGfxPos, (setup.soft_scrolling ? @@ -281,32 +281,7 @@ void BackToFront() BlitBitmap(backbuffer, window, DX, DY, DXSIZE, DYSIZE, DX, DY); if (redraw_mask & REDRAW_DOOR_2) - { -#if 0 - if ((redraw_mask & REDRAW_DOOR_2) == REDRAW_DOOR_2) -#endif - BlitBitmap(backbuffer, window, VX, VY, VXSIZE, VYSIZE, VX, VY); -#if 0 - else - { - if (redraw_mask & REDRAW_VIDEO_1) - BlitBitmap(backbuffer, window, - VX + VIDEO_DISPLAY1_XPOS, VY + VIDEO_DISPLAY1_YPOS, - VIDEO_DISPLAY_XSIZE, VIDEO_DISPLAY_YSIZE, - VX + VIDEO_DISPLAY1_XPOS, VY + VIDEO_DISPLAY1_YPOS); - if (redraw_mask & REDRAW_VIDEO_2) - BlitBitmap(backbuffer, window, - VX + VIDEO_DISPLAY2_XPOS, VY + VIDEO_DISPLAY2_YPOS, - VIDEO_DISPLAY_XSIZE, VIDEO_DISPLAY_YSIZE, - VX + VIDEO_DISPLAY2_XPOS, VY + VIDEO_DISPLAY2_YPOS); - if (redraw_mask & REDRAW_VIDEO_3) - BlitBitmap(backbuffer, window, - VX + VIDEO_CONTROL_XPOS, VY + VIDEO_CONTROL_YPOS, - VIDEO_CONTROL_XSIZE, VIDEO_CONTROL_YSIZE, - VX + VIDEO_CONTROL_XPOS, VY + VIDEO_CONTROL_YPOS); - } -#endif - } + BlitBitmap(backbuffer, window, VX, VY, VXSIZE, VYSIZE, VX, VY); if (redraw_mask & REDRAW_DOOR_3) BlitBitmap(backbuffer, window, EX, EY, EXSIZE, EYSIZE, EX, EY); @@ -534,28 +509,18 @@ inline void getGraphicSourceExt(int graphic, int frame, Bitmap **bitmap, if (g->offset_y == 0) /* frames are ordered horizontally */ { int max_width = g->anim_frames_per_line * g->width; -#if 1 int pos = (src_y / g->height) * max_width + src_x + frame * g->offset_x; *x = pos % max_width; *y = src_y % g->height + pos / max_width * g->height; -#else - *x = (src_x + frame * g->offset_x) % max_width; - *y = src_y + (src_x + frame * g->offset_x) / max_width * g->height; -#endif } else if (g->offset_x == 0) /* frames are ordered vertically */ { int max_height = g->anim_frames_per_line * g->height; -#if 1 int pos = (src_x / g->width) * max_height + src_y + frame * g->offset_y; *x = src_x % g->width + pos / max_height * g->width; *y = pos % max_height; -#else - *x = src_x + (src_y + frame * g->offset_y) / max_height * g->width; - *y = (src_y + frame * g->offset_y) % max_height; -#endif } else /* frames are ordered diagonally */ { @@ -816,12 +781,6 @@ inline static void DrawGraphicShiftedDouble(int x, int y, int dx, int dy, MarkTileDirty(x2, y2); } - -#if 0 - printf("::: DONE DrawGraphicShiftedDouble"); - BackToFront(); - Delay(1000); -#endif } static void DrawGraphicShifted(int x, int y, int dx, int dy, @@ -946,11 +905,7 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) int sx = SCREENX(x), sy = SCREENY(y); int element; int width, height, cx, cy, i; -#if 1 int crumbled_border_size = graphic_info[graphic].border_size; -#else - int snip = TILEX / 8; /* number of border pixels from "crumbled graphic" */ -#endif static int xy[4][2] = { { 0, -1 }, @@ -959,12 +914,6 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) { 0, +1 } }; -#if 0 - if (x == 0 && y == 7) - printf("::: %d, %d [%d]\n", GfxElement[x][y], Feld[x][y], - crumbled_border_size); -#endif - if (!IN_LEV_FIELD(x, y)) return; @@ -983,24 +932,13 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) int xx = x + xy[i][0]; int yy = y + xy[i][1]; -#if 1 element = (IN_LEV_FIELD(xx, yy) ? TILE_GFX_ELEMENT(xx, yy) : BorderElement); -#else - element = (IN_LEV_FIELD(xx, yy) ? Feld[xx][yy] : BorderElement); -#endif /* check if neighbour field is of same type */ if (GFX_CRUMBLED(element) && !IS_MOVING(xx, yy)) continue; -#if 0 - if (Feld[x][y] == EL_CUSTOM_START + 123) - printf("::: crumble [%d] THE CHAOS ENGINE (%d, %d): %d, %d\n", - i, Feld[x][y], element, - GFX_CRUMBLED(element), IS_MOVING(x, y)); -#endif - if (i == 1 || i == 2) { width = crumbled_border_size; @@ -1024,10 +962,6 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) } else /* crumble neighbour fields */ { -#if 0 - getGraphicSource(graphic, frame, &src_bitmap, &src_x, &src_y); -#endif - for (i = 0; i < 4; i++) { int xx = x + xy[i][0]; @@ -1053,12 +987,10 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) continue; #endif -#if 1 graphic = el_act2crm(Feld[xx][yy], ACTION_DEFAULT); crumbled_border_size = graphic_info[graphic].border_size; getGraphicSource(graphic, frame, &src_bitmap, &src_x, &src_y); -#endif if (i == 1 || i == 2) { @@ -1085,7 +1017,6 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) void DrawLevelFieldCrumbledSand(int x, int y) { -#if 1 int graphic; if (!IN_LEV_FIELD(x, y)) @@ -1094,21 +1025,13 @@ void DrawLevelFieldCrumbledSand(int x, int y) graphic = el_act2crm(Feld[x][y], ACTION_DEFAULT); DrawLevelFieldCrumbledSandExt(x, y, graphic, 0); -#else - DrawLevelFieldCrumbledSandExt(x, y, IMG_SAND_CRUMBLED, 0); -#endif } void DrawLevelFieldCrumbledSandDigging(int x, int y, int direction, int step_frame) { -#if 1 int graphic1 = el_act_dir2img(GfxElement[x][y], ACTION_DIGGING, direction); int graphic2 = el_act_dir2crm(GfxElement[x][y], ACTION_DIGGING, direction); -#else - int graphic1 = el_act_dir2img(EL_SAND, ACTION_DIGGING, direction); - int graphic2 = el_act_dir2img(EL_SAND_CRUMBLED, ACTION_DIGGING, direction); -#endif int frame1 = getGraphicAnimationFrame(graphic1, step_frame); int frame2 = getGraphicAnimationFrame(graphic2, step_frame); int sx = SCREENX(x), sy = SCREENY(y); @@ -1365,13 +1288,8 @@ void DrawEnvelopeBackground(int envelope_nr, int startx, int starty, void AnimateEnvelope(int envelope_nr, int anim_mode, int action) { int graphic = IMG_BACKGROUND_ENVELOPE_1 + envelope_nr; -#if 1 Bitmap *src_bitmap = graphic_info[graphic].bitmap; int mask_mode = (src_bitmap != NULL ? BLIT_MASKED : BLIT_ON_BACKGROUND); -#else - boolean draw_masked = graphic_info[graphic].draw_masked; - int mask_mode = (draw_masked ? BLIT_MASKED : BLIT_ON_BACKGROUND); -#endif boolean ffwd_delay = (tape.playing && tape.fast_forward); boolean no_delay = (tape.warp_forward); unsigned long anim_delay = 0; @@ -1567,8 +1485,6 @@ static void DrawMicroLevelLabelExt(int mode) max_len_label_text = SXSIZE / getFontWidth(font_nr); -#if 1 - for (i = 0; i < max_len_label_text; i++) label_text[i] = ' '; label_text[max_len_label_text] = '\0'; @@ -1581,12 +1497,6 @@ static void DrawMicroLevelLabelExt(int mode) DrawText(lxpos, lypos, label_text, font_nr); } -#else - - DrawBackground(SX, MICROLABEL2_YPOS, SXSIZE, getFontHeight(font_nr)); - -#endif - strncpy(label_text, (mode == MICROLABEL_LEVEL_NAME ? level.name : mode == MICROLABEL_LEVEL_AUTHOR_HEAD ? "created by" : @@ -1770,13 +1680,9 @@ void DrawLevelGraphicAnimation(int x, int y, int graphic) void DrawLevelElementAnimation(int x, int y, int element) { -#if 1 int graphic = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]); DrawGraphicAnimation(SCREENX(x), SCREENY(y), graphic); -#else - DrawGraphicAnimation(SCREENX(x), SCREENY(y), el2img(element)); -#endif } inline void DrawLevelGraphicAnimationIfNeeded(int x, int y, int graphic) @@ -1873,13 +1779,6 @@ void DrawPlayer(struct PlayerInfo *player) int jx = player->jx; int jy = player->jy; int move_dir = player->MovDir; -#if 0 - int last_jx = player->last_jx; - int last_jy = player->last_jy; - int next_jx = jx + (jx - last_jx); - int next_jy = jy + (jy - last_jy); - boolean player_is_moving = (last_jx != jx || last_jy != jy ? TRUE : FALSE); -#else int dx = (move_dir == MV_LEFT ? -1 : move_dir == MV_RIGHT ? +1 : 0); int dy = (move_dir == MV_UP ? -1 : move_dir == MV_DOWN ? +1 : 0); int last_jx = (player->is_moving ? jx - dx : jx); @@ -1887,7 +1786,6 @@ void DrawPlayer(struct PlayerInfo *player) int next_jx = jx + dx; int next_jy = jy + dy; boolean player_is_moving = (player->MovPos ? TRUE : FALSE); -#endif int sx = SCREENX(jx), sy = SCREENY(jy); int sxx = 0, syy = 0; int element = Feld[jx][jy], last_element = Feld[last_jx][last_jy]; @@ -1927,11 +1825,7 @@ void DrawPlayer(struct PlayerInfo *player) /* draw things in the field the player is leaving, if needed */ /* ----------------------------------------------------------------------- */ -#if 1 if (player->is_moving) -#else - if (player_is_moving) -#endif { if (Back[last_jx][last_jy] && IS_DRAWABLE(last_element)) { @@ -1994,8 +1888,6 @@ void DrawPlayer(struct PlayerInfo *player) /* draw player himself */ /* ----------------------------------------------------------------------- */ -#if 1 - graphic = getPlayerGraphic(player, move_dir); /* in the case of changed player action or direction, prevent the current @@ -2003,29 +1895,6 @@ void DrawPlayer(struct PlayerInfo *player) if (player->Frame == 0 && equalGraphics(graphic, last_player_graphic)) player->Frame = last_player_frame; -#else - - if (player->use_murphy_graphic) - { - static int last_horizontal_dir = MV_LEFT; - - if (move_dir == MV_LEFT || move_dir == MV_RIGHT) - last_horizontal_dir = move_dir; - - graphic = el_act_dir2img(EL_SP_MURPHY, player->GfxAction, move_dir); - - if (graphic == IMG_SP_MURPHY) /* undefined => use special graphic */ - { - int direction = (player->is_snapping ? move_dir : last_horizontal_dir); - - graphic = el_act_dir2img(EL_SP_MURPHY, player->GfxAction, direction); - } - } - else - graphic = el_act_dir2img(player->element_nr, player->GfxAction, move_dir); - -#endif - frame = getGraphicAnimationFrame(graphic, player->Frame); if (player->GfxPos) @@ -2060,23 +1929,12 @@ void DrawPlayer(struct PlayerInfo *player) player->is_moving, player_is_moving); #endif -#if 1 if (player->is_pushing && player->is_moving) -#else - if (player->is_pushing && player_is_moving) -#endif { -#if 1 int px = SCREENX(jx), py = SCREENY(jy); int pxx = (TILEX - ABS(sxx)) * dx; int pyy = (TILEY - ABS(syy)) * dy; -#else - int px = SCREENX(next_jx), py = SCREENY(next_jy); - int pxx = sxx; - int pyy = syy; -#endif -#if 1 int graphic; int frame; @@ -2092,34 +1950,6 @@ void DrawPlayer(struct PlayerInfo *player) /* masked drawing is needed for EMC style (double) movement graphics */ DrawGraphicShiftedThruMask(px, py, pxx, pyy, graphic, frame, NO_CUTTING); - -#else - if (Back[next_jx][next_jy]) - DrawLevelElement(next_jx, next_jy, Back[next_jx][next_jy]); - - if ((pxx || pyy) && element == EL_SOKOBAN_OBJECT) - DrawGraphicShiftedThruMask(px, py, pxx, pyy, IMG_SOKOBAN_OBJECT, 0, - NO_CUTTING); - else - { - int element = MovingOrBlocked2Element(next_jx, next_jy); - int graphic = el_act_dir2img(element, ACTION_PUSHING, move_dir); -#if 1 - int frame = getGraphicAnimationFrame(graphic, player->StepFrame); -#else - int frame = getGraphicAnimationFrame(graphic, player->Frame); -#endif - -#if 1 - /* masked drawing is needed for EMC style (double) movement graphics */ - DrawGraphicShiftedThruMask(px, py, pxx, pyy, graphic, frame, - NO_CUTTING); -#else - DrawGraphicShifted(px, py, pxx, pyy, graphic, frame, - NO_CUTTING, NO_MASKING); -#endif - } -#endif } /* ----------------------------------------------------------------------- */ @@ -2161,7 +1991,6 @@ void DrawPlayer(struct PlayerInfo *player) DrawLevelFieldThruMask(last_jx, last_jy); } -#if 1 /* do not redraw accessible elements if the player is just pushing them */ if (!player_is_moving || !player->is_pushing) { @@ -2172,22 +2001,6 @@ void DrawPlayer(struct PlayerInfo *player) DrawLevelFieldThruMask(jx, jy); } -#else - -#if 0 - /* !!! I have forgotton what this should be good for !!! */ - /* !!! causes player being visible when pushing from within tubes !!! */ - if (!player->is_pushing) -#endif - { - /* ... and the field the player is entering */ - if (IS_ACCESSIBLE_INSIDE(element)) - DrawLevelField(jx, jy); - else if (IS_ACCESSIBLE_UNDER(element)) - DrawLevelFieldThruMask(jx, jy); - } -#endif - if (setup.direct_draw) { int dst_x = SX + SCREENX(MIN(jx, last_jx)) * TILEX; @@ -2278,21 +2091,15 @@ boolean Request(char *text, unsigned int req_state) } } -#if 1 if (game_status == GAME_MODE_PLAYING && level.game_engine_type == GAME_ENGINE_TYPE_EM) BlitScreenToBitmap_EM(backbuffer); -#endif -#if 1 /* disable deactivated drawing when quick-loading level tape recording */ if (tape.playing && tape.deactivate_display) TapeDeactivateDisplayOff(TRUE); -#endif -#if 1 SetMouseCursor(CURSOR_DEFAULT); -#endif #if defined(NETWORK_AVALIABLE) /* pause network game while waiting for request to answer */ @@ -2387,10 +2194,6 @@ boolean Request(char *text, unsigned int req_state) OpenDoor(DOOR_OPEN_1); -#if 0 - ClearEventQueue(); -#endif - if (!(req_state & REQUEST_WAIT_FOR_INPUT)) { SetDrawBackgroundMask(REDRAW_FIELD); @@ -2407,10 +2210,6 @@ boolean Request(char *text, unsigned int req_state) SetDrawBackgroundMask(REDRAW_FIELD | REDRAW_DOOR_1); -#if 0 - SetMouseCursor(CURSOR_DEFAULT); -#endif - while (result < 0) { if (PendingEvent()) @@ -2552,11 +2351,9 @@ boolean Request(char *text, unsigned int req_state) SendToServer_ContinuePlaying(); #endif -#if 1 /* restore deactivated drawing when quick-loading level tape recording */ if (tape.playing && tape.deactivate_display) TapeDeactivateDisplayOn(); -#endif return result; } @@ -2648,11 +2445,6 @@ unsigned int MoveDoor(unsigned int door_state) { stepsize = 20; /* must be choosen to always draw last frame */ door_delay_value = 0; - -#if 0 - StopSound(SND_DOOR_OPENING); - StopSound(SND_DOOR_CLOSING); -#endif } if (global.autoplay_leveldir) @@ -2853,14 +2645,6 @@ unsigned int MoveDoor(unsigned int door_state) } } -#if 0 - if (setup.quick_doors) - { - StopSound(SND_DOOR_OPENING); - StopSound(SND_DOOR_CLOSING); - } -#endif - if (door_state & DOOR_ACTION_1) door1 = door_state & DOOR_ACTION_1; if (door_state & DOOR_ACTION_2) @@ -3073,8 +2857,6 @@ static void HandleToolButtons(struct GadgetInfo *gi) request_gadget_id = gi->custom_id; } -#if 1 - static struct Mapping_EM_to_RND_object { int element_em; @@ -4942,7 +4724,7 @@ int map_element_EM_to_RND(int element_em) return EL_UNKNOWN; } -#else +#if 0 int map_element_RND_to_EM(int element_rnd) { @@ -5990,7 +5772,6 @@ void InitGraphicInfo_EM(void) getGraphicSourceExt(graphic, frame, &src_bitmap, &src_x, &src_y, g->double_movement && is_backside); -#if 1 g_em->bitmap = src_bitmap; g_em->src_x = src_x; g_em->src_y = src_y; @@ -6008,13 +5789,6 @@ void InitGraphicInfo_EM(void) g_em->has_crumbled_graphics = FALSE; g_em->preserve_background = FALSE; -#endif - -#if 0 - if (effective_element == EL_EMC_GRASS && - effective_action == ACTION_DIGGING) - printf("::: %d\n", crumbled); -#endif #if 0 if (has_crumbled_graphics && crumbled == IMG_EMPTY_SPACE) @@ -6037,7 +5811,6 @@ void InitGraphicInfo_EM(void) g_em->crumbled_border_size = graphic_info[crumbled].border_size; } -#if 1 if (!g->double_movement && (effective_action == ACTION_FALLING || effective_action == ACTION_MOVING || effective_action == ACTION_PUSHING)) @@ -6087,77 +5860,6 @@ void InitGraphicInfo_EM(void) g_em->height = TILEY - cy * step; } -#if 0 - if (effective_action == ACTION_SMASHED_BY_ROCK && - element_info[effective_element].graphic[effective_action] == - element_info[effective_element].graphic[ACTION_DEFAULT]) - { - int move_dir = MV_DOWN; - int dx = (move_dir == MV_LEFT ? -1 : move_dir == MV_RIGHT ? 1 : 0); - int dy = (move_dir == MV_UP ? -1 : move_dir == MV_DOWN ? 1 : 0); - int num_steps = 8; - int cx = ABS(dx) * (TILEX / num_steps); - int cy = ABS(dy) * (TILEY / num_steps); - int step_frame = j + 1; - int step = (is_backside ? step_frame : num_steps - step_frame); - - graphic = (el_act_dir2img(EL_ROCK, ACTION_FALLING, MV_DOWN)); - g = &graphic_info[graphic]; - sync_frame = j; - frame = getAnimationFrame(g->anim_frames, - g->anim_delay, - g->anim_mode, - g->anim_start_frame, - sync_frame); - getGraphicSourceExt(graphic, frame, &src_bitmap, &src_x, &src_y, - g->double_movement && is_backside); - - g_em->bitmap = src_bitmap; - g_em->src_x = src_x; - g_em->src_y = src_y; - g_em->src_offset_x = 0; - g_em->src_offset_y = 0; - g_em->dst_offset_x = 0; - g_em->dst_offset_y = 0; - - if (is_backside) /* tile where movement starts */ - { - if (dx < 0 || dy < 0) - { - g_em->src_offset_x = cx * step; - g_em->src_offset_y = cy * step; - } - else - { - g_em->dst_offset_x = cx * step; - g_em->dst_offset_y = cy * step; - } - } - else /* tile where movement ends */ - { - if (dx < 0 || dy < 0) - { - g_em->dst_offset_x = cx * step; - g_em->dst_offset_y = cy * step; - } - else - { - g_em->src_offset_x = cx * step; - g_em->src_offset_y = cy * step; - } - } - - g_em->width = TILEX - cx * step; - g_em->height = TILEY - cy * step; - -#if 0 - printf("::: -> '%s'\n", element_info[effective_element].token_name); -#endif - } -#endif - -#endif - /* create unique graphic identifier to decide if tile must be redrawn */ /* bit 31 - 16 (16 bit): EM style element bit 15 - 12 ( 4 bit): EM style frame @@ -6229,7 +5931,6 @@ void InitGraphicInfo_EM(void) } } -#if 1 for (i = 0; i < TILE_MAX; i++) { for (j = 0; j < 8; j++) @@ -6259,7 +5960,6 @@ void InitGraphicInfo_EM(void) } } } -#endif for (p = 0; p < 2; p++) { @@ -6297,7 +5997,6 @@ void InitGraphicInfo_EM(void) getGraphicSourceExt(graphic, frame, &src_bitmap, &src_x,&src_y, FALSE); -#if 1 g_em->bitmap = src_bitmap; g_em->src_x = src_x; g_em->src_y = src_y; @@ -6307,7 +6006,6 @@ void InitGraphicInfo_EM(void) g_em->dst_offset_y = 0; g_em->width = TILEX; g_em->height = TILEY; -#endif #if DEBUG_EM_GFX if (g_em->bitmap != debug_bitmap ||