EDuke32: now with multiplayer text scaling hacks and nastiness

git-svn-id: https://svn.eduke32.com/eduke32@1095 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2008-10-11 09:20:04 +00:00
parent 93841d4b3e
commit efcd34c135
15 changed files with 105 additions and 537 deletions

View file

@ -1,69 +0,0 @@
[Project]
FileName=Build.dev
Name=KenBuild Editor
UnitCount=2
Type=0
Ver=1
ObjFiles=
Includes=..\include
Libs=C:\sdks\directx\dx7\include
PrivateResource=Build_private.rc
ResourceIncludes=..\;..\include
MakeIncludes=
Compiler=-DRENDERTYPEWIN=1_@@_-DSUPERBUILD_@@_-DPOLYMOST_@@_-DUSE_OPENGL_@@_-DDYNAMIC_OPENGL_@@_-DNO_GCC_BUILTINS_@@_-DUNDERSCORES_@@_-funsigned-char_@@_-fno-strict-aliasing_@@_
CppCompiler=
Linker=libeditor.a_@@_libengine.a_@@_-ldxguid_@@_-lws2_32_@@_-lcomctl32_@@_
IsCpp=0
Icon=
ExeOutput=..\devcpp
ObjectOutput=..\devcpp
OverrideOutput=0
OverrideOutputName=libengine.a
HostApplication=
Folders=
CommandLine=
UseCustomMakefile=0
CustomMakefile=
IncludeVersionInfo=0
SupportXPThemes=0
CompilerSet=0
CompilerSettings=0000000000100010000d0
[VersionInfo]
Major=0
Minor=1
Release=1
Build=1
LanguageID=1033
CharsetID=1252
CompanyName=
FileVersion=
FileDescription=Developed using the Dev-C++ IDE
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=
AutoIncBuildNr=0
[Unit1]
FileName=..\src\misc\buildres.rc
CompileCpp=0
Folder=KenBuild Editor
Compile=1
Link=0
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit2]
FileName=..\testgame\bstub.c
Folder=KenBuild Editor
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
CompileCpp=0

View file

@ -1,108 +0,0 @@
[Project]
FileName=Game.dev
Name=KenBuild Game
UnitCount=5
Type=0
Ver=1
ObjFiles=
Includes=..\include;..\testgame;..\..\jfaud\inc
Libs=C:\sdks\directx\dx7\include;..\..\jfaud
PrivateResource=Game_private.rc
ResourceIncludes=..\;..\testgame
MakeIncludes=
Compiler=-DRENDERTYPEWIN=1_@@_-DSUPERBUILD_@@_-DPOLYMOST_@@_-DUSE_OPENGL_@@_-DDYNAMIC_OPENGL_@@_-DNO_GCC_BUILTINS_@@_-DUNDERSCORES_@@_-funsigned-char_@@_-fno-strict-aliasing_@@_
CppCompiler=
Linker=libeditor.a_@@_libengine.a_@@_-ldxguid_@@_-lws2_32_@@_-lsupc++_@@_-lcomctl32_@@_-ljfaud_@@_-lwinmm_@@_
IsCpp=0
Icon=
ExeOutput=..\devcpp
ObjectOutput=..\devcpp
OverrideOutput=0
OverrideOutputName=libengine.a
HostApplication=
Folders=
CommandLine=
UseCustomMakefile=0
CustomMakefile=
IncludeVersionInfo=0
SupportXPThemes=0
CompilerSet=0
CompilerSettings=0000000000100010000d0
[VersionInfo]
Major=0
Minor=1
Release=1
Build=1
LanguageID=1033
CharsetID=1252
CompanyName=
FileVersion=
FileDescription=Developed using the Dev-C++ IDE
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=
AutoIncBuildNr=0
[Unit3]
FileName=..\testgame\startwin.game.c
CompileCpp=0
Folder=KenBuild Game
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit4]
FileName=..\testgame\jfaud_sound.cpp
Folder=KenBuild Game
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
CompileCpp=0
[Unit1]
FileName=..\src\config.c
CompileCpp=0
Folder=KenBuild Editor
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit5]
FileName=..\testgame\game.c
CompileCpp=0
Folder=KenBuild Game
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit6]
FileName=..\testgame\game.c
CompileCpp=0
Folder=KenBuild Game
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit2]
FileName=..\src\misc\gameres.rc
Folder=KenBuild Game
Compile=1
Link=0
Priority=1000
OverrideBuildCmd=0
BuildCmd=

