Optimize all menutext calls.

git-svn-id: https://svn.eduke32.com/eduke32@6208 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2017-06-19 23:07:18 +00:00
parent 7f6b26d362
commit 334007d6c3
9 changed files with 36 additions and 51 deletions

View file

@ -6483,7 +6483,7 @@ int app_main(int argc, char const * const * argv)
//G_FadePalette(0,0,0,0); //G_FadePalette(0,0,0,0);
P_SetGamePalette(g_player[myconnectindex].ps, BASEPAL, 0); // JBF 20040308 P_SetGamePalette(g_player[myconnectindex].ps, BASEPAL, 0); // JBF 20040308
rotatesprite_fs(160<<16,100<<16,65536L,0,LOADSCREEN,0,0,2+8+64+BGSTRETCH); rotatesprite_fs(160<<16,100<<16,65536L,0,LOADSCREEN,0,0,2+8+64+BGSTRETCH);
menutext(160,105,0,0,"LOADING SAVED GAME..."); menutext_center(105,"Loading saved game...");
nextpage(); nextpage();
if (G_LoadPlayer(ud.warp_on-2)) if (G_LoadPlayer(ud.warp_on-2))

View file

@ -78,8 +78,7 @@ G_EXTERN char pus,pub;
G_EXTERN char ready2send; G_EXTERN char ready2send;
#define MAXPLAYERNAME 32 #define MAXPLAYERNAME 32
G_EXTERN char szPlayerName[MAXPLAYERNAME]; G_EXTERN char szPlayerName[MAXPLAYERNAME];
// XXX: menutextbuf overflow possible? G_EXTERN char tempbuf[MAXSECTORS<<1],packbuf[PACKBUF_SIZE],buf[1024];
G_EXTERN char tempbuf[MAXSECTORS<<1],packbuf[PACKBUF_SIZE],menutextbuf[128],buf[1024];
#define TYPEBUFSIZE 141 #define TYPEBUFSIZE 141
G_EXTERN char typebuf[TYPEBUFSIZE]; G_EXTERN char typebuf[TYPEBUFSIZE];

View file

