ScreenMovPos = 0;
ScreenGfxPos = 0;
- if (level.high_speed)
- {
- MoveSpeed = 4;
- ScrollStepSize = TILEX/4;
- }
- else
- {
- MoveSpeed = 8;
- ScrollStepSize = TILEX/8;
- }
+ MoveSpeed = (level.double_speed ? 4 : 8);
+ ScrollStepSize = TILEX / MoveSpeed;
AllPlayersGone = FALSE;
SiebAktiv = FALSE;
SBY_Lower = lev_fieldy - SCR_FIELDY + 1;
}
- if (lev_fieldx < SCR_FIELDX)
+ if (lev_fieldx + (SBX_Left == -1 ? 2 : 0) <= SCR_FIELDX)
SBX_Left = SBX_Right = -1 * (SCR_FIELDX - lev_fieldx) / 2;
- if (lev_fieldy < SCR_FIELDY)
+ if (lev_fieldy + (SBY_Upper == -1 ? 2 : 0) <= SCR_FIELDY)
SBY_Upper = SBY_Lower = -1 * (SCR_FIELDY - lev_fieldy) / 2;
scroll_x = SBX_Left;
game_gadget[SOUND_CTRL_ID_LOOPS]->checked = setup.sound_loops;
game_gadget[SOUND_CTRL_ID_SIMPLE]->checked = setup.sound_simple;
MapGameButtons();
+ MapTapeButtons();
#endif
XCopyArea(display, drawto, pix[PIX_DB_DOOR], gc,
int num_phase = 9, delay = 2;
int last_phase = num_phase * delay;
int half_phase = (num_phase / 2) * delay;
+ int first_phase_after_start = EX_PHASE_START + 1;
if (phase == EX_PHASE_START) /* initialize 'Store[][]' field */
{
x = ex;
y = ey;
- Frame[x][y] = (phase<last_phase ? phase+1 : 0);
+ Frame[x][y] = (phase < last_phase ? phase + 1 : 0);
- if (phase == half_phase)
+ 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];
void CreateGameButtons()
{
- Pixmap gd_pixmap = pix[PIX_DOOR];
- struct GadgetInfo *gi;
- unsigned long event_mask;
int i;
for (i=0; i<NUM_GAME_BUTTONS; i++)
{
- int id = i;
- int gd_xoffset, gd_yoffset;
- int gd_x1, gd_x2, gd_y1, gd_y2;
+ Pixmap gd_pixmap = pix[PIX_DOOR];
+ struct GadgetInfo *gi;
int button_type;
boolean checked;
+ unsigned long event_mask;
+ int gd_xoffset, gd_yoffset;
+ int gd_x1, gd_x2, gd_y1, gd_y2;
+ int id = i;
gd_xoffset = gamebutton_info[i].x;
gd_yoffset = gamebutton_info[i].y;