View file

@ -1,79 +0,0 @@
[Project]
FileName=libEditor.dev
Name=Build Editor library
UnitCount=3
Type=2
Ver=1
ObjFiles=
Includes=..\include;..\src
Libs=
PrivateResource=
ResourceIncludes=
MakeIncludes=
Compiler=-DRENDERTYPEWIN=1_@@_-DSUPERBUILD_@@_-DPOLYMOST_@@_-DUSE_OPENGL_@@_-DDYNAMIC_OPENGL_@@_-DNO_GCC_BUILTINS_@@_-DUNDERSCORES_@@_-funsigned-char_@@_
CppCompiler=
Linker=
IsCpp=0
Icon=
ExeOutput=..\devcpp
ObjectOutput=..\devcpp
OverrideOutput=1
OverrideOutputName=libeditor.a
HostApplication=
Folders=
CommandLine=
UseCustomMakefile=0
CustomMakefile=
IncludeVersionInfo=0
SupportXPThemes=0
CompilerSet=0
CompilerSettings=0000000000100010000d0
[VersionInfo]
Major=0
Minor=1
Release=1
Build=1
LanguageID=1033
CharsetID=1252
CompanyName=
FileVersion=
FileDescription=Developed using the Dev-C++ IDE
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=
AutoIncBuildNr=0
[Unit3]
FileName=..\src\startwin.editor.c
CompileCpp=0
Folder=Build Editor library
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit1]
FileName=..\src\build.c
CompileCpp=0
Folder=Build Editor library
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit2]
FileName=..\src\config.c
CompileCpp=0
Folder=Build Editor library
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=

View file

@ -1,228 +0,0 @@
[Project]
FileName=libEngine.dev
Name=Build Engine library
UnitCount=18
Type=2
Ver=1
ObjFiles=
Includes=..\include;..\src;C:\sdks\directx\dx7\include
Libs=
PrivateResource=
ResourceIncludes=
MakeIncludes=
Compiler=-DRENDERTYPEWIN=1_@@_-DSUPERBUILD_@@_-DPOLYMOST_@@_-DUSE_OPENGL_@@_-DDYNAMIC_OPENGL_@@_-DNO_GCC_BUILTINS_@@_-DUNDERSCORES_@@_-DKSFORBUILD_@@_-funsigned-char_@@_-fno-strict-aliasing_@@_
CppCompiler=
Linker=
IsCpp=0
Icon=
ExeOutput=..\devcpp
ObjectOutput=..\devcpp
OverrideOutput=1
OverrideOutputName=libengine.a
HostApplication=
Folders=
CommandLine=
UseCustomMakefile=0
CustomMakefile=
IncludeVersionInfo=0
SupportXPThemes=0
CompilerSet=0
CompilerSettings=0000000000100010000d0
[Unit1]
FileName=..\src\cache1d.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit2]
FileName=..\src\engine.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit3]
FileName=..\src\crc32.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit4]
FileName=..\src\osd.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit5]
FileName=..\src\pragmas.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit6]
FileName=..\src\a.nasm
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=1
BuildCmd=nasm -s -DUNDERSCORES -f win32 ../src/a.nasm -o ../devcpp/a.o
[Unit7]
FileName=engineinfo.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit8]
FileName=..\src\defs.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit9]
FileName=..\src\compat.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit10]
FileName=..\src\baselayer.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit11]
FileName=..\src\glbuild.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit12]
FileName=..\src\kplib.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit13]
FileName=..\src\mmulti.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit14]
FileName=..\src\scriptfile.c
CompileCpp=0
Folder=Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[VersionInfo]
Major=0
Minor=1
Release=1
Build=1
LanguageID=1033
CharsetID=1252
CompanyName=
FileVersion=
FileDescription=Developed using the Dev-C++ IDE
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=
AutoIncBuildNr=0
[Unit15]
FileName=..\src\winlayer.c
CompileCpp=0
Folder=Build Engine
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit16]
FileName=..\src\md4.c
CompileCpp=0
Folder=Build Engine library
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit17]
FileName=..\src\lzf_d.c
CompileCpp=0
Folder=Build Engine library
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit18]
FileName=..\src\lzf_c.c
CompileCpp=0
Folder=Build Engine library
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=

