X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=84e79b3a3c5088834a09a6e741b3b5553053c737;hb=a8e936aa644b673bdd5d34c888acd92b562c82dc;hp=6597768de6f08e6a9451eef6c81a62b46659ff92;hpb=d0d2411a139b4ff6c5f9d2ba1df723ffbb0beeb8;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 6597768d..84e79b3a 100644 --- a/src/tools.c +++ b/src/tools.c @@ -227,7 +227,7 @@ void DumpTile(int x, int y) printf(" CustomValue: %d\n", CustomValue[x][y]); printf(" GfxElement: %d\n", GfxElement[x][y]); printf(" GfxAction: %d\n", GfxAction[x][y]); - printf(" GfxFrame: %d\n", GfxFrame[x][y]); + printf(" GfxFrame: %d [%d]\n", GfxFrame[x][y], FrameCounter); printf("\n"); } @@ -2276,19 +2276,25 @@ void DrawEnvelopeRequest(char *text) int border_size = request.border_size; int line_spacing = request.line_spacing; int line_height = font_height + line_spacing; - int text_width = request.width - 2 * border_size; - int text_height = request.height - 2 * border_size; - int line_length = text_width / font_width; - int max_lines = text_height / line_height; + int max_text_width = request.width - 2 * border_size; + int max_text_height = request.height - 2 * border_size; + int line_length = max_text_width / font_width; + int max_lines = max_text_height / line_height; + int text_width = line_length * font_width; int width = request.width; int height = request.height; - int tile_size = request.step_offset; + int tile_size = MAX(request.step_offset, 1); int x_steps = width / tile_size; int y_steps = height / tile_size; + int sx_offset = border_size; + int sy_offset = border_size; int sx, sy; int i, x, y; - if (request.wrap_single_words) + if (request.centered) + sx_offset = (request.width - text_width) / 2; + + if (request.wrap_single_words && !request.autowrap) { char *src_text_ptr, *dst_text_ptr; @@ -2328,7 +2334,7 @@ void DrawEnvelopeRequest(char *text) /* force DOOR font inside door area */ game_status = GAME_MODE_PSEUDO_DOOR; - DrawTextBuffer(sx + border_size, sy + border_size, text_final, font_nr, + DrawTextBuffer(sx + sx_offset, sy + sy_offset, text_final, font_nr, line_length, -1, max_lines, line_spacing, mask_mode, request.autowrap, request.centered, FALSE); @@ -2356,7 +2362,7 @@ void AnimateEnvelopeRequest(int anim_mode, int action) int anim_delay_value = (no_delay ? 0 : delay_value + 500 * 0) / 2; unsigned int anim_delay = 0; - int tile_size = request.step_offset; + int tile_size = MAX(request.step_offset, 1); int max_xsize = request.width / tile_size; int max_ysize = request.height / tile_size; int max_xsize_inner = max_xsize - 2;