-static void MauerAblegerStahl(int ax, int ay)
-{
- int element = Tile[ax][ay];
- int graphic = el2img(element);
- boolean oben_frei = FALSE, unten_frei = FALSE;
- boolean links_frei = FALSE, rechts_frei = FALSE;
- boolean oben_massiv = FALSE, unten_massiv = FALSE;
- boolean links_massiv = FALSE, rechts_massiv = FALSE;
- boolean new_wall = FALSE;
-
- if (IS_ANIMATED(graphic))
- DrawLevelGraphicAnimationIfNeeded(ax, ay, graphic);
-
- if (!MovDelay[ax][ay]) // start building new wall
- MovDelay[ax][ay] = 6;
-
- if (MovDelay[ax][ay]) // wait some time before building new wall
- {
- MovDelay[ax][ay]--;
- if (MovDelay[ax][ay])
- return;
- }
-
- if (IN_LEV_FIELD(ax, ay - 1) && IS_FREE(ax, ay - 1))
- oben_frei = TRUE;
- if (IN_LEV_FIELD(ax, ay + 1) && IS_FREE(ax, ay + 1))
- unten_frei = TRUE;
- if (IN_LEV_FIELD(ax - 1, ay) && IS_FREE(ax - 1, ay))
- links_frei = TRUE;
- if (IN_LEV_FIELD(ax + 1, ay) && IS_FREE(ax + 1, ay))
- rechts_frei = TRUE;
-
- if (element == EL_EXPANDABLE_STEELWALL_VERTICAL ||
- element == EL_EXPANDABLE_STEELWALL_ANY)
- {
- if (oben_frei)
- {
- Tile[ax][ay - 1] = EL_EXPANDABLE_STEELWALL_GROWING;
- Store[ax][ay - 1] = element;
- GfxDir[ax][ay - 1] = MovDir[ax][ay - 1] = MV_UP;
- if (IN_SCR_FIELD(SCREENX(ax), SCREENY(ay - 1)))
- DrawLevelGraphic(ax, ay - 1, IMG_EXPANDABLE_STEELWALL_GROWING_UP, 0);
- new_wall = TRUE;
- }
- if (unten_frei)
- {
- Tile[ax][ay + 1] = EL_EXPANDABLE_STEELWALL_GROWING;
- Store[ax][ay + 1] = element;
- GfxDir[ax][ay + 1] = MovDir[ax][ay + 1] = MV_DOWN;
- if (IN_SCR_FIELD(SCREENX(ax), SCREENY(ay + 1)))
- DrawLevelGraphic(ax, ay + 1, IMG_EXPANDABLE_STEELWALL_GROWING_DOWN, 0);
- new_wall = TRUE;
- }
- }
-
- if (element == EL_EXPANDABLE_STEELWALL_HORIZONTAL ||
- element == EL_EXPANDABLE_STEELWALL_ANY)
- {
- if (links_frei)
- {
- Tile[ax - 1][ay] = EL_EXPANDABLE_STEELWALL_GROWING;
- Store[ax - 1][ay] = element;
- GfxDir[ax - 1][ay] = MovDir[ax - 1][ay] = MV_LEFT;
- if (IN_SCR_FIELD(SCREENX(ax - 1), SCREENY(ay)))
- DrawLevelGraphic(ax - 1, ay, IMG_EXPANDABLE_STEELWALL_GROWING_LEFT, 0);
- new_wall = TRUE;
- }
-
- if (rechts_frei)
- {
- Tile[ax + 1][ay] = EL_EXPANDABLE_STEELWALL_GROWING;
- Store[ax + 1][ay] = element;
- GfxDir[ax + 1][ay] = MovDir[ax + 1][ay] = MV_RIGHT;
- if (IN_SCR_FIELD(SCREENX(ax + 1), SCREENY(ay)))
- DrawLevelGraphic(ax + 1, ay, IMG_EXPANDABLE_STEELWALL_GROWING_RIGHT, 0);
- new_wall = TRUE;
- }
- }
-
- if (!IN_LEV_FIELD(ax, ay - 1) || IS_WALL(Tile[ax][ay - 1]))
- oben_massiv = TRUE;
- if (!IN_LEV_FIELD(ax, ay + 1) || IS_WALL(Tile[ax][ay + 1]))
- unten_massiv = TRUE;
- if (!IN_LEV_FIELD(ax - 1, ay) || IS_WALL(Tile[ax - 1][ay]))
- links_massiv = TRUE;
- if (!IN_LEV_FIELD(ax + 1, ay) || IS_WALL(Tile[ax + 1][ay]))
- rechts_massiv = TRUE;
-
- if (((oben_massiv && unten_massiv) ||
- element == EL_EXPANDABLE_STEELWALL_HORIZONTAL) &&
- ((links_massiv && rechts_massiv) ||
- element == EL_EXPANDABLE_STEELWALL_VERTICAL))
- Tile[ax][ay] = EL_STEELWALL;
-
- if (new_wall)
- PlayLevelSoundAction(ax, ay, ACTION_GROWING);
-}
-