View file

@ -1375,15 +1375,23 @@ void OSD_Draw(void)
topoffs+=osdcols;
}
drawosdchar(2,osdrowscur,'>',osdpromptshade?osdpromptshade:(sintable[(totalclock<<4)&2047]>>11),osdpromptpal);
if (osdeditcaps) drawosdchar(0,osdrowscur,'C',osdpromptshade?osdpromptshade:(sintable[(totalclock<<4)&2047]>>11),osdpromptpal);
if (osdeditshift) drawosdchar(1,osdrowscur,'H',osdpromptshade?osdpromptshade:(sintable[(totalclock<<4)&2047]>>11),osdpromptpal);
{
int offset = (osdeditcaps && osdeditshift && osdhead > 0);
int shade = osdpromptshade?osdpromptshade:(sintable[(totalclock<<4)&2047]>>11);
len = min(osdcols-1-3, osdeditlen-osdeditwinstart);
for (x=len-1; x>=0; x--)
drawosdchar(3+x,osdrowscur,osdeditbuf[osdeditwinstart+x],osdeditshade<<1,osdeditpal);
if (osdhead == osdlines-1) drawosdchar(0,osdrowscur,'~',shade,osdpromptpal);
else if (osdhead > 0) drawosdchar(0,osdrowscur,'^',shade,osdpromptpal);
if (osdeditcaps) drawosdchar(0+(osdhead > 0),osdrowscur,'C',shade,osdpromptpal);
if (osdeditshift) drawosdchar(1+(osdeditcaps && osdhead > 0),osdrowscur,'H',shade,osdpromptpal);
drawosdcursor(3+osdeditcursor-osdeditwinstart,osdrowscur,osdovertype,keytime);
drawosdchar(2+offset,osdrowscur,'>',shade,osdpromptpal);
len = min(osdcols-1-3-offset, osdeditlen-osdeditwinstart);
for (x=len-1; x>=0; x--)
drawosdchar(3+x+offset,osdrowscur,osdeditbuf[osdeditwinstart+x],osdeditshade<<1,osdeditpal);
drawosdcursor(3+osdeditcursor-osdeditwinstart+offset,osdrowscur,osdovertype,keytime);
}
enddrawing();
}

View file

@ -250,6 +250,7 @@ void CONFIG_SetDefaults(void)
ud.show_level_text = 1;
ud.configversion = 0;
ud.weaponscale = 100;
ud.textscale = 100;
Bstrcpy(ud.rtsname, "DUKE.RTS");
Bstrcpy(myname, "Duke");
@ -784,6 +785,7 @@ int32 CONFIG_ReadSetup(void)
SCRIPT_GetNumber(ud.config.scripthandle, "Misc","AngleInterpolation",&ud.angleinterpolation);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "WeaponScale",&ud.weaponscale);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "TextScale",&ud.textscale);
// weapon choices are defaulted in checkcommandline, which may override them
if (!CommandWeaponChoice)
@ -964,6 +966,7 @@ void CONFIG_WriteSetup(void)
// SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "AngleInterpolation",ud.angleinterpolation,false,false);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "WeaponScale",ud.weaponscale,false,false);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "TextScale",ud.textscale,false,false);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "Detail",ud.detail,false,false);
#if defined(POLYMOST) && defined(USE_OPENGL)

