* Updated to ZDoom r2965:

- Made "follow player" automap option a CVAR and added a menu item for it.
- Added a CVAR to decide when to show the map label (ExMy, MAPxx) on the automap HUD. Available settings are Never, Always and Not for hubs.
- Made all crosshair related CVARs game specific. They were all global to all supportesd games.
- Fixed: When used on non-projectiles A_Explode ignored the HurtSource flag.
- Fixed: The intermission screen was not taking texture scaling into account (it was written before the introduction of scaled texture handling for 2D.)
- Fixed: The GAMEINFO parser did not correctly handle NOSPRITERENAME
- Added STTPRCNT to HUDFONT_DOOM

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1065 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
gez 2010-10-24 08:40:22 +00:00
parent f50cbb09e8
commit 6922d4da45
10 changed files with 78 additions and 47 deletions

View file

@ -385,8 +385,6 @@ static FTextureID marknums[10]; // numbers used for marking by the automap
static mpoint_t markpoints[AM_NUMMARKPOINTS]; // where the points are static mpoint_t markpoints[AM_NUMMARKPOINTS]; // where the points are
static int markpointnum = 0; // next point to be assigned static int markpointnum = 0; // next point to be assigned
static int followplayer = 1; // specifies whether to follow the player around
static FTextureID mapback; // the automap background static FTextureID mapback; // the automap background
static fixed_t mapystart=0; // y-value for the start of the map bitmap...used in the parallax stuff. static fixed_t mapystart=0; // y-value for the start of the map bitmap...used in the parallax stuff.
static fixed_t mapxstart=0; //x-value for the bitmap. static fixed_t mapxstart=0; //x-value for the bitmap.
@ -412,11 +410,14 @@ void AM_restoreScaleAndLoc ();
void AM_minOutWindowScale (); void AM_minOutWindowScale ();
CVAR(Bool, am_followplayer, true, CVAR_ARCHIVE)
CCMD(am_togglefollow) CCMD(am_togglefollow)
{ {
followplayer = !followplayer; am_followplayer = !am_followplayer;
f_oldloc.x = FIXED_MAX; f_oldloc.x = FIXED_MAX;
Printf ("%s\n", GStrings(followplayer ? "AMSTR_FOLLOWON" : "AMSTR_FOLLOWOFF")); Printf ("%s\n", GStrings(am_followplayer ? "AMSTR_FOLLOWON" : "AMSTR_FOLLOWOFF"));
} }
CCMD(am_togglegrid) CCMD(am_togglegrid)
@ -580,7 +581,7 @@ void AM_restoreScaleAndLoc ()
{ {
m_w = old_m_w; m_w = old_m_w;
m_h = old_m_h; m_h = old_m_h;
if (!followplayer) if (!am_followplayer)
{ {
m_x = old_m_x; m_x = old_m_x;
m_y = old_m_y; m_y = old_m_y;
@ -777,7 +778,7 @@ void AM_changeWindowLoc ()
{ {
if (0 != (m_paninc.x | m_paninc.y)) if (0 != (m_paninc.x | m_paninc.y))
{ {
followplayer = 0; am_followplayer = false;
f_oldloc.x = FIXED_MAX; f_oldloc.x = FIXED_MAX;
} }
@ -1199,7 +1200,7 @@ bool AM_Responder (event_t *ev, bool last)
{ {
if (automapactive && (ev->type == EV_KeyDown || ev->type == EV_KeyUp)) if (automapactive && (ev->type == EV_KeyDown || ev->type == EV_KeyUp))
{ {
if (followplayer) if (am_followplayer)
{ {
// check for am_pan* and ignore in follow mode // check for am_pan* and ignore in follow mode
const char *defbind = AutomapBindings.GetBind(ev->data1); const char *defbind = AutomapBindings.GetBind(ev->data1);
@ -1312,7 +1313,7 @@ void AM_Ticker ()
amclock++; amclock++;
if (followplayer) if (am_followplayer)
{ {
AM_doFollowPlayer(); AM_doFollowPlayer();
} }

View file

@ -1723,7 +1723,8 @@ static FString ParseGameInfo(TArray<FString> &pwads, const char *fn, const char
} }
else if (!nextKey.CompareNoCase("NOSPRITERENAME")) else if (!nextKey.CompareNoCase("NOSPRITERENAME"))
{ {
nospriterename = true; sc.MustGetString();
nospriterename = sc.Compare("true");
} }
else if (!nextKey.CompareNoCase("STARTUPTITLE")) else if (!nextKey.CompareNoCase("STARTUPTITLE"))
{ {

View file

@ -381,6 +381,7 @@ DBaseStatusBar *CreateCustomStatusBar(int script=0);
// Crosshair stuff ---------------------------------------------------------- // Crosshair stuff ----------------------------------------------------------
void ST_FormatMapName(FString &mapname, const char *mapnamecolor = "");
void ST_LoadCrosshair(bool alwaysload=false); void ST_LoadCrosshair(bool alwaysload=false);
extern FTexture *CrosshairImage; extern FTexture *CrosshairImage;

View file

@ -833,10 +833,9 @@ void DrawHUD()
} }
else else
{ {
FString mapname;
char printstr[256]; char printstr[256];
int seconds; int seconds;
cluster_info_t *thiscluster = FindClusterInfo (level.cluster);
bool hub = !!(thiscluster->flags&CLUSTER_HUB);
int length=8*SmallFont->GetCharWidth('0'); int length=8*SmallFont->GetCharWidth('0');
int fonth=SmallFont->GetHeight()+1; int fonth=SmallFont->GetHeight()+1;
int bottom=hudheight-1; int bottom=hudheight-1;
@ -865,8 +864,8 @@ void DrawHUD()
} }
} }
mysnprintf(printstr, countof(printstr), "%s: %s", level.mapname, level.LevelName.GetChars()); ST_FormatMapName(mapname);
screen->DrawText(SmallFont, hudcolor_titl, 1, hudheight-fonth-1, printstr, screen->DrawText(SmallFont, hudcolor_titl, 1, hudheight-fonth-1, mapname,
DTA_KeepRatio, true, DTA_KeepRatio, true,
DTA_VirtualWidth, hudwidth, DTA_VirtualHeight, hudheight, TAG_DONE); DTA_VirtualWidth, hudwidth, DTA_VirtualHeight, hudheight, TAG_DONE);

View file

@ -95,12 +95,16 @@ CUSTOM_CVAR (Bool, st_scale, true, CVAR_ARCHIVE)
} }
} }
CVAR (Int, crosshair, 0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (Int, crosshair, 0, CVAR_ARCHIVE)
CVAR (Bool, crosshairforce, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (Bool, crosshairforce, false, CVAR_ARCHIVE)
CVAR (Color, crosshaircolor, 0xff0000, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); CVAR (Color, crosshaircolor, 0xff0000, CVAR_ARCHIVE);
CVAR (Bool, crosshairhealth, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); CVAR (Bool, crosshairhealth, true, CVAR_ARCHIVE);
CVAR (Bool, crosshairscale, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); CVAR (Bool, crosshairscale, false, CVAR_ARCHIVE);
CVAR (Bool, crosshairgrow, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); CVAR (Bool, crosshairgrow, false, CVAR_ARCHIVE);
CUSTOM_CVAR(Int, am_showmaplabel, 2, CVAR_ARCHIVE)
{
if (self < 0 || self > 2) self = 2;
}
CVAR (Bool, idmypos, false, 0); CVAR (Bool, idmypos, false, 0);
@ -118,6 +122,30 @@ BYTE DBaseStatusBar::DamageToAlpha[114] =
230, 231, 232, 233, 234, 235, 235, 236, 237 230, 231, 232, 233, 234, 235, 235, 236, 237
}; };
//---------------------------------------------------------------------------
//
// Format the map name, include the map label if wanted
//
//---------------------------------------------------------------------------
void ST_FormatMapName(FString &mapname, const char *mapnamecolor)
{
cluster_info_t *cluster = FindClusterInfo (level.cluster);
bool ishub = (cluster != NULL && (cluster->flags & CLUSTER_HUB));
if (am_showmaplabel == 1 || (am_showmaplabel == 2 && !ishub))
{
mapname << level.mapname << ": ";
}
mapname << mapnamecolor << level.LevelName;
}
//---------------------------------------------------------------------------
//
// Load crosshair definitions
//
//---------------------------------------------------------------------------
void ST_LoadCrosshair(bool alwaysload) void ST_LoadCrosshair(bool alwaysload)
{ {
int num = 0; int num = 0;
@ -1270,18 +1298,9 @@ void DBaseStatusBar::Draw (EHudState state)
y -= 8; y -= 8;
} }
} }
cluster_info_t *cluster = FindClusterInfo (level.cluster);
if (cluster == NULL || !(cluster->flags & CLUSTER_HUB))
{
mysnprintf (line, countof(line), "%s: ", level.mapname);
}
else
{
*line = 0;
}
FString mapname; FString mapname;
mapname.Format("%s%c%c%s", line, TEXTCOLOR_ESCAPE, CR_GREY + 'A', level.LevelName.GetChars()); ST_FormatMapName(mapname, TEXTCOLOR_GREY);
screen->DrawText (SmallFont, highlight, screen->DrawText (SmallFont, highlight,
(SCREENWIDTH - SmallFont->StringWidth (mapname)*CleanXfac)/2, y, mapname, (SCREENWIDTH - SmallFont->StringWidth (mapname)*CleanXfac)/2, y, mapname,
DTA_CleanNoMove, true, TAG_DONE); DTA_CleanNoMove, true, TAG_DONE);

View file

@ -4325,7 +4325,7 @@ void P_RadiusAttack (AActor *bombspot, AActor *bombsource, int bombdamage, int b
if (thing->flags3 & MF3_NORADIUSDMG && !(bombspot->flags4 & MF4_FORCERADIUSDMG)) if (thing->flags3 & MF3_NORADIUSDMG && !(bombspot->flags4 & MF4_FORCERADIUSDMG))
continue; continue;
if (!DamageSource && thing == bombsource) if (!DamageSource && (thing == bombsource || thing == bombspot))
{ // don't damage the source of the explosion { // don't damage the source of the explosion
continue; continue;
} }

View file

@ -3,5 +3,5 @@
// This file was automatically generated by the // This file was automatically generated by the
// updaterevision tool. Do not edit by hand. // updaterevision tool. Do not edit by hand.
#define ZD_SVN_REVISION_STRING "2957" #define ZD_SVN_REVISION_STRING "2965"
#define ZD_SVN_REVISION_NUMBER 2957 #define ZD_SVN_REVISION_NUMBER 2965

View file

@ -79,7 +79,7 @@ void WI_unloadData ();
// NET GAME STUFF // NET GAME STUFF
#define NG_STATSY 50 #define NG_STATSY 50
#define NG_STATSX (32 + star->GetWidth()/2 + 32*!dofrags) #define NG_STATSX (32 + star->GetScaledWidth()/2 + 32*!dofrags)
#define NG_SPACINGX 64 #define NG_SPACINGX 64
@ -606,8 +606,8 @@ void WI_drawBackground()
// scale all animations below to fit the size of the base pic // scale all animations below to fit the size of the base pic
// The base pic is always scaled to fit the screen so this allows // The base pic is always scaled to fit the screen so this allows
// placing the animations precisely where they belong on the base pic // placing the animations precisely where they belong on the base pic
animwidth = background->GetScaledWidth(); animwidth = background->GetScaledWidthDouble();
animheight = background->GetScaledHeight(); animheight = background->GetScaledHeightDouble();
screen->FillBorder (NULL); screen->FillBorder (NULL);
screen->DrawTexture(background, 0, 0, DTA_Fullscreen, true, TAG_DONE); screen->DrawTexture(background, 0, 0, DTA_Fullscreen, true, TAG_DONE);
} }
@ -746,8 +746,8 @@ int WI_drawLF ()
// draw <LevelName> // draw <LevelName>
if (tex) if (tex)
{ {
screen->DrawTexture(tex, midx - tex->GetWidth()*CleanXfac/2, y, DTA_CleanNoMove, true, TAG_DONE); screen->DrawTexture(tex, midx - tex->GetScaledWidth()*CleanXfac/2, y, DTA_CleanNoMove, true, TAG_DONE);
y += (tex->GetHeight() + BigFont->GetHeight()/4) * CleanYfac; y += (tex->GetScaledHeight() + BigFont->GetHeight()/4) * CleanYfac;
} }
else else
{ {
@ -761,8 +761,8 @@ int WI_drawLF ()
// don't draw 'finished' if the level name is too high! // don't draw 'finished' if the level name is too high!
if (gameinfo.gametype & GAME_DoomChex) if (gameinfo.gametype & GAME_DoomChex)
{ {
screen->DrawTexture(finished, midx - finished->GetWidth()*CleanXfac/2, y, DTA_CleanNoMove, true, TAG_DONE); screen->DrawTexture(finished, midx - finished->GetScaledWidth()*CleanXfac/2, y, DTA_CleanNoMove, true, TAG_DONE);
return y + finished->GetHeight() * CleanYfac; return y + finished->GetScaledHeight() * CleanYfac;
} }
else else
{ {
@ -793,8 +793,8 @@ void WI_drawEL ()
// be careful with the added height so that it works for oversized 'entering' patches! // be careful with the added height so that it works for oversized 'entering' patches!
if (gameinfo.gametype & GAME_DoomChex) if (gameinfo.gametype & GAME_DoomChex)
{ {
screen->DrawTexture(entering, (SCREENWIDTH - entering->GetWidth() * CleanXfac) / 2, y, DTA_CleanNoMove, true, TAG_DONE); screen->DrawTexture(entering, (SCREENWIDTH - entering->GetScaledWidth() * CleanXfac) / 2, y, DTA_CleanNoMove, true, TAG_DONE);
y += (entering->GetHeight() + font->GetHeight()/4) * CleanYfac; y += (entering->GetScaledHeight() + font->GetHeight()/4) * CleanYfac;
} }
else else
{ {
@ -808,7 +808,7 @@ void WI_drawEL ()
FTexture *tex = wbs->LName1; FTexture *tex = wbs->LName1;
if (tex) if (tex)
{ {
screen->DrawTexture(tex, (SCREENWIDTH - tex->GetWidth() * CleanXfac) / 2, y, DTA_CleanNoMove, true, TAG_DONE); screen->DrawTexture(tex, (SCREENWIDTH - tex->GetScaledWidth() * CleanXfac) / 2, y, DTA_CleanNoMove, true, TAG_DONE);
} }
else else
{ {
@ -853,10 +853,10 @@ void WI_drawOnLnode( int n, FTexture * c[] ,int numc)
int bottom; int bottom;
right = c[i]->GetWidth(); right = c[i]->GetScaledWidth();
bottom = c[i]->GetHeight(); bottom = c[i]->GetScaledHeight();
left = lnodes[n].x - c[i]->LeftOffset; left = lnodes[n].x - c[i]->GetScaledLeftOffset();
top = lnodes[n].y - c[i]->TopOffset; top = lnodes[n].y - c[i]->GetScaledTopOffset();
right += left; right += left;
bottom += top; bottom += top;
@ -980,7 +980,7 @@ void WI_drawTime (int x, int y, int t, bool no_sucks=false)
{ // "sucks" { // "sucks"
if (sucks != NULL) if (sucks != NULL)
{ {
screen->DrawTexture (sucks, x - sucks->GetWidth(), y - IntermissionFont->GetHeight() - 2, screen->DrawTexture (sucks, x - sucks->GetScaledWidth(), y - IntermissionFont->GetHeight() - 2,
DTA_Clean, true, TAG_DONE); DTA_Clean, true, TAG_DONE);
} }
else else

View file

@ -4,6 +4,7 @@
HUDFONT_DOOM HUDFONT_DOOM
{ {
- STTMINUS - STTMINUS
% STTPRCNT
0 STTNUM0 0 STTNUM0
1 STTNUM1 1 STTNUM1
2 STTNUM2 2 STTNUM2

View file

@ -841,6 +841,13 @@ OptionValue OverlayTypes
2, "Overlay Only" 2, "Overlay Only"
} }
OptionValue MaplabelTypes
{
0, "Never"
1, "Always"
2, "Not for hubs"
}
OptionMenu AutomapOptions OptionMenu AutomapOptions
{ {
Title "AUTOMAP OPTIONS" Title "AUTOMAP OPTIONS"
@ -851,6 +858,7 @@ OptionMenu AutomapOptions
Option "Rotate automap", "am_rotate", "RotateTypes" Option "Rotate automap", "am_rotate", "RotateTypes"
Option "Overlay automap", "am_overlay", "OverlayTypes" Option "Overlay automap", "am_overlay", "OverlayTypes"
Option "Enable textured display", "am_textured", "OnOff" Option "Enable textured display", "am_textured", "OnOff"
Option "Follow player", "am_followplayer", "OnOff"
StaticText " " StaticText " "
Option "Show item counts", "am_showitems", "OnOff" Option "Show item counts", "am_showitems", "OnOff"
Option "Show monster counts", "am_showmonsters", "OnOff" Option "Show monster counts", "am_showmonsters", "OnOff"
@ -858,6 +866,7 @@ OptionMenu AutomapOptions
Option "Show time elapsed", "am_showtime", "OnOff" Option "Show time elapsed", "am_showtime", "OnOff"
Option "Show total time elapsed", "am_showtotaltime", "OnOff" Option "Show total time elapsed", "am_showtotaltime", "OnOff"
Option "Show secrets on map", "am_map_secrets", "SecretTypes" Option "Show secrets on map", "am_map_secrets", "SecretTypes"
Option "Show map label", "am_showmaplabel", "MaplabelTypes"
Option "Draw map background", "am_drawmapback", "OnOff" Option "Draw map background", "am_drawmapback", "OnOff"
Option "Show keys (cheat)", "am_showkeys", "OnOff" Option "Show keys (cheat)", "am_showkeys", "OnOff"
} }