- Added IWAD-based [*.Autoload] ini support for games that have more than one

IWAD. They are:
  * [Doom1.Autoload]
  * [Doom2.Autoload]
  * [Plutonia.Autoload]
  * [TNT.Autoload]
  * [HexenDK.Autoload]
  These are loaded after the more general game-specific [Doom.Autoload] and
  [Hexen.Autoload] sections if those are present.
- Changed the banner texts for the Final Doom IWADs to identify them as Final
  Doom rather than as DOOM 2. I know this differs from the original behavior,
  but they're marketed as Final Doom, not Doom 2.


SVN r582 (trunk)
This commit is contained in:
Randy Heit 2007-12-06 22:38:45 +00:00
parent 1dede60c5c
commit 7f52e6537b
4 changed files with 59 additions and 28 deletions

View file

@ -1,4 +1,16 @@
December 6, 2007
- Added IWAD-based [*.Autoload] ini support for games that have more than one
IWAD. They are:
* [Doom1.Autoload]
* [Doom2.Autoload]
* [Plutonia.Autoload]
* [TNT.Autoload]
* [HexenDK.Autoload]
These are loaded after the more general game-specific [Doom.Autoload] and
[Hexen.Autoload] sections if those are present.
- Changed the banner texts for the Final Doom IWADs to identify them as Final
Doom rather than as DOOM 2. I know this differs from the original behavior,
but they're marketed as Final Doom, not Doom 2.
- New: On Windows, the game now checks the registry to see if you have Steam
installed. If so, it checks your SteamApps directory for any IWADs you may
have purchased through Steam and adds any it finds to the list of available

View file

@ -31,6 +31,7 @@ bool FileExists (const char *filename);
extern char progdir[1024];
void FixPathSeperator (char *path);
static void inline FixPathSeperator (FString &path) { path.ReplaceChars('\\', '/'); }
void DefaultExtension (char *path, const char *extension);
void DefaultExtension (FString &path, const char *extension);

View file