View file

@ -404,7 +404,7 @@ typedef struct {
int runkey_mode,statusbarscale,mouseaiming,weaponswitch,drawweapon; // JBF 20031125
int democams,color,msgdisptime,statusbarmode;
int m_noexits,noexits,autovote,automsg,idplayers;
int team, viewbob, weaponsway, althud, weaponscale;
int team, viewbob, weaponsway, althud, weaponscale, textscale;
int entered_name,screen_tilting,shadows,fta_on,executions,auto_run;
int coords,tickrate,levelstats,m_coop,coop,screen_size,lockout,crosshair;

View file

@ -203,6 +203,7 @@ extern int minitext_(int x,int y,const char *t,int s,int p,int sb);
#define minitext(x, y, t, p, sb) minitext_(x,y,t,0,p,sb)
#define gametext(x,y,t,s,dabits) gametext_z(0,STARTALPHANUM, x,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536)
#define gametextscaled(x,y,t,s,dabits) gametext_z(1,STARTALPHANUM, x,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536)
#define gametextpal(x,y,t,s,p) gametext_z(0,STARTALPHANUM, x,y,t,s,p,26,0, 0, xdim-1, ydim-1, 65536)
#define gametextpalbits(x,y,t,s,p,dabits) gametext_z(0,STARTALPHANUM, x,y,t,s,p,dabits,0, 0, xdim-1, ydim-1, 65536)

View file

@ -242,6 +242,11 @@ static inline int sbarsc(int sc)
return scale(sc,ud.statusbarscale,100);
}
static inline int textsc(int sc)
{
return scale(sc,ud.textscale,100);
}
static void patchstatusbar(int x1, int y1, int x2, int y2)
{
int scl, tx, ty;
@ -286,6 +291,7 @@ int gametext_z(int small, int starttile, int x,int y,const char *t,int s,int p,i
int squishtext = ((small&2)!=0);
// int ht = usehightile;
int shift = 16, widthx = 320, ox, oy;
int origy = y;
if (orientation & 256)
{
@ -333,7 +339,9 @@ int gametext_z(int small, int starttile, int x,int y,const char *t,int s,int p,i
while (*(++t));
t = oldt;
x = (widthx>>1)-((orientation & 256)?newx<<15:newx>>1);
if (small&4)
x = (xres>>1)-textsc(newx>>1);
else x = (widthx>>1)-((orientation & 256)?newx<<15:newx>>1);
}
// usehightile = (ht && r_downsize < 2);
ox=x;
@ -375,7 +383,15 @@ int gametext_z(int small, int starttile, int x,int y,const char *t,int s,int p,i
y+=(y-oy)<<16;
ox=x;oy=y;
}
rotatesprite(x<<shift,(y<<shift),z,0,ac,s,p,(small&1)?(8|16|(orientation&1)|(orientation&32)):(2|orientation),x1,y1,x2,y2);
if (small&4)
{
rotatesprite(textsc(x<<shift),(origy<<shift)+textsc((y-origy)<<shift),textsc(z),0,ac,s,p,(8|16|(orientation&1)|(orientation&32)),x1,y1,x2,y2);
}
else
{
rotatesprite(x<<shift,(y<<shift),z,0,ac,s,p,(small&1)?(8|16|(orientation&1)|(orientation&32)):(2|orientation),x1,y1,x2,y2);
}
if ((*t >= '0' && *t <= '9'))
x += (8)*z/65536;
@ -384,7 +400,15 @@ int gametext_z(int small, int starttile, int x,int y,const char *t,int s,int p,i
else x += (tilesizx[ac]-squishtext)*z/65536;//(tilesizx[ac]>>small);
if ((orientation&256) == 0) // warpping long strings doesn't work for precise coordinates due to overflow
if (x > (ud.config.ScreenWidth - 14)) oldt = (char *)t, x = oldx, y+=8*z/65536;
{
if (small&4)
{
if (textsc(x) > (ud.config.ScreenWidth - USERQUOTE_RIGHTOFFSET))
oldt = (char *)t, x = oldx, y+=8*z/65536;
}
else if (x > (ud.config.ScreenWidth - USERQUOTE_RIGHTOFFSET))
oldt = (char *)t, x = oldx, y+=8*z/65536;
}
}
while (*(++t));
// usehightile = ht;
@ -415,14 +439,14 @@ int gametextlen(int x,const char *t)
else x += tilesizx[ac];
}
while (*(++t));
return (x);
return (textsc(x));
}
static inline int mpgametext(int y,const char *t,int s,int dabits)
{
if (xdim < 640 || ydim < 480)
return(gametext_z(0,STARTALPHANUM, 5,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536));
return(gametext_z(1,STARTALPHANUM, 5,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536));
// if (xdim < 640 || ydim < 480)
// return(gametext_z(0,STARTALPHANUM, 5,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536));
return(gametext_z(4,STARTALPHANUM, 5,y,t,s,0,dabits,0, 0, xdim-1, ydim-1, 65536));
}
int minitext_(int x,int y,const char *t,int s,int p,int sb)
@ -2690,36 +2714,37 @@ static void operatefta(void)
if (g_player[screenpeek].ps->fta > 1 && (g_player[screenpeek].ps->ftq < 115 || g_player[screenpeek].ps->ftq > 117))
{
if (g_player[screenpeek].ps->fta > 3)
k += 7;
else k += g_player[screenpeek].ps->fta<<1; /*if (g_player[screenpeek].ps->fta > 2)
if (g_player[screenpeek].ps->fta > 5)
k += 6;
else k += g_player[screenpeek].ps->fta; /*if (g_player[screenpeek].ps->fta > 2)
k += 3;
else k += 1; */
}
if (xdim >= 640 && ydim >= 480)
k = scale(k,ydim,200);
/* if (xdim >= 640 && ydim >= 480)
k = scale(k,ydim,200); */
j = k;
quotebot = min(quotebot,j);
quotebotgoal = min(quotebotgoal,j);
// quotebot = min(quotebot,j);
// quotebotgoal = min(quotebotgoal,j);
// if (g_player[myconnectindex].ps->gm&MODE_TYPE) j -= 8;
quotebotgoal = j;
j = quotebot;
//quotebotgoal = j;
//j = quotebot;
j = scale(j,ydim,200);
for (i=MAXUSERQUOTES-1;i>=0;i--)
{
if (user_quote_time[i] <= 0) continue;
k = user_quote_time[i];
if (k > 4) { mpgametext(j,user_quote[i],0,2+8+16); j += 8; }
else if (k > 2) { mpgametext(j,user_quote[i],0,2+8+16+1); j += k<<1; }
else { mpgametext(j,user_quote[i],0,2+8+16+1+32); j += k<<1; }
if (k > 4) { mpgametext(j,user_quote[i],0,2+8+16); j += textsc(8); }
else if (k > 2) { mpgametext(j,user_quote[i],0,2+8+16+1); j += textsc(k<<1); }
else { mpgametext(j,user_quote[i],0,2+8+16+1+32); j += textsc(k<<1); }
l = gametextlen(USERQUOTE_LEFTOFFSET,stripcolorcodes(user_quote[i],tempbuf));
while (l > (ud.config.ScreenWidth - USERQUOTE_RIGHTOFFSET))
{
l -= (ud.config.ScreenWidth-USERQUOTE_RIGHTOFFSET);
if (k > 4) j += 8;
else j += k<<1;
if (k > 4) j += textsc(8);
else j += textsc(k<<1);
}
}
@ -2992,10 +3017,14 @@ static int strget_(int small,int x,int y,char *t,int dalen,int c)
while (i > (ud.config.ScreenWidth - USERQUOTE_RIGHTOFFSET))
{
i -= (ud.config.ScreenWidth - USERQUOTE_RIGHTOFFSET);
if (small&1)
y += textsc(6);
y += 8;
}
rotatesprite((x+((small&1)?4:8))<<16,((y+((small&1)?0:4))<<16),32768,0,SPINNINGNUKEICON+((totalclock>>3)%7),c,0,(small&1)?(8|16):2+8,0,0,xdim-1,ydim-1);
if (small&1)
rotatesprite(textsc(x)<<16,(y<<16),32768,0,SPINNINGNUKEICON+((totalclock>>3)%7),c,0,(small&1)?(8|16):2+8,0,0,xdim-1,ydim-1);
else rotatesprite((x+((small&1)?4:8))<<16,((y+((small&1)?0:4))<<16),32768,0,SPINNINGNUKEICON+((totalclock>>3)%7),c,0,(small&1)?(8|16):2+8,0,0,xdim-1,ydim-1);
return (0);
}
@ -3006,8 +3035,6 @@ inline int strget(int x,int y,char *t,int dalen,int c)
inline int mpstrget(int x,int y,char *t,int dalen,int c)
{
if (xdim < 640 || ydim < 480)
return(strget_(0,x,y,t,dalen,c));
return(strget_(1,x,y,t,dalen,c));
}
@ -12386,6 +12413,8 @@ static int domovethings(void)
if (user_quote_time[i])
{
user_quote_time[i]--;
if (user_quote_time[i] > ud.msgdisptime)
user_quote_time[i] = ud.msgdisptime;
if (!user_quote_time[i]) pub = NUMPAGES;
}

