{ -1, -1 }
};
+ static struct
+ {
+ int element;
+ int graphic_left;
+ int graphic_right;
+ int graphic_up;
+ int graphic_down;
+ }
+ element_to_direction_graphic[] =
+ {
+ {
+ EL_FLIEGER,
+ IMG_SPACESHIP_LEFT, IMG_SPACESHIP_RIGHT,
+ IMG_SPACESHIP_UP, IMG_SPACESHIP_DOWN
+ },
+ {
+ EL_KAEFER,
+ IMG_BUG_LEFT, IMG_BUG_RIGHT,
+ IMG_BUG_UP, IMG_BUG_DOWN
+ },
+ {
+ EL_PACMAN,
+ IMG_PACMAN_LEFT, IMG_PACMAN_RIGHT,
+ IMG_PACMAN_UP, IMG_PACMAN_DOWN
+ },
+ {
+ EL_SPIELER1,
+ IMG_PLAYER1_LEFT, IMG_PLAYER1_RIGHT,
+ IMG_PLAYER1_UP, IMG_PLAYER1_DOWN
+ },
+ {
+ EL_SPIELER2,
+ IMG_PLAYER2_LEFT, IMG_PLAYER2_RIGHT,
+ IMG_PLAYER2_UP, IMG_PLAYER2_DOWN
+ },
+ {
+ EL_SPIELER3,
+ IMG_PLAYER3_LEFT, IMG_PLAYER3_RIGHT,
+ IMG_PLAYER3_UP, IMG_PLAYER3_DOWN
+ },
+ {
+ EL_SPIELER4,
+ IMG_PLAYER4_LEFT, IMG_PLAYER4_RIGHT,
+ IMG_PLAYER4_UP, IMG_PLAYER4_DOWN
+ },
+ {
+ EL_SCHWEIN,
+ IMG_PIG_LEFT, IMG_PIG_RIGHT,
+ IMG_PIG_UP, IMG_PIG_DOWN
+ },
+ {
+ EL_DRACHE,
+ IMG_DRAGON_LEFT, IMG_DRAGON_RIGHT,
+ IMG_DRAGON_UP, IMG_DRAGON_DOWN
+ },
+ {
+ EL_MOLE,
+ IMG_MOLE_LEFT, IMG_MOLE_RIGHT,
+ IMG_MOLE_UP, IMG_MOLE_DOWN
+ },
+ {
+ EL_PINGUIN,
+ IMG_PENGUIN_LEFT, IMG_PENGUIN_RIGHT,
+ IMG_PENGUIN_UP, IMG_PENGUIN_DOWN
+ },
+ {
+ EL_SP_MURPHY,
+ IMG_SP_MURPHY_LEFT, IMG_SP_MURPHY_RIGHT,
+ IMG_SP_MURPHY_UP, IMG_SP_MURPHY_DOWN
+ },
+ {
+ EL_SP_SNIKSNAK,
+ IMG_SP_SNIKSNAK_LEFT, IMG_SP_SNIKSNAK_RIGHT,
+ IMG_SP_SNIKSNAK_UP, IMG_SP_SNIKSNAK_DOWN
+ },
+ {
+ -1,
+ -1, -1,
+ -1, -1
+ }
+ };
+
/* always start with reliable default values */
for(i=0; i<MAX_ELEMENTS; i++)
+ {
element_info[i].graphic = GFX_LEERRAUM;
+ element_info[i].has_direction_graphic = FALSE;
+ }
for (i=EL_CHAR_START; i<=EL_CHAR_END; i++)
element_info[i].graphic = GFX_CHAR_START + (i - EL_CHAR_START);
element_info[element].graphic = graphic;
i++;
}
+
+ /* this initializes special graphics for left/right/up/down directions */
+ i = 0;
+ while (element_to_direction_graphic[i].element > -1)
+ {
+ int element = element_to_direction_graphic[i].element;
+ int graphic_left = element_to_direction_graphic[i].graphic_left;
+ int graphic_right = element_to_direction_graphic[i].graphic_right;
+ int graphic_up = element_to_direction_graphic[i].graphic_up;
+ int graphic_down = element_to_direction_graphic[i].graphic_down;
+
+ element_info[element].direction_graphic[MV_BIT_LEFT] = graphic_left;
+ element_info[element].direction_graphic[MV_BIT_RIGHT] = graphic_right;
+ element_info[element].direction_graphic[MV_BIT_UP] = graphic_up;
+ element_info[element].direction_graphic[MV_BIT_DOWN] = graphic_down;
+
+ element_info[element].has_direction_graphic = TRUE;
+ i++;
+ }
}
static void InitGraphicInfo()
/* always start with reliable default values */
new_graphic_info[i].bitmap = getBitmapFromImageID(i);
- new_graphic_info[i].src_x = parameter[GFXARG_XPOS] * TILEX;
- new_graphic_info[i].src_y = parameter[GFXARG_YPOS] * TILEY;
- new_graphic_info[i].anim_frames = parameter[GFXARG_FRAMES];
- new_graphic_info[i].anim_delay = parameter[GFXARG_DELAY];
- new_graphic_info[i].anim_vertical = parameter[GFXARG_VERTICAL];
- new_graphic_info[i].anim_mode =
- (parameter[GFXARG_PINGPONG] ? ANIM_PINGPONG :
- parameter[GFXARG_REVERSE] ? ANIM_REVERSE : ANIM_NORMAL);
+ new_graphic_info[i].src_x = parameter[GFX_ARG_XPOS] * TILEX;
+ new_graphic_info[i].src_y = parameter[GFX_ARG_YPOS] * TILEY;
+
+ new_graphic_info[i].anim_frames = parameter[GFX_ARG_FRAMES];
+ new_graphic_info[i].anim_delay = parameter[GFX_ARG_DELAY];
if (new_graphic_info[i].anim_delay == 0) /* delay must be at least 1 */
new_graphic_info[i].anim_delay = 1;
+
+ /* basically, animation can be either normal or reverse direction */
+ if (parameter[GFX_ARG_REVERSE])
+ new_graphic_info[i].anim_mode = ANIM_REVERSE;
+ else
+ new_graphic_info[i].anim_mode = ANIM_NORMAL;
+
+ /* additionally, animation can be either pingpong or pingpong2 layout */
+ if (parameter[GFX_ARG_PINGPONG])
+ new_graphic_info[i].anim_mode |= ANIM_PINGPONG;
+ else if (parameter[GFX_ARG_PINGPONG2])
+ new_graphic_info[i].anim_mode |= ANIM_PINGPONG2;
+
+ /* animation synchronized with global frame counter, not move position */
+ new_graphic_info[i].anim_global_sync = parameter[GFX_ARG_GLOBAL_SYNC];
+
+ new_graphic_info[i].anim_vertical = parameter[GFX_ARG_VERTICAL];
}
#if 0
- printf("D> %d\n", image_files[GFX_BD_DIAMOND].parameter[GFXARG_NUM_FRAMES]);
- printf("W> %d\n", image_files[GFX_ROBOT_WHEEL].parameter[GFXARG_NUM_FRAMES]);
+ printf("D> %d\n", image_files[GFX_BD_DIAMOND].parameter[GFX_ARG_NUM_FRAMES]);
+ printf("W> %d\n", image_files[GFX_ROBOT_WHEEL].parameter[GFX_ARG_NUM_FRAMES]);
graphic_info[GFX_ABLENK].bitmap = getBitmapFromImageID(GFX_ROBOT_WHEEL);
graphic_info[GFX_ABLENK].src_x = 0;