This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
chocolate-doom-wii/src/w_main.c
2016-10-30 18:40:00 -04:00

199 lines
4.5 KiB
C

//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
// Common code to parse command line, identifying WAD files to load.
//
#include "doomfeatures.h"
#include "d_iwad.h"
#include "m_argv.h"
#include "w_main.h"
#include "w_merge.h"
#include "w_wad.h"
#include "z_zone.h"
// Parse the command line, merging WAD files that are sppecified.
// Returns true if at least one file was added.
boolean W_ParseCommandLine(void)
{
boolean modifiedgame = false;
int p;
#ifdef FEATURE_WAD_MERGE
// Merged PWADs are loaded first, because they are supposed to be
// modified IWADs.
//!
// @arg <files>
// @category mod
//
// Simulates the behavior of deutex's -merge option, merging a PWAD
// into the main IWAD. Multiple files may be specified.
//
p = M_CheckParmWithArgs("-merge", 1);
if (p > 0)
{
for (p = p + 1; p<myargc && myargv[p][0] != '-'; ++p)
{
char *filename;
modifiedgame = true;
filename = D_TryFindWADByName(myargv[p]);
printf(" merging %s\n", filename);
W_MergeFile(filename);
}
}
// NWT-style merging:
// NWT's -merge option:
//!
// @arg <files>
// @category mod
//
// Simulates the behavior of NWT's -merge option. Multiple files
// may be specified.
p = M_CheckParmWithArgs("-nwtmerge", 1);
if (p > 0)
{
for (p = p + 1; p<myargc && myargv[p][0] != '-'; ++p)
{
char *filename;
modifiedgame = true;
filename = D_TryFindWADByName(myargv[p]);
printf(" performing NWT-style merge of %s\n", filename);
W_NWTDashMerge(filename);
}
}
// Add flats
//!
// @arg <files>
// @category mod
//
// Simulates the behavior of NWT's -af option, merging flats into
// the main IWAD directory. Multiple files may be specified.
//
p = M_CheckParmWithArgs("-af", 1);
if (p > 0)
{
for (p = p + 1; p<myargc && myargv[p][0] != '-'; ++p)
{
char *filename;
modifiedgame = true;
filename = D_TryFindWADByName(myargv[p]);
printf(" merging flats from %s\n", filename);
W_NWTMergeFile(filename, W_NWT_MERGE_FLATS);
}
}
//!
// @arg <files>
// @category mod
//
// Simulates the behavior of NWT's -as option, merging sprites
// into the main IWAD directory. Multiple files may be specified.
//
p = M_CheckParmWithArgs("-as", 1);
if (p > 0)
{
for (p = p + 1; p<myargc && myargv[p][0] != '-'; ++p)
{
char *filename;
modifiedgame = true;
filename = D_TryFindWADByName(myargv[p]);
printf(" merging sprites from %s\n", filename);
W_NWTMergeFile(filename, W_NWT_MERGE_SPRITES);
}
}
//!
// @arg <files>
// @category mod
//
// Equivalent to "-af <files> -as <files>".
//
p = M_CheckParmWithArgs("-aa", 1);
if (p > 0)
{
for (p = p + 1; p<myargc && myargv[p][0] != '-'; ++p)
{
char *filename;
modifiedgame = true;
filename = D_TryFindWADByName(myargv[p]);
printf(" merging sprites and flats from %s\n", filename);
W_NWTMergeFile(filename, W_NWT_MERGE_SPRITES | W_NWT_MERGE_FLATS);
}
}
#endif
//!
// @arg <files>
// @vanilla
//
// Load the specified PWAD files.
//
p = M_CheckParmWithArgs ("-file", 1);
if (p)
{
// the parms after p are wadfile/lump names,
// until end of parms or another - preceded parm
modifiedgame = true; // homebrew levels
while (++p != myargc && myargv[p][0] != '-')
{
char *filename;
filename = D_TryFindWADByName(myargv[p]);
printf(" adding %s\n", filename);
W_AddFile(filename);
}
}
// W_PrintDirectory();
return modifiedgame;
}