return ly;
}
+static int getLevelFromScreenX_MM(int sx)
+{
+ int level_xsize = level.native_mm_level->fieldx;
+ int full_xsize = level_xsize * TILESIZE_VAR;
+
+ sx -= (full_xsize < SXSIZE ? (SXSIZE - full_xsize) / 2 : 0);
+
+ int px = sx - SX;
+ int lx = px / TILESIZE_VAR;
+
+ return lx;
+}
+
+static int getLevelFromScreenY_MM(int sy)
+{
+ int level_ysize = level.native_mm_level->fieldy;
+ int full_ysize = level_ysize * TILESIZE_VAR;
+
+ sy -= (full_ysize < SYSIZE ? (SYSIZE - full_ysize) / 2 : 0);
+
+ int py = sy - SY;
+ int ly = py / TILESIZE_VAR;
+
+ return ly;
+}
+
int getLevelFromScreenX(int x)
{
if (level.game_engine_type == GAME_ENGINE_TYPE_EM)
return getLevelFromScreenX_EM(x);
if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
return getLevelFromScreenX_SP(x);
+ if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+ return getLevelFromScreenX_MM(x);
else
return getLevelFromScreenX_RND(x);
}
return getLevelFromScreenY_EM(y);
if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
return getLevelFromScreenY_SP(y);
+ if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+ return getLevelFromScreenY_MM(y);
else
return getLevelFromScreenY_RND(y);
}
RedrawPlayfield_EM(TRUE);
else if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
RedrawPlayfield_SP(TRUE);
+ else if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+ RedrawPlayfield_MM();
else if (level.game_engine_type == GAME_ENGINE_TYPE_RND)
RedrawPlayfield_RND();
BlitScreenToBitmap_EM(target_bitmap);
else if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
BlitScreenToBitmap_SP(target_bitmap);
+ else if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+ BlitScreenToBitmap_MM(target_bitmap);
else if (level.game_engine_type == GAME_ENGINE_TYPE_RND)
BlitScreenToBitmap_RND(target_bitmap);
}
}
+int map_element_RND_to_MM(int element_rnd)
+{
+ return (element_rnd >= EL_MM_START_1 &&
+ element_rnd <= EL_MM_END_1 ?
+ EL_MM_START_1_NATIVE + element_rnd - EL_MM_START_1 :
+
+ element_rnd >= EL_MM_START_2 &&
+ element_rnd <= EL_MM_END_2 ?
+ EL_MM_START_2_NATIVE + element_rnd - EL_MM_START_2 :
+
+ element_rnd >= EL_CHAR_START &&
+ element_rnd <= EL_CHAR_END ?
+ EL_MM_CHAR_START_NATIVE + element_rnd - EL_CHAR_START :
+
+ element_rnd >= EL_MM_RUNTIME_START &&
+ element_rnd <= EL_MM_RUNTIME_END ?
+ EL_MM_RUNTIME_START_NATIVE + element_rnd - EL_MM_RUNTIME_START :
+
+ element_rnd >= EL_MM_DUMMY_START &&
+ element_rnd <= EL_MM_DUMMY_END ?
+ EL_MM_DUMMY_START_NATIVE + element_rnd - EL_MM_DUMMY_START :
+
+ EL_MM_EMPTY_NATIVE);
+}
+
+int map_element_MM_to_RND(int element_mm)
+{
+ return (element_mm == EL_MM_EMPTY_NATIVE ||
+ element_mm == EL_DF_EMPTY_NATIVE ?
+ EL_EMPTY :
+
+ element_mm >= EL_MM_START_1_NATIVE &&
+ element_mm <= EL_MM_END_1_NATIVE ?
+ EL_MM_START_1 + element_mm - EL_MM_START_1_NATIVE :
+
+ element_mm >= EL_MM_START_2_NATIVE &&
+ element_mm <= EL_MM_END_2_NATIVE ?
+ EL_MM_START_2 + element_mm - EL_MM_START_2_NATIVE :
+
+ element_mm >= EL_MM_CHAR_START_NATIVE &&
+ element_mm <= EL_MM_CHAR_END_NATIVE ?
+ EL_CHAR_START + element_mm - EL_MM_CHAR_START_NATIVE :
+
+ element_mm >= EL_MM_RUNTIME_START_NATIVE &&
+ element_mm <= EL_MM_RUNTIME_END_NATIVE ?
+ EL_MM_RUNTIME_START + element_mm - EL_MM_RUNTIME_START_NATIVE :
+
+ element_mm >= EL_MM_DUMMY_START_NATIVE &&
+ element_mm <= EL_MM_DUMMY_END_NATIVE ?
+ EL_MM_DUMMY_START + element_mm - EL_MM_DUMMY_START_NATIVE :
+
+ EL_EMPTY);
+}
+
int get_next_element(int element)
{
switch (element)
}
}
+int el2img_mm(int element_mm)
+{
+ return el2img(map_element_MM_to_RND(element_mm));
+}
+
int el_act_dir2img(int element, int action, int direction)
{
element = GFX_ELEMENT(element);
return InitEngineRandom_EM(seed);
else if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
return InitEngineRandom_SP(seed);
+ else if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+ return InitEngineRandom_MM(seed);
else
return InitEngineRandom_RND(seed);
}