@ -176,23 +176,26 @@ FTexture *Advisory;
cycle_t FrameCycles;
// If autoname is NULL, that's either because that game doesn't allow
// loading of external wads or because it's already caught by the
// general game-specific wads section.
const IWADInfo IWADInfos[NUM_IWAD_TYPES] =
{
// banner text, fg color, bg color
{ "DOOM 2: TNT - Evilution", MAKERGB(168,0,0), MAKERGB(168,168,168) },
{ "DOOM 2: Plutonia Experiment", MAKERGB(168,0,0), MAKERGB(168,168,168) },
{ "Hexen: Beyond Heretic", MAKERGB(240,240,240), MAKERGB(107,44,24) },
{ "Hexen: Deathkings of the Dark Citadel", MAKERGB(240,240,240), MAKERGB(139,68,9) },
{ "DOOM 2: Hell on Earth", MAKERGB(168,0,0), MAKERGB(168,168,168) },
{ "Heretic Shareware", MAKERGB(252,252,0), MAKERGB(168,0,0) },
{ "Heretic: Shadow of the Serpent Riders", MAKERGB(252,252,0), MAKERGB(168,0,0) },
{ "Heretic", MAKERGB(252,252,0), MAKERGB(168,0,0) },
{ "DOOM Shareware", MAKERGB(168,0,0), MAKERGB(168,168,168) },
{ "The Ultimate DOOM", MAKERGB(84,84,84), MAKERGB(168,168,168) },
{ "DOOM Registered", MAKERGB(84,84,84), MAKERGB(168,168,168) },
{ "Strife: Quest for the Sigil", MAKERGB(224,173,153), MAKERGB(0,107,101) },
{ "Strife: Teaser (Old Version)", MAKERGB(224,173,153), MAKERGB(0,107,101) },
{ "Strife: Teaser (New Version)", MAKERGB(224,173,153), MAKERGB(0,107,101) }
// banner text, autoname, fg color, bg color
{ "Final Doom: TNT - Evilution", "TNT", MAKERGB(168,0,0), MAKERGB(168,168,168) },
{ "Final Doom: Plutonia Experiment", "Plutonia", MAKERGB(168,0,0), MAKERGB(168,168,168) },
{ "Hexen: Beyond Heretic", NULL, MAKERGB(240,240,240), MAKERGB(107,44,24) },
{ "Hexen: Deathkings of the Dark Citadel", "HexenDK", MAKERGB(240,240,240), MAKERGB(139,68,9) },
{ "DOOM 2: Hell on Earth", "Doom2", MAKERGB(168,0,0), MAKERGB(168,168,168) },
{ "Heretic Shareware", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0) },
{ "Heretic: Shadow of the Serpent Riders", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0) },
{ "Heretic", NULL, MAKERGB(252,252,0), MAKERGB(168,0,0) },
{ "DOOM Shareware", NULL, MAKERGB(168,0,0), MAKERGB(168,168,168) },
{ "The Ultimate DOOM", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168) },
{ "DOOM Registered", "Doom1", MAKERGB(84,84,84), MAKERGB(168,168,168) },
{ "Strife: Quest for the Sigil", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101) },
{ "Strife: Teaser (Old Version)", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101) },
{ "Strife: Teaser (New Version)", NULL, MAKERGB(224,173,153), MAKERGB(0,107,101) }
};
// PRIVATE DATA DEFINITIONS ------------------------------------------------
@ -1963,12 +1966,11 @@ void D_MultiExec (DArgs *list, bool usePullin)
void D_DoomMain (void)
{
int p, flags;
char file[PATH_MAX];
FString file;
char *v;
const char *wad;
DArgs *execFiles;
file[PATH_MAX-1] = 0;
const IWADInfo *iwad_info;
srand(I_MSTime());
@ -1996,7 +1998,8 @@ void D_DoomMain (void)
I_FatalError ("Cannot find " BASEWAD);
}
I_SetIWADInfo (&IWADInfos[IdentifyVersion(wad)]);
iwad_info = &IWADInfos[IdentifyVersion(wad)];
I_SetIWADInfo(iwad_info);
GameConfig->DoGameSetup (GameNames[gameinfo.gametype]);
if (!(gameinfo.flags & GI_SHAREWARE))
@ -2012,17 +2015,22 @@ void D_DoomMain (void)
// [RH] Add any .wad files in the skins directory
#ifdef unix
sprintf (file, "%sskins", SHARE_DIR);
file = SHARE_DIR;
#else
sprintf (file, "%sskins", progdir);
file = progdir;
#endif
file += "skins";
D_AddDirectory (file);
const char *home = getenv ("HOME");
if (home)
{
sprintf (file, "%s%s.zdoom/skins", home,
home[strlen(home)-1] == '/' ? "" : "/");
file = home;
if (home[strlen(home) - 1] != '/')
{
file += '/';
}
file += ".zdoom/skins";
D_AddDirectory (file);
}
@ -2031,8 +2039,17 @@ void D_DoomMain (void)
D_AddConfigWads ("Global.Autoload");
// Add game-specific wads
sprintf (file, "%s.Autoload", GameNames[gameinfo.gametype]);
file = GameNames[gameinfo.gametype];
file += ".Autoload";
D_AddConfigWads (file);
// Add IWAD-specific wads
if (iwad_info->Autoname != NULL)
{
file = iwad_info->Autoname;
file += ".Autoload";
D_AddConfigWads(file);
}
}
// Run automatically executed files
@ -2396,7 +2413,7 @@ void D_DoomMain (void)
v = Args.CheckValue ("-loadgame");
if (v)
{
strncpy (file, v, sizeof(file)-1);
file = v;
FixPathSeperator (file);
DefaultExtension (file, ".zds");
G_LoadGame (file);

View file

@ -86,6 +86,7 @@ struct WadStuff
struct IWADInfo
{
const char *Name; // Title banner text for this IWAD
const char *Autoname; // Name of autoload ini section for this IWAD
DWORD FgColor; // Foreground color for title banner
DWORD BkColor; // Background color for title banner
};