@ -74,8 +74,8 @@ static int32_t mgametext_xbetween = -(1<<16);
#define mgametext(x,y,t) G_ScreenText(STARTALPHANUM, x, y, 65536, 0, 0, t, 0, 0, 2|8|16|ROTATESPRITE_FULL16, 0, 5<<16, 8<<16, mgametext_xbetween, 0, 0, 0, 0, xdim-1, ydim-1) #define mgametext(x,y,t) G_ScreenText(STARTALPHANUM, x, y, 65536, 0, 0, t, 0, 0, 2|8|16|ROTATESPRITE_FULL16, 0, 5<<16, 8<<16, mgametext_xbetween, 0, 0, 0, 0, xdim-1, ydim-1)
#define mgametextcenter(x,y,t) G_ScreenText(STARTALPHANUM, (MENU_MARGIN_CENTER<<16) + (x), y, 65536, 0, 0, t, 0, 0, 2|8|16|ROTATESPRITE_FULL16, 0, 5<<16, 8<<16, mgametext_xbetween, 1<<16, TEXT_XCENTER, 0, 0, xdim-1, ydim-1) #define mgametextcenter(x,y,t) G_ScreenText(STARTALPHANUM, (MENU_MARGIN_CENTER<<16) + (x), y, 65536, 0, 0, t, 0, 0, 2|8|16|ROTATESPRITE_FULL16, 0, 5<<16, 8<<16, mgametext_xbetween, 1<<16, TEXT_XCENTER, 0, 0, xdim-1, ydim-1)
#define mminitext(x,y,t,p) minitext_(x, y, t, 0, p, 2|8|16|ROTATESPRITE_FULL16) #define mminitext(x,y,t,p) minitext_(x, y, t, 0, p, 2|8|16|ROTATESPRITE_FULL16)
#define mmenutext(x,y,t) G_ScreenText(BIGALPHANUM, x, (y) - (12<<16), 65536L, 0, 0, (const char *)OSD_StripColors(menutextbuf,t), 0, 0, 2|8|16|ROTATESPRITE_FULL16, 0, 5<<16, 16<<16, 0, 0, TEXT_BIGALPHANUM|TEXT_UPPERCASE|TEXT_LITERALESCAPE, 0, 0, xdim-1, ydim-1) #define mmenutext menutext
#define mmenutextcenter(x,y,t) G_ScreenText(BIGALPHANUM, (MENU_MARGIN_CENTER<<16) + (x), (y) - (12<<16), 65536L, 0, 0, (const char *)OSD_StripColors(menutextbuf,t), 0, 0, 2|8|16|ROTATESPRITE_FULL16, 0, 5<<16, 16<<16, 0, 0, TEXT_BIGALPHANUM|TEXT_UPPERCASE|TEXT_LITERALESCAPE|TEXT_XCENTER, 0, 0, xdim-1, ydim-1) #define mmenutextcenter(x,y,t) menutext_((MENU_MARGIN_CENTER<<16) + (x), (y), 0, (t), 10|16, TEXT_XCENTER)
#ifndef EDUKE32_STANDALONE #ifndef EDUKE32_STANDALONE
static void shadowminitext(int32_t x, int32_t y, const char *t, int32_t p) static void shadowminitext(int32_t x, int32_t y, const char *t, int32_t p)
@ -98,28 +98,6 @@ static void creditsminitext(int32_t x, int32_t y, const char *t, int32_t p)
G_ScreenTextShadow(1, 1, MINIFONT, x, y, 65536, 0, 0, t, 0, p, 2|8|16|ROTATESPRITE_FULL16, 0, 4<<16, 8<<16, 1<<16, 0, f, 0, 0, xdim-1, ydim-1); G_ScreenTextShadow(1, 1, MINIFONT, x, y, 65536, 0, 0, t, 0, p, 2|8|16|ROTATESPRITE_FULL16, 0, 4<<16, 8<<16, 1<<16, 0, f, 0, 0, xdim-1, ydim-1);
} }
int32_t menutext_(int32_t x, int32_t y, int32_t s, int32_t p, char const *t, int32_t bits)
{
vec2_t dim;
int32_t f = TEXT_BIGALPHANUM|TEXT_UPPERCASE|TEXT_LITERALESCAPE;
if (!(bits & ROTATESPRITE_FULL16))
{
x<<=16;
y<<=16;
}
if (x == (160<<16))
f |= TEXT_XCENTER;
dim = G_ScreenText(BIGALPHANUM, x, y - (12<<16), 65536L, 0, 0, t, s, p, bits|ROTATESPRITE_FULL16, 0, 5<<16, 16<<16, 0, 0, f, 0, 0, xdim-1, ydim-1);
if (!(bits & ROTATESPRITE_FULL16))
x >>= 16;
return dim.x;
}
#pragma pack(push,1) #pragma pack(push,1)
static savehead_t savehead; static savehead_t savehead;
#pragma pack(pop) #pragma pack(pop)

View file

@ -446,7 +446,6 @@ extern Menu_t *m_currentMenu;
extern int32_t g_lastSaveSlot; extern int32_t g_lastSaveSlot;
extern int32_t g_quitDeadline; extern int32_t g_quitDeadline;
extern int32_t voting; extern int32_t voting;
int32_t menutext_(int32_t x,int32_t y,int32_t s,int32_t p,char const *t,int32_t bits);
int Menu_Change(int32_t cm); int Menu_Change(int32_t cm);
void Menu_AnimateChange(int32_t cm, MenuAnimationType_t animtype); void Menu_AnimateChange(int32_t cm, MenuAnimationType_t animtype);
int32_t Menu_IsTextInput(Menu_t *cm); int32_t Menu_IsTextInput(Menu_t *cm);

View file