View file

@ -915,6 +915,7 @@ const memberlabel_t userdefslabels[]=
{ "display_bonus_screen", USERDEFS_DISPLAY_BONUS_SCREEN, 0, 0 },
{ "show_level_text", USERDEFS_SHOW_LEVEL_TEXT, 0, 0 },
{ "weaponscale", USERDEFS_WEAPONSCALE, 0, 0 },
{ "textscale", USERDEFS_TEXTSCALE, 0, 0 },
{ "", -1, 0, 0 } // END OF LIST
};

View file

@ -370,6 +370,7 @@ enum userdefslabels
USERDEFS_DISPLAY_BONUS_SCREEN,
USERDEFS_SHOW_LEVEL_TEXT,
USERDEFS_WEAPONSCALE,
USERDEFS_TEXTSCALE,
USERDEFS_END
};

View file

@ -895,6 +895,15 @@ void DoUserDef(int iSet, int lLabelID, int lVar2)
SetGameVarID(lVar2, ud.weaponscale, g_i, g_p);
return;
case USERDEFS_TEXTSCALE:
if (iSet)
{
ud.textscale = lValue;
return;
}
SetGameVarID(lVar2, ud.textscale, g_i, g_p);
return;
default:
return;
}

View file

@ -2724,7 +2724,7 @@ cheat_for_port_credits:
"-",
"Screen size",
"Status bar size",
"Weapon size",
"Multiplayer chat text size",
"Show level stats",
"-",
"Allow walk with autorun",
@ -2825,14 +2825,7 @@ cheat_for_port_credits:
break;
case 5:
{
int sbs, sbsl;
sbs = sbsl = ud.weaponscale-37;
barsm(d+8,yy+7, &sbs,4,x==io,MENUHIGHLIGHT(io),0);
if (x == io && sbs != sbsl)
{
sbs += 37;
ud.weaponscale = min(100,max(10,sbs));
}
_bar(1,d+8,yy+7, &ud.textscale,50,enabled && x==io,MENUHIGHLIGHT(io),0,100,400);
}
break;
case 6:

