- Fixed: Hires texture replacements must call AddPatch if the texture

isn't defined yet in order to replace lumps that are not in the
  list of preinitialized graphics.
- Changed font initialization to occur after textures have been completely
  initialized. This is necessary so that the font characters can be
  replaced with hires versions.


SVN r351 (trunk)
This commit is contained in:
Christoph Oelckers 2006-10-06 21:07:58 +00:00
parent 6fe9c98b47
commit 3dabd38359
6 changed files with 74 additions and 48 deletions

View file

@ -1,3 +1,11 @@
October 6, 2006 (Changes by Graf Zahl)
- Fixed: Hires texture replacements must call AddPatch if the texture
isn't defined yet in order to replace lumps that are not in the
list of preinitialized graphics.
- Changed font initialization to occur after textures have been completely
initialized. This is necessary so that the font characters can be
replaced with hires versions.
October 5, 2006 (Changes by Graf Zahl) October 5, 2006 (Changes by Graf Zahl)
- Fixed: Hires texture replacements and auto-scaled flats require the - Fixed: Hires texture replacements and auto-scaled flats require the
bWorldPanning flag. Also added some NULL pointer checks to the bWorldPanning flag. Also added some NULL pointer checks to the

View file

@ -2134,10 +2134,7 @@ void G_FinishTravel ()
pawndup->Destroy (); pawndup->Destroy ();
pawn->LinkToWorld (); pawn->LinkToWorld ();
pawn->AddToHash (); pawn->AddToHash ();
if (pawn->InStateSequence(pawn->state, pawn->PainState)) pawn->SetState(pawn->SpawnState);
{
pawn->SetState(pawn->SeeState);
}
for (inv = pawn->Inventory; inv != NULL; inv = inv->Inventory) for (inv = pawn->Inventory; inv != NULL; inv = inv->Inventory)
{ {

View file

@ -321,6 +321,10 @@ void FTextureManager::AddHiresTextures ()
{ {
int oldtexno = CheckForTexture(name, FTexture::TEX_Wall, TEXMAN_Overridable|TEXMAN_TryAny); int oldtexno = CheckForTexture(name, FTexture::TEX_Wall, TEXMAN_Overridable|TEXMAN_TryAny);
if (oldtexno<0)
{
oldtexno = AddPatch(name);
}
newtex->bWorldPanning = true; newtex->bWorldPanning = true;
if (oldtexno<0) if (oldtexno<0)
{ {
@ -380,6 +384,11 @@ void FTextureManager::LoadHiresTex()
int tex = TexMan.CheckForTexture(sc_String, type, mode); int tex = TexMan.CheckForTexture(sc_String, type, mode);
if (tex<0)
{
tex= AddPatch(sc_String);
}
SC_MustGetString(); SC_MustGetString();
int lumpnum = Wads.CheckNumForFullName(sc_String); int lumpnum = Wads.CheckNumForFullName(sc_String);
if (lumpnum < 0) lumpnum = Wads.CheckNumForName(sc_String, ns_graphics); if (lumpnum < 0) lumpnum = Wads.CheckNumForName(sc_String, ns_graphics);
@ -717,6 +726,7 @@ void R_InitData ()
TexMan.AddHiresTextures (); TexMan.AddHiresTextures ();
TexMan.LoadHiresTex (); TexMan.LoadHiresTex ();
TexMan.DefaultTexture = TexMan.CheckForTexture ("-NOFLAT-", FTexture::TEX_Override, 0); TexMan.DefaultTexture = TexMan.CheckForTexture ("-NOFLAT-", FTexture::TEX_Override, 0);
V_InitFonts();
R_InitColormaps (); R_InitColormaps ();
C_InitConsole (SCREENWIDTH, SCREENHEIGHT, true); C_InitConsole (SCREENWIDTH, SCREENHEIGHT, true);

View file

@ -51,6 +51,7 @@
#include "gi.h" #include "gi.h"
#include "cmdlib.h" #include "cmdlib.h"
#include "sc_man.h" #include "sc_man.h"
#include "hu_stuff.h"
// MACROS ------------------------------------------------------------------ // MACROS ------------------------------------------------------------------
@ -278,8 +279,8 @@ FFont::FFont (const char *name, const char *nametemplate, int first, int count,
if (lump >= 0) if (lump >= 0)
{ {
FTexture *pic = TexMan[TexMan.AddPatch (buffer)]; FTexture *pic = TexMan[TexMan.AddPatch (buffer)];
int height = pic->GetHeight(); int height = pic->GetScaledHeight();
int yoffs = pic->TopOffset; int yoffs = pic->GetScaledTopOffset();
if (yoffs > maxyoffs) if (yoffs > maxyoffs)
{ {
@ -310,7 +311,7 @@ FFont::FFont (const char *name, const char *nametemplate, int first, int count,
if ('N'-first>=0 && 'N'-first<count && Chars['N' - first].Pic) if ('N'-first>=0 && 'N'-first<count && Chars['N' - first].Pic)
{ {
SpaceWidth = (Chars['N' - first].Pic->GetWidth() + 1) / 2; SpaceWidth = (Chars['N' - first].Pic->GetScaledWidth() + 1) / 2;
} }
else else
{ {
@ -635,7 +636,7 @@ FTexture *FFont::GetChar (int code, int *const width) const
} }
code -= FirstChar; code -= FirstChar;
*width = Chars[code].Pic->GetWidth(); *width = Chars[code].Pic->GetScaledWidth();
return Chars[code].Pic; return Chars[code].Pic;
} }
@ -667,7 +668,7 @@ int FFont::GetCharWidth (int code) const
} }
} }
return Chars[code - FirstChar].Pic->GetWidth(); return Chars[code - FirstChar].Pic->GetScaledWidth();
} }
@ -1362,8 +1363,8 @@ FSpecialFont::FSpecialFont (const char *name, int first, int count, int *lumplis
{ {
Wads.GetLumpName(buffer, lump); Wads.GetLumpName(buffer, lump);
FTexture *pic = TexMan[TexMan.AddPatch (buffer)]; FTexture *pic = TexMan[TexMan.AddPatch (buffer)];
int height = pic->GetHeight(); int height = pic->GetScaledHeight();
int yoffs = pic->TopOffset; int yoffs = pic->GetScaledTopOffset();
if (yoffs > maxyoffs) if (yoffs > maxyoffs)
{ {
@ -1418,7 +1419,7 @@ FSpecialFont::FSpecialFont (const char *name, int first, int count, int *lumplis
// Special fonts normally don't have all characters so be careful here! // Special fonts normally don't have all characters so be careful here!
if ('N'-first>=0 && 'N'-first<count && Chars['N' - first].Pic) if ('N'-first>=0 && 'N'-first<count && Chars['N' - first].Pic)
{ {
SpaceWidth = (Chars['N' - first].Pic->GetWidth() + 1) / 2; SpaceWidth = (Chars['N' - first].Pic->GetScaledWidth() + 1) / 2;
} }
else else
{ {
@ -1816,3 +1817,47 @@ EColorRange V_FindFontColor (FName name)
} }
return CR_UNTRANSLATED; return CR_UNTRANSLATED;
} }
//==========================================================================
//
// V_InitFonts
//
//==========================================================================
void V_InitFonts()
{
V_InitFontColors ();
// load the heads-up font
if (Wads.CheckNumForName ("FONTA_S") >= 0)
{
SmallFont = new FFont ("SmallFont", "FONTA%02u", HU_FONTSTART, HU_FONTSIZE, 1);
}
else
{
SmallFont = new FFont ("SmallFont", "STCFN%.3d", HU_FONTSTART, HU_FONTSIZE, HU_FONTSTART);
}
if (Wads.CheckNumForName ("STBFN033", ns_graphics) >= 0)
{
SmallFont2 = new FFont ("SmallFont2", "STBFN%.3d", HU_FONTSTART, HU_FONTSIZE, HU_FONTSTART);
}
else
{
SmallFont2 = SmallFont;
}
if (gameinfo.gametype == GAME_Doom)
{
BigFont = new FSingleLumpFont ("BigFont", Wads.GetNumForName ("DBIGFONT"));
}
else if (gameinfo.gametype == GAME_Strife)
{
BigFont = new FSingleLumpFont ("BigFont", Wads.GetNumForName ("SBIGFONT"));
}
else
{
BigFont = new FFont ("BigFont", "FONTB%02u", HU_FONTSTART, HU_FONTSIZE, 1);
}
ConFont = new FSingleLumpFont ("ConsoleFont", Wads.GetNumForName ("CONFONT"));
V_InitCustomFonts ();
screen->SetFont(SmallFont);
}

View file

@ -150,8 +150,7 @@ void RecordTextureColors (FTexture *pic, BYTE *colorsused);
extern FFont *SmallFont, *SmallFont2, *BigFont, *ConFont; extern FFont *SmallFont, *SmallFont2, *BigFont, *ConFont;
void V_InitCustomFonts (); void V_InitFonts();
void V_InitFontColors ();
EColorRange V_FindFontColor (FName name); EColorRange V_FindFontColor (FName name);
FFont * V_GetFont(const char *); FFont * V_GetFont(const char *);

View file

@ -924,39 +924,6 @@ void V_Init (void)
Printf ("Resolution: %d x %d\n", SCREENWIDTH, SCREENHEIGHT); Printf ("Resolution: %d x %d\n", SCREENWIDTH, SCREENHEIGHT);
FBaseCVar::ResetColors (); FBaseCVar::ResetColors ();
V_InitFontColors ();
// load the heads-up font
if (Wads.CheckNumForName ("FONTA_S") >= 0)
{
SmallFont = new FFont ("SmallFont", "FONTA%02u", HU_FONTSTART, HU_FONTSIZE, 1);
}
else
{
SmallFont = new FFont ("SmallFont", "STCFN%.3d", HU_FONTSTART, HU_FONTSIZE, HU_FONTSTART);
}
if (Wads.CheckNumForName ("STBFN033", ns_graphics) >= 0)
{
SmallFont2 = new FFont ("SmallFont2", "STBFN%.3d", HU_FONTSTART, HU_FONTSIZE, HU_FONTSTART);
}
else
{
SmallFont2 = SmallFont;
}
if (gameinfo.gametype == GAME_Doom)
{
BigFont = new FSingleLumpFont ("BigFont", Wads.GetNumForName ("DBIGFONT"));
}
else if (gameinfo.gametype == GAME_Strife)
{
BigFont = new FSingleLumpFont ("BigFont", Wads.GetNumForName ("SBIGFONT"));
}
else
{
BigFont = new FFont ("BigFont", "FONTB%02u", HU_FONTSTART, HU_FONTSIZE, 1);
}
ConFont = new FSingleLumpFont ("ConsoleFont", Wads.GetNumForName ("CONFONT"));
V_InitCustomFonts ();
BuildTransTable (GPalette.BaseColors); BuildTransTable (GPalette.BaseColors);
} }