From 182d5d2eb52ad896c2d9b174a579c65673fbf1c0 Mon Sep 17 00:00:00 2001 From: nukeykt Date: Sun, 20 Oct 2019 00:43:39 +0900 Subject: [PATCH] Use screentext in viewDrawText --- source/blood/src/screentext.cpp | 2 +- source/blood/src/screentext.h | 58 ++++++++++++------------- source/blood/src/view.cpp | 76 ++++++++++++++++++++------------- 3 files changed, 77 insertions(+), 59 deletions(-) diff --git a/source/blood/src/screentext.cpp b/source/blood/src/screentext.cpp index f31b80227..f13ca4fd4 100644 --- a/source/blood/src/screentext.cpp +++ b/source/blood/src/screentext.cpp @@ -794,7 +794,6 @@ vec2_t G_ScreenText(const int32_t font, return size; } -#if 0 vec2_t G_ScreenTextShadow(int32_t sx, int32_t sy, const int32_t font, int32_t x, int32_t y, const int32_t z, const int32_t blockangle, const int32_t charangle, @@ -830,6 +829,7 @@ vec2_t G_ScreenTextShadow(int32_t sx, int32_t sy, return size; } +#if 0 void G_PrintGameText(int32_t tile, int32_t x, int32_t y, const char *t, int32_t s, int32_t p, int32_t o, int32_t x1, int32_t y1, int32_t x2, int32_t y2, diff --git a/source/blood/src/screentext.h b/source/blood/src/screentext.h index cceb29508..fb8340768 100644 --- a/source/blood/src/screentext.h +++ b/source/blood/src/screentext.h @@ -59,35 +59,35 @@ enum ScreenTextFlags_t { // TEXT_GRAYFONT = 0x00200000, }; -extern int32_t minitext_(int32_t x, int32_t y, const char *t, int32_t s, int32_t p, int32_t sb); -extern void menutext_(int32_t x, int32_t y, int32_t s, char const *t, int32_t o, int32_t f); -extern void captionmenutext(int32_t x, int32_t y, char const *t); -extern vec2_t gametext_(int32_t x, int32_t y, const char *t, int32_t s, int32_t p, int32_t o, int32_t a, int32_t f); -extern void gametext_simple(int32_t x, int32_t y, const char *t); -#define mpgametext_x (5<<16) -extern vec2_t mpgametext(int32_t x, int32_t y, char const * t, int32_t s, int32_t o, int32_t a, int32_t f); -extern vec2_t mpgametextsize(char const * t, int32_t f); -extern int32_t textsc(int32_t sc); - -#define minitextshade(x, y, t, s, p, sb) minitext_(x,y,t,s,p,sb) -#define minitext(x, y, t, p, sb) minitext_(x,y,t,0,p,sb) -#define menutext(x, y, t) menutext_((x), (y), 0, (t), 10|16, 0) -#define menutext_centeralign(x, y, t) menutext_((x), (y), 0, (t), 10|16, TEXT_XCENTER|TEXT_YCENTER) -#define menutext_center(y, t) menutext_(160<<16, (y)<<16, 0, (t), 10|16, TEXT_XCENTER) -#define gametext(x, y, t) gametext_simple((x)<<16, (y)<<16, (t)) -#define gametext_widenumber(x, y, t) gametext_((x)<<16, (y)<<16, (t), 0, MF_Bluefont.pal, 1024, 0, TEXT_GAMETEXTNUMHACK) -#define gametext_number(x, y, t) gametext_((x)<<16, (y)<<16, (t), 0, MF_Bluefont.pal, 0, 0, TEXT_GAMETEXTNUMHACK) -#define gametext_pal(x, y, t, p) gametext_((x)<<16, (y)<<16, (t), 0, (p), 0, 0, 0) -#define gametext_center(y, t) gametext_(160<<16, (y)<<16, (t), 0, MF_Bluefont.pal, 0, 0, TEXT_XCENTER) -#define gametext_center_number(y, t) gametext_(160<<16, (y)<<16, (t), 0, MF_Bluefont.pal, 0, 0, TEXT_XCENTER|TEXT_GAMETEXTNUMHACK) -#define gametext_center_shade(y, t, s) gametext_(160<<16, (y)<<16, (t), (s), MF_Bluefont.pal, 0, 0, TEXT_XCENTER) -#define gametext_center_shade_pal(y, t, s, p) gametext_(160<<16, (y)<<16, (t), (s), (p), 0, 0, TEXT_XCENTER) - -extern void G_PrintGameText(int32_t tile, int32_t x, int32_t y, const char *t, - int32_t s, int32_t p, int32_t o, - int32_t x1, int32_t y1, int32_t x2, int32_t y2, - int32_t z, int32_t a); - +//extern int32_t minitext_(int32_t x, int32_t y, const char *t, int32_t s, int32_t p, int32_t sb); +//extern void menutext_(int32_t x, int32_t y, int32_t s, char const *t, int32_t o, int32_t f); +//extern void captionmenutext(int32_t x, int32_t y, char const *t); +//extern vec2_t gametext_(int32_t x, int32_t y, const char *t, int32_t s, int32_t p, int32_t o, int32_t a, int32_t f); +//extern void gametext_simple(int32_t x, int32_t y, const char *t); +//#define mpgametext_x (5<<16) +//extern vec2_t mpgametext(int32_t x, int32_t y, char const * t, int32_t s, int32_t o, int32_t a, int32_t f); +//extern vec2_t mpgametextsize(char const * t, int32_t f); +//extern int32_t textsc(int32_t sc); +// +//#define minitextshade(x, y, t, s, p, sb) minitext_(x,y,t,s,p,sb) +//#define minitext(x, y, t, p, sb) minitext_(x,y,t,0,p,sb) +//#define menutext(x, y, t) menutext_((x), (y), 0, (t), 10|16, 0) +//#define menutext_centeralign(x, y, t) menutext_((x), (y), 0, (t), 10|16, TEXT_XCENTER|TEXT_YCENTER) +//#define menutext_center(y, t) menutext_(160<<16, (y)<<16, 0, (t), 10|16, TEXT_XCENTER) +//#define gametext(x, y, t) gametext_simple((x)<<16, (y)<<16, (t)) +//#define gametext_widenumber(x, y, t) gametext_((x)<<16, (y)<<16, (t), 0, MF_Bluefont.pal, 1024, 0, TEXT_GAMETEXTNUMHACK) +//#define gametext_number(x, y, t) gametext_((x)<<16, (y)<<16, (t), 0, MF_Bluefont.pal, 0, 0, TEXT_GAMETEXTNUMHACK) +//#define gametext_pal(x, y, t, p) gametext_((x)<<16, (y)<<16, (t), 0, (p), 0, 0, 0) +//#define gametext_center(y, t) gametext_(160<<16, (y)<<16, (t), 0, MF_Bluefont.pal, 0, 0, TEXT_XCENTER) +//#define gametext_center_number(y, t) gametext_(160<<16, (y)<<16, (t), 0, MF_Bluefont.pal, 0, 0, TEXT_XCENTER|TEXT_GAMETEXTNUMHACK) +//#define gametext_center_shade(y, t, s) gametext_(160<<16, (y)<<16, (t), (s), MF_Bluefont.pal, 0, 0, TEXT_XCENTER) +//#define gametext_center_shade_pal(y, t, s, p) gametext_(160<<16, (y)<<16, (t), (s), (p), 0, 0, TEXT_XCENTER) +// +//extern void G_PrintGameText(int32_t tile, int32_t x, int32_t y, const char *t, +// int32_t s, int32_t p, int32_t o, +// int32_t x1, int32_t y1, int32_t x2, int32_t y2, +// int32_t z, int32_t a); +// extern int32_t G_GetStringLineLength(const char *text, const char *end, int32_t iter); extern int32_t G_GetStringNumLines(const char *text, const char *end, int32_t iter); extern char* G_GetSubString(const char *text, const char *end, int32_t iter, int32_t length); diff --git a/source/blood/src/view.cpp b/source/blood/src/view.cpp index d9da2a74e..224717e1e 100644 --- a/source/blood/src/view.cpp +++ b/source/blood/src/view.cpp @@ -53,6 +53,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "player.h" #include "replace.h" #include "screen.h" +#include "screentext.h" #include "sectorfx.h" #include "tile.h" #include "trig.h" @@ -982,37 +983,54 @@ void viewDrawText(int nFont, const char *pString, int x, int y, int nShade, int { if (nFont < 0 || nFont >= 5 || !pString) return; FONT *pFont = &gFont[nFont]; - - if (position) + int nFlags = TEXT_INTERNALSPACE; + switch (position) { - const char *s = pString; - int width = -pFont->space; - while (*s) - { - int nTile = ((*s-' ')&127)+pFont->tile; - if (tilesiz[nTile].x && tilesiz[nTile].y) - width += tilesiz[nTile].x+pFont->space; - s++; - } - if (position == 1) - width >>= 1; - x -= width; - } - const char *s = pString; - while (*s) - { - int nTile = ((*s-' ')&127) + pFont->tile; - if (tilesiz[nTile].x && tilesiz[nTile].y) - { - if (shadow) - { - rotatesprite_fs_alpha((x+1)<<16, (y+1)<<16, 65536, 0, nTile, 127, nPalette, 26|nStat, alpha); - } - rotatesprite_fs_alpha(x<<16, y<<16, 65536, 0, nTile, nShade, nPalette, 26|nStat, alpha); - x += tilesiz[nTile].x+pFont->space; - } - s++; + case 0: + break; + case 1: + nFlags |= TEXT_XCENTER; + break; + case 2: + nFlags |= TEXT_XRIGHT; + break; } + if (shadow) + G_ScreenText(pFont->tile, x + 1, y + 1, 65536, 0, 0, pString, 127, nPalette, 2|8|16, alpha, 0, 0, pFont->space, 0, nFlags, 0, 0, xdim-1, ydim-1); + G_ScreenText(pFont->tile, x, y, 65536, 0, 0, pString, nShade, nPalette, 2|8|16, alpha, 0, 0, pFont->space, 0, nFlags, 0, 0, xdim-1, ydim-1); + //if (nFont < 0 || nFont >= 5 || !pString) return; + //FONT *pFont = &gFont[nFont]; + // + //if (position) + //{ + // const char *s = pString; + // int width = -pFont->space; + // while (*s) + // { + // int nTile = ((*s-' ')&127)+pFont->tile; + // if (tilesiz[nTile].x && tilesiz[nTile].y) + // width += tilesiz[nTile].x+pFont->space; + // s++; + // } + // if (position == 1) + // width >>= 1; + // x -= width; + //} + //const char *s = pString; + //while (*s) + //{ + // int nTile = ((*s-' ')&127) + pFont->tile; + // if (tilesiz[nTile].x && tilesiz[nTile].y) + // { + // if (shadow) + // { + // rotatesprite_fs_alpha((x+1)<<16, (y+1)<<16, 65536, 0, nTile, 127, nPalette, 26|nStat, alpha); + // } + // rotatesprite_fs_alpha(x<<16, y<<16, 65536, 0, nTile, nShade, nPalette, 26|nStat, alpha); + // x += tilesiz[nTile].x+pFont->space; + // } + // s++; + //} } void viewTileSprite(int nTile, int nShade, int nPalette, int x1, int y1, int x2, int y2)