@ -347,14 +347,14 @@ static void G_DoLoadScreen(const char *statustext, int32_t percent)
if (boardfilename[0] != 0 && ud.level_number == 7 && ud.volume_number == 0) if (boardfilename[0] != 0 && ud.level_number == 7 && ud.volume_number == 0)
{ {
menutext(160,90,0,0,"Loading User Map"); menutext_center(90,"Loading User Map");
gametextpal(160,90+10,boardfilename,14,2); gametextpal(160,90+10,boardfilename,14,2);
} }
else else
{ {
menutext(160,90,0,0,"Loading"); menutext_center(90,"Loading");
if (g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name != NULL) if (g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name != NULL)
menutext(160,90+16+8,0,0,g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name); menutext_center(90+16+8,g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name);
} }
#ifndef EDUKE32_TOUCH_DEVICES #ifndef EDUKE32_TOUCH_DEVICES
@ -403,7 +403,7 @@ static void G_DoLoadScreen(const char *statustext, int32_t percent)
return; return;
} }
menutext(160,105,0,0,"Loading..."); menutext_center(105,"Loading...");
if (statustext) gametext(160,180,statustext,0,2+8+16); if (statustext) gametext(160,180,statustext,0,2+8+16);
VM_OnEventWithReturn(EVENT_DISPLAYLOADINGSCREEN, g_player[screenpeek].ps->i, screenpeek, percent); VM_OnEventWithReturn(EVENT_DISPLAYLOADINGSCREEN, g_player[screenpeek].ps->i, screenpeek, percent);
nextpage(); nextpage();

View file

@ -22,7 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "duke3d.h" #include "duke3d.h"
#include "premap.h" #include "premap.h"
#include "menus.h" // menutext
#include "prlights.h" #include "prlights.h"
#include "savegame.h" #include "savegame.h"
#ifdef LUNATIC #ifdef LUNATIC
@ -272,7 +271,7 @@ int32_t G_LoadPlayer(int32_t spot)
pus = NUMPAGES; pus = NUMPAGES;
G_UpdateScreenArea(); G_UpdateScreenArea();
G_DrawBackground(); G_DrawBackground();
menutext(160,100, 0,0, "LOADING..."); menutext_center(100, "Loading...");
nextpage(); nextpage();
} }

View file

@ -1075,18 +1075,21 @@ void G_DisplayRest(int32_t smoothratio)
if (ud.show_level_text && hud_showmapname && g_levelTextTime > 1) if (ud.show_level_text && hud_showmapname && g_levelTextTime > 1)
{ {
int32_t bits = 10+16; int32_t o = 10|16;
if (g_levelTextTime < 3) if (g_levelTextTime < 3)
bits |= 1+32; o |= 1|32;
else if (g_levelTextTime < 5) else if (g_levelTextTime < 5)
bits |= 1; o |= 1;
if (g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name != NULL) if (g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name != NULL)
{ {
if (currentboardfilename[0] != 0 && ud.volume_number == 0 && ud.level_number == 7) char const * const fn = currentboardfilename[0] != 0 &&
menutext_(160, 90+16+8, -g_levelTextTime+22/*quotepulseshade*/, 0, currentboardfilename, bits); ud.volume_number == 0 && ud.level_number == 7
else menutext_(160, 90+16+8, -g_levelTextTime+22/*quotepulseshade*/, 0, g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name, bits); ? currentboardfilename
: g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name;
menutext_(160<<16, (90+16+8)<<16, -g_levelTextTime+22/*quotepulseshade*/, fn, o, TEXT_XCENTER);
} }
} }
@ -1164,7 +1167,7 @@ void G_DisplayRest(int32_t smoothratio)
#endif #endif
if (ud.pause_on==1 && (g_player[myconnectindex].ps->gm&MODE_MENU) == 0) if (ud.pause_on==1 && (g_player[myconnectindex].ps->gm&MODE_MENU) == 0)
menutext(160, 100, 0, 0, "Game Paused"); menutext_center(100, "Game Paused");
if (ud.coords) if (ud.coords)
G_PrintCoords(screenpeek); G_PrintCoords(screenpeek);
@ -1851,11 +1854,11 @@ static void G_BonusCutscenes(void)
P_SetGamePalette(g_player[myconnectindex].ps, BASEPAL, 8+2+1); // JBF 20040308 P_SetGamePalette(g_player[myconnectindex].ps, BASEPAL, 8+2+1); // JBF 20040308
// G_FadePalette(0,0,0,252); // G_FadePalette(0,0,0,252);
clearallviews(0L); clearallviews(0L);
menutext(160, 60, 0, 0, "Thanks to all our"); menutext_center(60, "Thanks to all our");
menutext(160, 60+16, 0, 0, "fans for giving"); menutext_center(60+16, "fans for giving");
menutext(160, 60+16+16, 0, 0, "us big heads."); menutext_center(60+16+16, "us big heads.");
menutext(160, 70+16+16+16, 0, 0, "Look for a Duke Nukem 3D"); menutext_center(70+16+16+16, "Look for a Duke Nukem 3D");
menutext(160, 70+16+16+16+16, 0, 0, "sequel soon."); menutext_center(70+16+16+16+16, "sequel soon.");
nextpage(); nextpage();
fadepal(0, 0, 0, 252, 0, -12); fadepal(0, 0, 0, 252, 0, -12);
@ -2178,8 +2181,8 @@ void G_BonusScreen(int32_t bonusonly)
rotatesprite_fs(160<<16, 100<<16, 65536L, 0, BONUSSCREEN+gfx_offset, 0, 0, 2+8+64+128+BGSTRETCH); rotatesprite_fs(160<<16, 100<<16, 65536L, 0, BONUSSCREEN+gfx_offset, 0, 0, 2+8+64+128+BGSTRETCH);
if (lastmapname) if (lastmapname)
menutext(160, 20-6, 0, 0, lastmapname); menutext_center(20-6, lastmapname);
menutext(160, 36-6, 0, 0, "Completed"); menutext_center(36-6, "Completed");
gametext(160, 192, "Press any key or button to continue", quotepulseshade, 2+8+16); gametext(160, 192, "Press any key or button to continue", quotepulseshade, 2+8+16);
@ -2261,8 +2264,8 @@ void G_BonusScreen(int32_t bonusonly)
} }
if (lastmapname) if (lastmapname)
menutext(160, 20-6, 0, 0, lastmapname); menutext_center(20-6, lastmapname);
menutext(160, 36-6, 0, 0, "Completed"); menutext_center(36-6, "Completed");
gametext(160, 192, "Press any key or button to continue", quotepulseshade, 2+8+16); gametext(160, 192, "Press any key or button to continue", quotepulseshade, 2+8+16);

