From 2bfd7c43fee19b16da7d0a0354765fc8e8a4dfc0 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Sun, 18 Apr 2010 21:29:42 +0000 Subject: Split out WAD command line parsing code into common code shared between games. Subversion-branch: /branches/raven-branch Subversion-revision: 1910 --- src/Makefile.am | 1 + src/doom/d_main.c | 156 +------------------------------------- src/heretic/d_main.c | 147 +----------------------------------- src/hexen/h2_main.c | 27 +------ src/w_main.c | 206 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 215 insertions(+), 322 deletions(-) create mode 100644 src/w_main.c diff --git a/src/Makefile.am b/src/Makefile.am index eeabeb5b..8019dc82 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -71,6 +71,7 @@ tables.c tables.h \ v_video.c v_video.h \ v_patch.h \ w_checksum.c w_checksum.h \ +w_main.c w_main.h \ w_wad.c w_wad.h \ w_file.c w_file.h \ w_file_stdc.c \ diff --git a/src/doom/d_main.c b/src/doom/d_main.c index 4e7812cc..c6099da9 100644 --- a/src/doom/d_main.c +++ b/src/doom/d_main.c @@ -45,8 +45,8 @@ #include "d_iwad.h" #include "z_zone.h" +#include "w_main.h" #include "w_wad.h" -#include "w_merge.h" #include "s_sound.h" #include "v_video.h" @@ -827,7 +827,6 @@ static boolean CheckChex(char *iwadname) // print title for every printed line char title[128]; - static boolean D_AddFile(char *filename) { wad_file_t *handle; @@ -1258,158 +1257,7 @@ void D_DoomMain (void) printf (DEH_String("W_Init: Init WADfiles.\n")); D_AddFile(iwadfile); - -#ifdef FEATURE_WAD_MERGE - - // Merged PWADs are loaded first, because they are supposed to be - // modified IWADs. - - //! - // @arg - // @category mod - // - // Simulates the behavior of deutex's -merge option, merging a PWAD - // into the main IWAD. Multiple files may be specified. - // - - p = M_CheckParm("-merge"); - - if (p > 0) - { - for (p = p + 1; p - // @category mod - // - // Simulates the behavior of NWT's -merge option. Multiple files - // may be specified. - - p = M_CheckParm("-nwtmerge"); - - if (p > 0) - { - for (p = p + 1; p - // @category mod - // - // Simulates the behavior of NWT's -af option, merging flats into - // the main IWAD directory. Multiple files may be specified. - // - - p = M_CheckParm("-af"); - - if (p > 0) - { - for (p = p + 1; p - // @category mod - // - // Simulates the behavior of NWT's -as option, merging sprites - // into the main IWAD directory. Multiple files may be specified. - // - - p = M_CheckParm("-as"); - - if (p > 0) - { - for (p = p + 1; p - // @category mod - // - // Equivalent to "-af -as ". - // - - p = M_CheckParm("-aa"); - - if (p > 0) - { - for (p = p + 1; p - // @vanilla - // - // Load the specified PWAD files. - // - - p = M_CheckParm ("-file"); - 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]); - - D_AddFile(filename); - } - } - - // Debug: -// W_PrintDirectory(); + modifiedgame = W_ParseCommandLine(); // add any files specified on the command line with -file wadfile // to the wad list diff --git a/src/heretic/d_main.c b/src/heretic/d_main.c index 5fa2d5f9..6b589d02 100644 --- a/src/heretic/d_main.c +++ b/src/heretic/d_main.c @@ -46,7 +46,7 @@ #include "m_controls.h" #include "p_local.h" #include "s_sound.h" -#include "w_merge.h" +#include "w_main.h" #include "v_video.h" #define STARTUP_WINDOW_X 17 @@ -908,150 +908,7 @@ void D_DoomMain(void) } D_AddFile(iwadfile); - -#ifdef FEATURE_WAD_MERGE - - // Merged PWADs are loaded first, because they are supposed to be - // modified IWADs. - - //! - // @arg - // @category mod - // - // Simulates the behavior of deutex's -merge option, merging a PWAD - // into the main IWAD. Multiple files may be specified. - // - - p = M_CheckParm("-merge"); - - if (p > 0) - { - for (p = p + 1; p - // @category mod - // - // Simulates the behavior of NWT's -merge option. Multiple files - // may be specified. - - p = M_CheckParm("-nwtmerge"); - - if (p > 0) - { - for (p = p + 1; p - // @category mod - // - // Simulates the behavior of NWT's -af option, merging flats into - // the main IWAD directory. Multiple files may be specified. - // - - p = M_CheckParm("-af"); - - if (p > 0) - { - for (p = p + 1; p - // @category mod - // - // Simulates the behavior of NWT's -as option, merging sprites - // into the main IWAD directory. Multiple files may be specified. - // - - p = M_CheckParm("-as"); - - if (p > 0) - { - for (p = p + 1; p - // @category mod - // - // Equivalent to "-af -as ". - // - - p = M_CheckParm("-aa"); - - if (p > 0) - { - for (p = p + 1; pname != NULL; opt++) { @@ -483,27 +485,6 @@ static void ExecOptionSKILL(char **args, int tag) autostart = true; } -//========================================================================== -// -// ExecOptionFILE -// -//========================================================================== - -static void ExecOptionFILE(char **args, int tag) -{ - char *filename; - int p; - - p = M_CheckParm("-file"); - while (++p != myargc && myargv[p][0] != '-') - { - filename = D_TryFindWADByName(myargv[p]); - - D_AddFile(filename); - } -} - - //========================================================================== // // ExecOptionPLAYDEMO diff --git a/src/w_main.c b/src/w_main.c new file mode 100644 index 00000000..92a394dd --- /dev/null +++ b/src/w_main.c @@ -0,0 +1,206 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 1993-1996 Id Software, Inc. +// Copyright(C) 2005-2010 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. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// 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 + // @category mod + // + // Simulates the behavior of deutex's -merge option, merging a PWAD + // into the main IWAD. Multiple files may be specified. + // + + p = M_CheckParm("-merge"); + + if (p > 0) + { + for (p = p + 1; p + // @category mod + // + // Simulates the behavior of NWT's -merge option. Multiple files + // may be specified. + + p = M_CheckParm("-nwtmerge"); + + if (p > 0) + { + for (p = p + 1; p + // @category mod + // + // Simulates the behavior of NWT's -af option, merging flats into + // the main IWAD directory. Multiple files may be specified. + // + + p = M_CheckParm("-af"); + + if (p > 0) + { + for (p = p + 1; p + // @category mod + // + // Simulates the behavior of NWT's -as option, merging sprites + // into the main IWAD directory. Multiple files may be specified. + // + + p = M_CheckParm("-as"); + + if (p > 0) + { + for (p = p + 1; p + // @category mod + // + // Equivalent to "-af -as ". + // + + p = M_CheckParm("-aa"); + + if (p > 0) + { + for (p = p + 1; p + // @vanilla + // + // Load the specified PWAD files. + // + + p = M_CheckParm ("-file"); + 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; +} + -- cgit v1.2.3