View file

@ -719,6 +719,7 @@ cvarmappings cvar[] =
{ "crosshair", "crosshair: enable/disable crosshair", (void*)&ud.crosshair, CVAR_BOOL, 0, 0, 1 },
{ "hud_althud", "hud_althud: enable/disable alternate mini-hud", (void*)&ud.althud, CVAR_BOOL, 0, 0, 1 },
{ "hud_messagetime", "hud_messagetime: length of time to display multiplayer chat messages\n", (void*)&ud.msgdisptime, CVAR_INT, 0, 0, 3600 },
{ "hud_numbertile", "hud_numbertile: first tile in alt hud number set", (void*)&althud_numbertile, CVAR_INT, 0, 0, MAXTILES-10 },
{ "hud_numberpal", "hud_numberpal: pal for alt hud numbers", (void*)&althud_numberpal, CVAR_INT, 0, 0, MAXPALOOKUPS },
{ "hud_shadows", "hud_shadows: enable/disable althud shadows", (void*)&althud_shadows, CVAR_BOOL, 0, 0, 1 },
@ -735,7 +736,6 @@ cvarmappings cvar[] =
{ "cl_democams", "cl_democams: enable/disable demo playback cameras", (void*)&ud.democams, CVAR_BOOL, 0, 0, 1 },
{ "cl_idplayers", "cl_idplayers: enable/disable name display when aiming at opponents", (void*)&ud.idplayers, CVAR_BOOL, 0, 0, 1 },
{ "cl_messagetime", "cl_messagetime: length of time to display multiplayer chat messages\n", (void*)&ud.msgdisptime, CVAR_INT, 0, 0, 3600 },
{ "cl_showcoords", "cl_showcoords: show your position in the game world", (void*)&ud.coords, CVAR_BOOL, 0, 0, 1 },

