mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 07:12:02 +00:00
- fixed: The TouchedActors array in the Dehacked parser was not freed after parsing was done.
- Initialize the alt HUD explicitly in D_DoomMain. - don't let S_UnloadReverbDef leave a broken list of sound environments behind. - Added more code to explicitly delete data before initializing it. SVN r3039 (trunk)
This commit is contained in:
parent
22372fff25
commit
770a879f6a
25 changed files with 156 additions and 38 deletions
|
@ -2880,6 +2880,8 @@ void FinishDehPatch ()
|
||||||
// Now that all Dehacked patches have been processed, it's okay to free StateMap.
|
// Now that all Dehacked patches have been processed, it's okay to free StateMap.
|
||||||
StateMap.Clear();
|
StateMap.Clear();
|
||||||
StateMap.ShrinkToFit();
|
StateMap.ShrinkToFit();
|
||||||
|
TouchedActors.Clear();
|
||||||
|
TouchedActors.ShrinkToFit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModifyDropAmount(AInventory *inv, int dropamount);
|
void ModifyDropAmount(AInventory *inv, int dropamount);
|
||||||
|
|
|
@ -122,6 +122,7 @@ extern void M_SetDefaultMode ();
|
||||||
extern void R_ExecuteSetViewSize ();
|
extern void R_ExecuteSetViewSize ();
|
||||||
extern void G_NewInit ();
|
extern void G_NewInit ();
|
||||||
extern void SetupPlayerClasses ();
|
extern void SetupPlayerClasses ();
|
||||||
|
extern void HUD_InitHud();
|
||||||
const FIWADInfo *D_FindIWAD(TArray<FString> &wadfiles, const char *iwad, const char *basewad);
|
const FIWADInfo *D_FindIWAD(TArray<FString> &wadfiles, const char *iwad, const char *basewad);
|
||||||
|
|
||||||
// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
|
// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
|
||||||
|
@ -2134,7 +2135,6 @@ void D_DoomMain (void)
|
||||||
R_Init ();
|
R_Init ();
|
||||||
|
|
||||||
Printf ("DecalLibrary: Load decals.\n");
|
Printf ("DecalLibrary: Load decals.\n");
|
||||||
DecalLibrary.Clear ();
|
|
||||||
DecalLibrary.ReadAllDecals ();
|
DecalLibrary.ReadAllDecals ();
|
||||||
|
|
||||||
// [RH] Add any .deh and .bex files on the command line.
|
// [RH] Add any .deh and .bex files on the command line.
|
||||||
|
@ -2187,6 +2187,7 @@ void D_DoomMain (void)
|
||||||
|
|
||||||
//SBarInfo support.
|
//SBarInfo support.
|
||||||
SBarInfo::Load();
|
SBarInfo::Load();
|
||||||
|
HUD_InitHud();
|
||||||
|
|
||||||
// [RH] User-configurable startup strings. Because BOOM does.
|
// [RH] User-configurable startup strings. Because BOOM does.
|
||||||
static const char *startupString[5] = {
|
static const char *startupString[5] = {
|
||||||
|
|
|
@ -383,6 +383,7 @@ DBaseStatusBar *CreateCustomStatusBar(int script=0);
|
||||||
|
|
||||||
void ST_FormatMapName(FString &mapname, const char *mapnamecolor = "");
|
void ST_FormatMapName(FString &mapname, const char *mapnamecolor = "");
|
||||||
void ST_LoadCrosshair(bool alwaysload=false);
|
void ST_LoadCrosshair(bool alwaysload=false);
|
||||||
|
void ST_Clear();
|
||||||
extern FTexture *CrosshairImage;
|
extern FTexture *CrosshairImage;
|
||||||
|
|
||||||
#endif /* __SBAR_H__ */
|
#endif /* __SBAR_H__ */
|
||||||
|
|
|
@ -423,6 +423,8 @@ static void FreeSBarInfoScript()
|
||||||
|
|
||||||
void SBarInfo::Load()
|
void SBarInfo::Load()
|
||||||
{
|
{
|
||||||
|
FreeSBarInfoScript();
|
||||||
|
MugShotStates.Clear();
|
||||||
if(gameinfo.statusbar.IsNotEmpty())
|
if(gameinfo.statusbar.IsNotEmpty())
|
||||||
{
|
{
|
||||||
int lump = Wads.CheckNumForFullName(gameinfo.statusbar, true);
|
int lump = Wads.CheckNumForFullName(gameinfo.statusbar, true);
|
||||||
|
|
|
@ -769,14 +769,11 @@ static void DrawCoordinates(player_t * CPlayer)
|
||||||
// draw the overlay
|
// draw the overlay
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
void HUD_InitHud();
|
|
||||||
|
|
||||||
void DrawHUD()
|
void DrawHUD()
|
||||||
{
|
{
|
||||||
player_t * CPlayer = StatusBar->CPlayer;
|
player_t * CPlayer = StatusBar->CPlayer;
|
||||||
|
|
||||||
if (HudFont==NULL) HUD_InitHud();
|
|
||||||
|
|
||||||
players[consoleplayer].inventorytics = 0;
|
players[consoleplayer].inventorytics = 0;
|
||||||
if (hud_althudscale && SCREENWIDTH>640)
|
if (hud_althudscale && SCREENWIDTH>640)
|
||||||
{
|
{
|
||||||
|
|
|
@ -197,6 +197,23 @@ void ST_LoadCrosshair(bool alwaysload)
|
||||||
CrosshairImage = TexMan[TexMan.CheckForTexture(name, FTexture::TEX_MiscPatch)];
|
CrosshairImage = TexMan[TexMan.CheckForTexture(name, FTexture::TEX_MiscPatch)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// ST_Clear
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ST_Clear()
|
||||||
|
{
|
||||||
|
if (StatusBar != NULL)
|
||||||
|
{
|
||||||
|
StatusBar->Destroy();
|
||||||
|
StatusBar = NULL;
|
||||||
|
}
|
||||||
|
CrosshairImage = NULL;
|
||||||
|
CrosshairNum = 0;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// Constructor
|
// Constructor
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
#include "w_wad.h"
|
#include "w_wad.h"
|
||||||
|
|
||||||
TArray<FKeySection> KeySections;
|
TArray<FKeySection> KeySections;
|
||||||
|
extern TArray<FString> KeyConfWeapons;
|
||||||
|
|
||||||
static void LoadKeys (const char *modname, bool dbl)
|
static void LoadKeys (const char *modname, bool dbl)
|
||||||
{
|
{
|
||||||
|
@ -159,6 +160,7 @@ void D_LoadWadSettings ()
|
||||||
|
|
||||||
ParsingKeyConf = true;
|
ParsingKeyConf = true;
|
||||||
KeySections.Clear();
|
KeySections.Clear();
|
||||||
|
KeyConfWeapons.Clear();
|
||||||
|
|
||||||
while ((lump = Wads.FindLump ("KEYCONF", &lastlump)) != -1)
|
while ((lump = Wads.FindLump ("KEYCONF", &lastlump)) != -1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -53,9 +53,10 @@
|
||||||
class DLoadSaveMenu : public DListMenu
|
class DLoadSaveMenu : public DListMenu
|
||||||
{
|
{
|
||||||
DECLARE_CLASS(DLoadSaveMenu, DListMenu)
|
DECLARE_CLASS(DLoadSaveMenu, DListMenu)
|
||||||
|
friend void ClearSaveGames();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static TDeletingArray<FSaveGameNode*> SaveGames;
|
static TArray<FSaveGameNode*> SaveGames;
|
||||||
static int LastSaved;
|
static int LastSaved;
|
||||||
static int LastAccessed;
|
static int LastAccessed;
|
||||||
|
|
||||||
|
@ -114,7 +115,7 @@ public:
|
||||||
|
|
||||||
IMPLEMENT_CLASS(DLoadSaveMenu)
|
IMPLEMENT_CLASS(DLoadSaveMenu)
|
||||||
|
|
||||||
TDeletingArray<FSaveGameNode*> DLoadSaveMenu::SaveGames;
|
TArray<FSaveGameNode*> DLoadSaveMenu::SaveGames;
|
||||||
int DLoadSaveMenu::LastSaved = -1;
|
int DLoadSaveMenu::LastSaved = -1;
|
||||||
int DLoadSaveMenu::LastAccessed = -1;
|
int DLoadSaveMenu::LastAccessed = -1;
|
||||||
|
|
||||||
|
@ -126,6 +127,21 @@ FSaveGameNode *quickSaveSlot;
|
||||||
//
|
//
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
|
void ClearSaveGames()
|
||||||
|
{
|
||||||
|
for(unsigned i=0;i<DLoadSaveMenu::SaveGames.Size(); i++)
|
||||||
|
{
|
||||||
|
delete DLoadSaveMenu::SaveGames[i];
|
||||||
|
}
|
||||||
|
DLoadSaveMenu::SaveGames.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//
|
||||||
|
// Save data maintenance (stored statically)
|
||||||
|
//
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
int DLoadSaveMenu::RemoveSaveSlot (int index)
|
int DLoadSaveMenu::RemoveSaveSlot (int index)
|
||||||
{
|
{
|
||||||
FSaveGameNode *file = SaveGames[index];
|
FSaveGameNode *file = SaveGames[index];
|
||||||
|
@ -194,6 +210,8 @@ void DLoadSaveMenu::ReadSaveStrings ()
|
||||||
findstate_t c_file;
|
findstate_t c_file;
|
||||||
FString filter;
|
FString filter;
|
||||||
|
|
||||||
|
LastSaved = LastAccessed = -1;
|
||||||
|
quickSaveSlot = NULL;
|
||||||
filter = G_BuildSaveName ("*.zds", -1);
|
filter = G_BuildSaveName ("*.zds", -1);
|
||||||
filefirst = I_FindFirst (filter.GetChars(), &c_file);
|
filefirst = I_FindFirst (filter.GetChars(), &c_file);
|
||||||
if (filefirst != ((void *)(-1)))
|
if (filefirst != ((void *)(-1)))
|
||||||
|
|
|
@ -111,6 +111,22 @@ struct FListMenuDescriptor : public FMenuDescriptor
|
||||||
const PClass *mClass;
|
const PClass *mClass;
|
||||||
FMenuDescriptor *mRedirect; // used to redirect overlong skill and episode menus to option menu based alternatives
|
FMenuDescriptor *mRedirect; // used to redirect overlong skill and episode menus to option menu based alternatives
|
||||||
bool mCenter;
|
bool mCenter;
|
||||||
|
|
||||||
|
void Reset()
|
||||||
|
{
|
||||||
|
// Reset the default settings (ignore all other values in the struct)
|
||||||
|
mSelectOfsX = 0;
|
||||||
|
mSelectOfsY = 0;
|
||||||
|
mSelector.SetInvalid();
|
||||||
|
mDisplayTop = 0;
|
||||||
|
mXpos = 0;
|
||||||
|
mYpos = 0;
|
||||||
|
mLinespacing = 0;
|
||||||
|
mNetgameMessage = "";
|
||||||
|
mFont = NULL;
|
||||||
|
mFontColor = CR_UNTRANSLATED;
|
||||||
|
mFontColor2 = CR_UNTRANSLATED;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FOptionMenuSettings
|
struct FOptionMenuSettings
|
||||||
|
@ -141,6 +157,14 @@ struct FOptionMenuDescriptor : public FMenuDescriptor
|
||||||
|
|
||||||
void CalcIndent();
|
void CalcIndent();
|
||||||
FOptionMenuItem *GetItem(FName name);
|
FOptionMenuItem *GetItem(FName name);
|
||||||
|
void Reset()
|
||||||
|
{
|
||||||
|
// Reset the default settings (ignore all other values in the struct)
|
||||||
|
mPosition = 0;
|
||||||
|
mScrollTop = 0;
|
||||||
|
mIndent = 0;
|
||||||
|
mDontDim = 0;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,8 @@
|
||||||
|
|
||||||
#include "optionmenuitems.h"
|
#include "optionmenuitems.h"
|
||||||
|
|
||||||
|
void ClearSaveGames();
|
||||||
|
|
||||||
MenuDescriptorList MenuDescriptors;
|
MenuDescriptorList MenuDescriptors;
|
||||||
static FListMenuDescriptor DefaultListMenuSettings; // contains common settings for all list menus
|
static FListMenuDescriptor DefaultListMenuSettings; // contains common settings for all list menus
|
||||||
static FOptionMenuDescriptor DefaultOptionMenuSettings; // contains common settings for all Option menus
|
static FOptionMenuDescriptor DefaultOptionMenuSettings; // contains common settings for all Option menus
|
||||||
|
@ -84,6 +86,8 @@ static void DeinitMenus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DMenu::CurrentMenu = NULL;
|
DMenu::CurrentMenu = NULL;
|
||||||
|
DefaultListMenuSettings.mItems.Clear();
|
||||||
|
ClearSaveGames();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
@ -825,8 +829,11 @@ void M_ParseMenuDefs()
|
||||||
OptionSettings.mFontColorHeader = V_FindFontColor(gameinfo.mFontColorHeader);
|
OptionSettings.mFontColorHeader = V_FindFontColor(gameinfo.mFontColorHeader);
|
||||||
OptionSettings.mFontColorHighlight = V_FindFontColor(gameinfo.mFontColorHighlight);
|
OptionSettings.mFontColorHighlight = V_FindFontColor(gameinfo.mFontColorHighlight);
|
||||||
OptionSettings.mFontColorSelection = V_FindFontColor(gameinfo.mFontColorSelection);
|
OptionSettings.mFontColorSelection = V_FindFontColor(gameinfo.mFontColorSelection);
|
||||||
|
DefaultListMenuSettings.Reset();
|
||||||
|
DefaultOptionMenuSettings.Reset();
|
||||||
|
|
||||||
atterm( DeinitMenus);
|
atterm( DeinitMenus);
|
||||||
|
DeinitMenus();
|
||||||
while ((lump = Wads.FindLump ("MENUDEF", &lastlump)) != -1)
|
while ((lump = Wads.FindLump ("MENUDEF", &lastlump)) != -1)
|
||||||
{
|
{
|
||||||
FScanner sc(lump);
|
FScanner sc(lump);
|
||||||
|
@ -841,6 +848,10 @@ void M_ParseMenuDefs()
|
||||||
else if (sc.Compare("DEFAULTLISTMENU"))
|
else if (sc.Compare("DEFAULTLISTMENU"))
|
||||||
{
|
{
|
||||||
ParseListMenuBody(sc, &DefaultListMenuSettings);
|
ParseListMenuBody(sc, &DefaultListMenuSettings);
|
||||||
|
if (DefaultListMenuSettings.mItems.Size() > 0)
|
||||||
|
{
|
||||||
|
I_FatalError("You cannot add menu items to the menu default settings.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (sc.Compare("OPTIONVALUE"))
|
else if (sc.Compare("OPTIONVALUE"))
|
||||||
{
|
{
|
||||||
|
@ -861,6 +872,10 @@ void M_ParseMenuDefs()
|
||||||
else if (sc.Compare("DEFAULTOPTIONMENU"))
|
else if (sc.Compare("DEFAULTOPTIONMENU"))
|
||||||
{
|
{
|
||||||
ParseOptionMenuBody(sc, &DefaultOptionMenuSettings);
|
ParseOptionMenuBody(sc, &DefaultOptionMenuSettings);
|
||||||
|
if (DefaultOptionMenuSettings.mItems.Size() > 0)
|
||||||
|
{
|
||||||
|
I_FatalError("You cannot add menu items to the menu default settings.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -4074,11 +4074,7 @@ static void P_Shutdown ()
|
||||||
P_DeinitKeyMessages ();
|
P_DeinitKeyMessages ();
|
||||||
P_FreeLevelData ();
|
P_FreeLevelData ();
|
||||||
P_FreeExtraLevelData ();
|
P_FreeExtraLevelData ();
|
||||||
if (StatusBar != NULL)
|
ST_Clear();
|
||||||
{
|
|
||||||
StatusBar->Destroy();
|
|
||||||
StatusBar = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -133,6 +133,7 @@ void SetupPlayerClasses ()
|
||||||
{
|
{
|
||||||
FPlayerClass newclass;
|
FPlayerClass newclass;
|
||||||
|
|
||||||
|
PlayerClasses.Clear();
|
||||||
for (unsigned i=0; i<gameinfo.PlayerClasses.Size(); i++)
|
for (unsigned i=0; i<gameinfo.PlayerClasses.Size(); i++)
|
||||||
{
|
{
|
||||||
newclass.Flags = 0;
|
newclass.Flags = 0;
|
||||||
|
|
|
@ -127,6 +127,22 @@ void R_SetDefaultColormap (const char *name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// R_DeinitColormaps
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
void R_DeinitColormaps ()
|
||||||
|
{
|
||||||
|
fakecmaps.Clear();
|
||||||
|
if (realcolormaps != NULL)
|
||||||
|
{
|
||||||
|
delete[] realcolormaps;
|
||||||
|
realcolormaps = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// R_InitColormaps
|
// R_InitColormaps
|
||||||
|
@ -141,6 +157,8 @@ void R_InitColormaps ()
|
||||||
|
|
||||||
FakeCmap cm;
|
FakeCmap cm;
|
||||||
|
|
||||||
|
R_DeinitColormaps();
|
||||||
|
|
||||||
cm.name[0] = 0;
|
cm.name[0] = 0;
|
||||||
cm.blend = 0;
|
cm.blend = 0;
|
||||||
fakecmaps.Push(cm);
|
fakecmaps.Push(cm);
|
||||||
|
@ -215,21 +233,6 @@ void R_InitColormaps ()
|
||||||
numfakecmaps = fakecmaps.Size();
|
numfakecmaps = fakecmaps.Size();
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
// R_DeinitColormaps
|
|
||||||
//
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
void R_DeinitColormaps ()
|
|
||||||
{
|
|
||||||
if (realcolormaps != NULL)
|
|
||||||
{
|
|
||||||
delete[] realcolormaps;
|
|
||||||
realcolormaps = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// [RH] Returns an index into realcolormaps. Multiply it by
|
// [RH] Returns an index into realcolormaps. Multiply it by
|
||||||
|
|
|
@ -866,7 +866,10 @@ void R_InitSprites ()
|
||||||
numskins++;
|
numskins++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SpriteFrames.Clear();
|
||||||
|
|
||||||
// [RH] Do some preliminary setup
|
// [RH] Do some preliminary setup
|
||||||
|
if (skins != NULL) delete [] skins;
|
||||||
skins = new FPlayerSkin[numskins];
|
skins = new FPlayerSkin[numskins];
|
||||||
memset (skins, 0, sizeof(*skins) * numskins);
|
memset (skins, 0, sizeof(*skins) * numskins);
|
||||||
for (i = 0; i < numskins; i++)
|
for (i = 0; i < numskins; i++)
|
||||||
|
|
|
@ -869,7 +869,9 @@ void R_DeinitTranslationTables()
|
||||||
translationtables[i][j] = NULL;
|
translationtables[i][j] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
translationtables[i].Clear();
|
||||||
}
|
}
|
||||||
|
BloodTranslationColors.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
|
@ -587,6 +587,7 @@ void S_ParseReverbDef ()
|
||||||
int lump, lastlump = 0;
|
int lump, lastlump = 0;
|
||||||
|
|
||||||
atterm (S_UnloadReverbDef);
|
atterm (S_UnloadReverbDef);
|
||||||
|
S_UnloadReverbDef ();
|
||||||
|
|
||||||
while ((lump = Wads.FindLump ("REVERBS", &lastlump)) != -1)
|
while ((lump = Wads.FindLump ("REVERBS", &lastlump)) != -1)
|
||||||
{
|
{
|
||||||
|
@ -597,15 +598,21 @@ void S_ParseReverbDef ()
|
||||||
void S_UnloadReverbDef ()
|
void S_UnloadReverbDef ()
|
||||||
{
|
{
|
||||||
ReverbContainer *probe = Environments;
|
ReverbContainer *probe = Environments;
|
||||||
|
ReverbContainer **pNext = NULL;
|
||||||
|
|
||||||
while (probe != NULL)
|
while (probe != NULL)
|
||||||
{
|
{
|
||||||
ReverbContainer *next = probe->Next;
|
ReverbContainer *next = probe->Next;
|
||||||
if (!probe->Builtin)
|
if (!probe->Builtin)
|
||||||
{
|
{
|
||||||
|
if (pNext != NULL) *pNext = probe->Next;
|
||||||
delete[] const_cast<char *>(probe->Name);
|
delete[] const_cast<char *>(probe->Name);
|
||||||
delete probe;
|
delete probe;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pNext = &probe->Next;
|
||||||
|
}
|
||||||
probe = next;
|
probe = next;
|
||||||
}
|
}
|
||||||
Environments = &Off;
|
Environments = &Off;
|
||||||
|
|
|
@ -292,6 +292,7 @@ void S_Init ()
|
||||||
if (S_SoundCurve != NULL)
|
if (S_SoundCurve != NULL)
|
||||||
{
|
{
|
||||||
delete[] S_SoundCurve;
|
delete[] S_SoundCurve;
|
||||||
|
S_SoundCurve = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Heretic and Hexen have sound curve lookup tables. Doom does not.
|
// Heretic and Hexen have sound curve lookup tables. Doom does not.
|
||||||
|
|
|
@ -130,11 +130,11 @@ extern TArray<level_info_t> wadlevelinfos;
|
||||||
|
|
||||||
static void ParseStatistics(const char *fn, TArray<FStatistics> &statlist)
|
static void ParseStatistics(const char *fn, TArray<FStatistics> &statlist)
|
||||||
{
|
{
|
||||||
|
statlist.Clear();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
FScanner sc;
|
FScanner sc;
|
||||||
sc.OpenFile(fn);
|
sc.OpenFile(fn);
|
||||||
statlist.Clear();
|
|
||||||
|
|
||||||
while (sc.GetString())
|
while (sc.GetString())
|
||||||
{
|
{
|
||||||
|
|
|
@ -337,6 +337,8 @@ void LoadActors ()
|
||||||
{
|
{
|
||||||
int lastlump, lump;
|
int lastlump, lump;
|
||||||
|
|
||||||
|
StateParams.Clear();
|
||||||
|
GlobalSymbols.ReleaseSymbols();
|
||||||
DropItemList.Clear();
|
DropItemList.Clear();
|
||||||
FScriptPosition::ResetErrorCounter();
|
FScriptPosition::ResetErrorCounter();
|
||||||
InitThingdef();
|
InitThingdef();
|
||||||
|
|
|
@ -123,7 +123,8 @@ class FStateExpressions
|
||||||
TArray<FStateExpression> expressions;
|
TArray<FStateExpression> expressions;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~FStateExpressions();
|
~FStateExpressions() { Clear(); }
|
||||||
|
void Clear();
|
||||||
int Add(FxExpression *x, const PClass *o, bool c);
|
int Add(FxExpression *x, const PClass *o, bool c);
|
||||||
int Reserve(int num, const PClass *cls);
|
int Reserve(int num, const PClass *cls);
|
||||||
void Set(int num, FxExpression *x, bool cloned = false);
|
void Set(int num, FxExpression *x, bool cloned = false);
|
||||||
|
|
|
@ -2765,7 +2765,7 @@ FStateExpressions StateParams;
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
FStateExpressions::~FStateExpressions()
|
void FStateExpressions::Clear()
|
||||||
{
|
{
|
||||||
for(unsigned i=0; i<Size(); i++)
|
for(unsigned i=0; i<Size(); i++)
|
||||||
{
|
{
|
||||||
|
@ -2774,6 +2774,7 @@ FStateExpressions::~FStateExpressions()
|
||||||
delete expressions[i].expr;
|
delete expressions[i].expr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
expressions.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
|
@ -2050,6 +2050,11 @@ void V_InitFontColors ()
|
||||||
|
|
||||||
info.Index = -1;
|
info.Index = -1;
|
||||||
|
|
||||||
|
TranslationParms[0].Clear();
|
||||||
|
TranslationParms[1].Clear();
|
||||||
|
TranslationLookup.Clear();
|
||||||
|
TranslationColors.Clear();
|
||||||
|
|
||||||
while ((lump = Wads.FindLump ("TEXTCOLO", &lastlump)) != -1)
|
while ((lump = Wads.FindLump ("TEXTCOLO", &lastlump)) != -1)
|
||||||
{
|
{
|
||||||
if (gameinfo.flags & GI_NOTEXTCOLOR)
|
if (gameinfo.flags & GI_NOTEXTCOLOR)
|
||||||
|
@ -2435,3 +2440,13 @@ void V_InitFonts()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void V_ClearFonts()
|
||||||
|
{
|
||||||
|
while (FFont::FirstFont != NULL)
|
||||||
|
{
|
||||||
|
delete FFont::FirstFont;
|
||||||
|
}
|
||||||
|
FFont::FirstFont = NULL;
|
||||||
|
SmallFont = SmallFont2 = BigFont = ConFont = IntermissionFont = NULL;
|
||||||
|
}
|
|
@ -128,7 +128,7 @@ protected:
|
||||||
static FFont *FirstFont;
|
static FFont *FirstFont;
|
||||||
friend struct FontsDeleter;
|
friend struct FontsDeleter;
|
||||||
|
|
||||||
friend void V_Shutdown();
|
friend void V_ClearFonts();
|
||||||
|
|
||||||
friend FArchive &SerializeFFontPtr (FArchive &arc, FFont* &font);
|
friend FArchive &SerializeFFontPtr (FArchive &arc, FFont* &font);
|
||||||
};
|
};
|
||||||
|
@ -137,6 +137,7 @@ protected:
|
||||||
extern FFont *SmallFont, *SmallFont2, *BigFont, *ConFont, *IntermissionFont;
|
extern FFont *SmallFont, *SmallFont2, *BigFont, *ConFont, *IntermissionFont;
|
||||||
|
|
||||||
void V_InitFonts();
|
void V_InitFonts();
|
||||||
|
void V_ClearFonts();
|
||||||
EColorRange V_FindFontColor (FName name);
|
EColorRange V_FindFontColor (FName name);
|
||||||
PalEntry V_LogColorFromColorRange (EColorRange range);
|
PalEntry V_LogColorFromColorRange (EColorRange range);
|
||||||
EColorRange V_ParseFontColor (const BYTE *&color_value, int normalcolor, int boldcolor);
|
EColorRange V_ParseFontColor (const BYTE *&color_value, int normalcolor, int boldcolor);
|
||||||
|
|
|
@ -1692,10 +1692,7 @@ void V_Shutdown()
|
||||||
s->ObjectFlags |= OF_YesReallyDelete;
|
s->ObjectFlags |= OF_YesReallyDelete;
|
||||||
delete s;
|
delete s;
|
||||||
}
|
}
|
||||||
while (FFont::FirstFont != NULL)
|
V_ClearFonts();
|
||||||
{
|
|
||||||
delete FFont::FirstFont;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EXTERN_CVAR (Bool, vid_tft)
|
EXTERN_CVAR (Bool, vid_tft)
|
||||||
|
|
|
@ -156,16 +156,23 @@ struct XlatParseContext : public FParseContext
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
|
void P_ClearTranslator()
|
||||||
|
{
|
||||||
|
SimpleLineTranslations.Clear();
|
||||||
|
NumBoomish = 0;
|
||||||
|
SectorTranslations.Clear();
|
||||||
|
SectorMasks.Clear();
|
||||||
|
memset(LineFlagTranslations, 0, sizeof(LineFlagTranslations));
|
||||||
|
LastTranslator = "";
|
||||||
|
}
|
||||||
|
|
||||||
void P_LoadTranslator(const char *lumpname)
|
void P_LoadTranslator(const char *lumpname)
|
||||||
{
|
{
|
||||||
// Only read the lump if it differs from the previous one.
|
// Only read the lump if it differs from the previous one.
|
||||||
if (LastTranslator.CompareNoCase(lumpname))
|
if (LastTranslator.CompareNoCase(lumpname))
|
||||||
{
|
{
|
||||||
// Clear the old data before parsing the lump.
|
// Clear the old data before parsing the lump.
|
||||||
SimpleLineTranslations.Clear();
|
P_ClearTranslator();
|
||||||
NumBoomish = 0;
|
|
||||||
SectorTranslations.Clear();
|
|
||||||
SectorMasks.Clear();
|
|
||||||
|
|
||||||
void *pParser = XlatParseAlloc(malloc);
|
void *pParser = XlatParseAlloc(malloc);
|
||||||
|
|
||||||
|
@ -179,3 +186,5 @@ void P_LoadTranslator(const char *lumpname)
|
||||||
LastTranslator = lumpname;
|
LastTranslator = lumpname;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue