X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flibgame%2Ftoons.c;h=855e54f74192ce194174007d061c10afba9f79e9;hb=921499c5e7fa7f2c760305d7ec007e4e4a965125;hp=fd2bb8e5cd3acdd5f890abf17b9aeae48a9f12a5;hpb=ee749a764df3dfa944c1f9de740ccbeb1cfdef40;p=rocksndiamonds.git diff --git a/src/libgame/toons.c b/src/libgame/toons.c index fd2bb8e5..855e54f7 100644 --- a/src/libgame/toons.c +++ b/src/libgame/toons.c @@ -69,6 +69,10 @@ int getAnimationFrame(int num_frames, int delay, int mode, int start_frame, else frame = gfx.anim_random_frame % num_frames; } + else if (mode & (ANIM_CE_VALUE | ANIM_CE_SCORE | ANIM_CE_DELAY)) + { + frame = sync_frame % num_frames; + } if (mode & ANIM_REVERSE) /* use reverse animation direction */ frame = num_frames - frame - 1; @@ -84,11 +88,11 @@ int getAnimationFrame(int num_frames, int delay, int mode, int start_frame, static int get_toon_direction(char *direction_string_raw) { char *direction_string = getStringToLower(direction_string_raw); - int direction = (strcmp(direction_string, "left") == 0 ? MV_LEFT : - strcmp(direction_string, "right") == 0 ? MV_RIGHT : - strcmp(direction_string, "up") == 0 ? MV_UP : - strcmp(direction_string, "down") == 0 ? MV_DOWN : - MV_NO_MOVING); + int direction = (strEqual(direction_string, "left") ? MV_LEFT : + strEqual(direction_string, "right") ? MV_RIGHT : + strEqual(direction_string, "up") ? MV_UP : + strEqual(direction_string, "down") ? MV_DOWN : + MV_NONE); free(direction_string); @@ -173,13 +177,13 @@ boolean AnimateToon(int toon_nr, boolean restart) { int pos_bottom = screen_info.height - anim->height; - if (strcmp(anim->position, "top") == 0) + if (strEqual(anim->position, "top")) pos_y = 0; - else if (strcmp(anim->position, "bottom") == 0) + else if (strEqual(anim->position, "bottom")) pos_y = pos_bottom; - else if (strcmp(anim->position, "upper") == 0) + else if (strEqual(anim->position, "upper")) pos_y = SimpleRND(pos_bottom / 2); - else if (strcmp(anim->position, "lower") == 0) + else if (strEqual(anim->position, "lower")) pos_y = pos_bottom / 2 + SimpleRND(pos_bottom / 2); else pos_y = SimpleRND(pos_bottom); @@ -201,9 +205,9 @@ boolean AnimateToon(int toon_nr, boolean restart) { int pos_right = screen_info.width - anim->width; - if (strcmp(anim->position, "left") == 0) + if (strEqual(anim->position, "left")) pos_x = 0; - else if (strcmp(anim->position, "right") == 0) + else if (strEqual(anim->position, "right")) pos_x = pos_right; else pos_x = SimpleRND(pos_right); @@ -306,7 +310,7 @@ void HandleAnimation(int mode) static int toon_nr = 0; int draw_mode; - if (!setup.toons) + if (!setup.toons || screen_info.num_toons == 0) return; /* this may happen after reloading graphics and redefining "num_toons" */