View file

@ -1626,15 +1626,19 @@ void checkhitwall(int spr,int dawallnum,int x,int y,int z,int atwith)
int j, i, darkestwall;
walltype *wal = &wall[dawallnum];
if (wal->overpicnum == MIRROR && checkspriteflagsp(atwith,SPRITE_FLAG_PROJECTILE) && (hittype[spr].projectile.workslike & PROJECTILE_FLAG_RPG))
if (wal->overpicnum == MIRROR && wal->pal != 4 && checkspriteflagsp(atwith,SPRITE_FLAG_PROJECTILE) && (hittype[spr].projectile.workslike & PROJECTILE_FLAG_RPG))
{
lotsofglass(spr,dawallnum,70);
wal->cstat &= ~16;
wal->overpicnum = MIRRORBROKE;
spritesound(GLASS_HEAVYBREAK,spr);
if (wal->nextwall == -1 || wall[wal->nextwall].pal != 4)
{
lotsofglass(spr,dawallnum,70);
wal->cstat &= ~16;
wal->overpicnum = MIRRORBROKE;
spritesound(GLASS_HEAVYBREAK,spr);
return;
}
}
if (wal->overpicnum == MIRROR)
if (wal->overpicnum == MIRROR && wal->pal != 4)
{
switch (dynamictostatic[atwith])
{
@ -1645,11 +1649,14 @@ void checkhitwall(int spr,int dawallnum,int x,int y,int z,int atwith)
case SEENINE__STATIC:
case OOZFILTER__STATIC:
case EXPLODINGBARREL__STATIC:
lotsofglass(spr,dawallnum,70);
wal->cstat &= ~16;
wal->overpicnum = MIRRORBROKE;
spritesound(GLASS_HEAVYBREAK,spr);
return;
if (wal->nextwall == -1 || wall[wal->nextwall].pal != 4)
{
lotsofglass(spr,dawallnum,70);
wal->cstat &= ~16;
wal->overpicnum = MIRRORBROKE;
spritesound(GLASS_HEAVYBREAK,spr);
return;
}
}
}