View file

@ -1007,6 +1007,11 @@ int32_t minitext_(int32_t x, int32_t y, const char *t, int32_t s, int32_t p, int
return x; return x;
} }
void menutext_(int32_t x, int32_t y, int32_t s, char const *t, int32_t o, int32_t f)
{
G_ScreenText(BIGALPHANUM, x, y - (12<<16), 65536L, 0, 0, t, s, 0, o|ROTATESPRITE_FULL16, 0, 5<<16, 16<<16, 0, 0, f|TEXT_BIGALPHANUM|TEXT_UPPERCASE|TEXT_LITERALESCAPE, 0, 0, xdim-1, ydim-1);
}
void G_AddUserQuote(const char *daquote) void G_AddUserQuote(const char *daquote)
{ {
int32_t i; int32_t i;

View file

@ -59,11 +59,13 @@ enum ScreenTextFlags_t {
}; };
extern int32_t minitext_(int32_t x, int32_t y, const char *t, int32_t s, int32_t p, int32_t sb); 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 int32_t textsc(int32_t sc); extern int32_t textsc(int32_t sc);
#define minitextshade(x, y, t, s, p, sb) minitext_(x,y,t,s,p,sb) #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 minitext(x, y, t, p, sb) minitext_(x,y,t,0,p,sb)
#define menutext(x,y,s,p,t) menutext_(x,y,s,p,OSD_StripColors(menutextbuf,t),10+16) #define menutext(x, y, t) menutext_((x), (y), 0, (t), 10|16, 0)
#define menutext_center(y, t) menutext_(160<<16, (y)<<16, 0, (t), 10|16, TEXT_XCENTER)
#define gametext(x,y,t,s,dabits) G_PrintGameText(0,STARTALPHANUM, x,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536, 0) #define gametext(x,y,t,s,dabits) G_PrintGameText(0,STARTALPHANUM, x,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536, 0)
#define gametextscaled(x,y,t,s,dabits) G_PrintGameText(1,STARTALPHANUM, x,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536, 0) #define gametextscaled(x,y,t,s,dabits) G_PrintGameText(1,STARTALPHANUM, x,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536, 0)
#define gametextpal(x,y,t,s,p) G_PrintGameText(0,STARTALPHANUM, x,y,t,s,p,26,0, 0, xdim-1, ydim-1, 65536, 0) #define gametextpal(x,y,t,s,p) G_PrintGameText(0,STARTALPHANUM, x,y,t,s,p,26,0, 0, xdim-1, ydim-1, 65536, 0)