Use screentext in viewDrawText

This commit is contained in:
nukeykt 2019-10-20 00:43:39 +09:00 committed by Christoph Oelckers
parent 90dc59749d
commit 182d5d2eb5
3 changed files with 77 additions and 59 deletions

View File

@ -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,

View File

@ -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);

View File

@ -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)