X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=671e2d89348b41c53c17935a534c29b757104735;hb=dbdefdcdfa0fa58296160ffc6b72fea58bea5c75;hp=b37667c1f4d334223400ebbfe87ad8d65c08cbf4;hpb=3dc317d10b44cc6b75db10ac194966ad8114d390;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index b37667c1..671e2d89 100644 --- a/src/tools.c +++ b/src/tools.c @@ -11,6 +11,9 @@ * tools.c * ***********************************************************/ +#include +#include + #ifdef __FreeBSD__ #include #endif @@ -25,8 +28,6 @@ #include "cartoons.h" #include "network.h" -#include - #ifdef MSDOS extern boolean wait_for_vsync; #endif @@ -281,9 +282,39 @@ void ClearWindow() redraw_mask |= REDRAW_FIELD; } -void DrawText(int x, int y, char *text, int font, int col) +void DrawTextFCentered(int y, int font_type, char *format, ...) +{ + char buffer[FULL_SXSIZE / FONT3_XSIZE + 10]; + int font_xsize; + va_list ap; + + font_xsize = (font_type < FC_SPECIAL1 ? FONT2_XSIZE : + font_type < FC_SPECIAL2 ? FONT3_XSIZE : FONT4_XSIZE); + + va_start(ap, format); + vsprintf(buffer, format, ap); + va_end(ap); + + DrawText(SX + (SXSIZE - strlen(buffer) * font_xsize) / 2, SY + y, + buffer, FS_SMALL, font_type); +} + +void DrawTextF(int x, int y, int font_type, char *format, ...) +{ + char buffer[FULL_SXSIZE / FONT3_XSIZE + 10]; + va_list ap; + + va_start(ap, format); + vsprintf(buffer, format, ap); + va_end(ap); + + DrawText(SX + x, SY + y, buffer, FS_SMALL, font_type); +} + +void DrawText(int x, int y, char *text, int font_size, int font_type) { - DrawTextExt(drawto, gc, x, y, text, font, col); + DrawTextExt(drawto, gc, x, y, text, font_size, font_type); + if (x < DX) redraw_mask |= REDRAW_FIELD; else if (y < VY) @@ -291,23 +322,23 @@ void DrawText(int x, int y, char *text, int font, int col) } void DrawTextExt(Drawable d, GC gc, int x, int y, - char *text, int font, int font_color) + char *text, int font_size, int font_type) { int font_width, font_height, font_start; int font_pixmap; - if (font != FS_SMALL && font != FS_BIG) - font = FS_SMALL; - if (font_color < FC_RED || font_color > FC_SPECIAL2) - font_color = FC_RED; - - font_width = (font == FS_BIG ? FONT1_XSIZE : - font_color < FC_SPECIAL1 ? FONT2_XSIZE : - font_color < FC_SPECIAL2 ? FONT3_XSIZE : FONT4_XSIZE); - font_height = (font == FS_BIG ? FONT1_XSIZE : - font_color < FC_SPECIAL2 ? FONT2_XSIZE : FONT4_XSIZE); - font_pixmap = (font == FS_BIG ? PIX_BIGFONT : PIX_SMALLFONT); - font_start = (font_color * (font == FS_BIG ? FONT1_YSIZE : FONT2_YSIZE) * + if (font_size != FS_SMALL && font_size != FS_BIG) + font_size = FS_SMALL; + if (font_type < FC_RED || font_type > FC_SPECIAL2) + font_type = FC_RED; + + font_width = (font_size == FS_BIG ? FONT1_XSIZE : + font_type < FC_SPECIAL1 ? FONT2_XSIZE : + font_type < FC_SPECIAL2 ? FONT3_XSIZE : FONT4_XSIZE); + font_height = (font_size == FS_BIG ? FONT1_XSIZE : + font_type < FC_SPECIAL2 ? FONT2_XSIZE : FONT4_XSIZE); + font_pixmap = (font_size == FS_BIG ? PIX_BIGFONT : PIX_SMALLFONT); + font_start = (font_type * (font_size == FS_BIG ? FONT1_YSIZE : FONT2_YSIZE) * FONT_LINES_PER_FONT); while(*text)