shithub: choc

Download patch

ref: 21a82fa12400568b67b378048a822f73f6d32a81
parent: 5df59601283df3d3c3889a350086f4bb0dce248c
author: Simon Howard <fraggle@gmail.com>
date: Thu Dec 13 17:26:16 EST 2007

Add @vanilla tag for Vanilla doom command line options. Add missing
documentation for -nosound, -nomusic, -nosfx. Fix up some bugs with the
docgen wikitext output and allow control over output of Vanilla options.

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 984

--- a/man/docgen
+++ b/man/docgen
@@ -6,7 +6,7 @@
 #   //!
 #   // @arg <extra arguments>
 #   // @category Category
-#   // @platform <some platform that the parameter is specific to
+#   // @platform <some platform that the parameter is specific to>
 #   //
 #   // Long description of the parameter
 #   //
@@ -19,6 +19,7 @@
 import sys
 import re
 import glob
+import getopt
 
 class Category:
     def __init__(self, description):
@@ -54,7 +55,8 @@
         w = self.paramtext_width()
 
         for p in self.params:
-            result += p.plaintext_output(w)
+            if p.should_show():
+                result += p.plaintext_output(w)
 
         result = result.rstrip() + "\n"
 
@@ -66,8 +68,9 @@
         self.params.sort()
 
         for p in self.params:
-            result += ".TP\n"
-            result += p.manpage_output()
+            if p.should_show():
+                result += ".TP\n"
+                result += p.manpage_output()
 
         return result
 
@@ -77,8 +80,15 @@
         self.params.sort()
 
         for p in self.params:
-            result += "; " + p.wiki_output() + "\n"
+            if p.should_show():
+                result += "; " + p.wiki_output() + "\n"
 
+        # Escape special HTML characters
+
+        result = result.replace("&", "&amp;")
+        result = result.replace("<", "&lt;")
+        result = result.replace(">", "&gt;")
+
         return result
 
 categories = {
@@ -90,6 +100,10 @@
     "compat":  Category("Compatibility"),
 }
 
+# Show options that are in Vanilla Doom? Or only new options?
+
+show_vanilla_options = True
+
 class Parameter:
     def __cmp__(self, other):
         if self.name < other.name:
@@ -103,12 +117,16 @@
         self.args = None
         self.platform = None
         self.category = None
+        self.vanilla_option = False
 
+    def should_show(self):
+        return not self.vanilla_option or show_vanilla_options
+
     def add_text(self, text):
         if len(text) <= 0:
             pass
         elif text[0] == "@":
-            match = re.match('@(\S+)\s+(.*)', text)
+            match = re.match('@(\S+)\s*(.*)', text)
 
             if not match:
                 raise "Malformed option line: %s" % text
@@ -122,6 +140,8 @@
                 self.platform = data
             elif option_type == "category":
                 self.category = data
+            elif option_type == "vanilla":
+                self.vanilla_option = True
             else:
                 raise "Unknown option type '%s'" % option_type
 
@@ -158,7 +178,7 @@
         result += self.text
 
         if self.platform:
-            result += "'''(%s only)'''"
+            result += "'''(%s only)'''" % self.platform
 
         return result
 
@@ -305,12 +325,32 @@
         if c != None:
             print categories[c].plaintext_output()
 
-if len(sys.argv) > 2 and sys.argv[1] == "-m":
-    manpage_output(sys.argv[2])
-elif len(sys.argv) > 2 and sys.argv[1] == "-w":
-    wiki_output(sys.argv[2])
-elif len(sys.argv) > 2 and sys.argv[1] == "-p":
-    plaintext_output(sys.argv[2])
+def usage():
+    print "Usage: %s [-V] ( -m | -w | -p ) <directory>" % sys.argv[0]
+    print "   -m :  Manpage output"
+    print "   -w :  Wikitext output"
+    print "   -p :  Plaintext output"
+    print "   -V :  Don't show Vanilla Doom options"
+    sys.exit(0)
+
+# Parse command line
+
+opts, args = getopt.getopt(sys.argv[1:], "mwpV")
+
+output_function = None
+
+for opt in opts:
+    if opt[0] == "-m":
+        output_function = manpage_output
+    elif opt[0] == "-w":
+        output_function = wiki_output
+    elif opt[0] == "-p":
+        output_function = plaintext_output
+    elif opt[0] == "-V":
+        show_vanilla_options = False
+
+if output_function == None or len(args) != 1:
+    usage()
 else:
-    print "%s [ -m | -w | -p ] <directory>" % sys.argv[0]
+    output_function(args[0])
 
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -851,6 +851,8 @@
     modifiedgame = false;
 
     //!
+    // @vanilla
+    //
     // Disable monsters.
     //
 	
@@ -857,6 +859,8 @@
     nomonsters = M_CheckParm ("-nomonsters");
 
     //!
+    // @vanilla
+    //
     // Monsters respawn after being killed.
     //
 
@@ -863,6 +867,8 @@
     respawnparm = M_CheckParm ("-respawn");
 
     //!
+    // @vanilla
+    //
     // Monsters move faster.
     //
 
@@ -869,6 +875,8 @@
     fastparm = M_CheckParm ("-fast");
 
     //! 
+    // @vanilla
+    //
     // Developer mode.  F1 saves a screenshot in the current working
     // directory.
     //
@@ -877,6 +885,7 @@
 
     //!
     // @category net
+    // @vanilla
     //
     // Start a deathmatch game.
     //
@@ -886,6 +895,7 @@
 
     //!
     // @category net
+    // @vanilla
     //
     // Start a deathmatch 2.0 game.  Weapons do not stay in place and
     // all items respawn after 30 seconds.
@@ -903,6 +913,7 @@
     
     //!
     // @arg <x>
+    // @vanilla
     //
     // Turbo mode.  The player's speed is multiplied by x%.  If unspecified,
     // x defaults to 200.  Values are rounded up to 10 and down to 400.
@@ -1065,6 +1076,7 @@
 
     //!
     // @arg <files>
+    // @vanilla
     //
     // Load the specified PWAD files.
     //
@@ -1125,6 +1137,7 @@
     //!
     // @arg <demo>
     // @category demo
+    // @vanilla
     //
     // Play back the demo named demo.lmp.
     //
@@ -1136,6 +1149,7 @@
         //!
         // @arg <demo>
         // @category demo
+        // @vanilla
         //
         // Play back the demo named demo.lmp, determining the framerate
         // of the screen.
@@ -1216,6 +1230,7 @@
 
     //!
     // @arg <skill>
+    // @vanilla
     //
     // Set the game skill, 1-5 (1: easiest, 5: hardest).  A skill of
     // 0 disables all monsters.
@@ -1231,6 +1246,7 @@
 
     //!
     // @arg <n>
+    // @vanilla
     //
     // Start playing on episode n (1-4)
     //
@@ -1249,6 +1265,7 @@
     //! 
     // @arg <n>
     // @category net
+    // @vanilla
     //
     // For multiplayer games: exit each level after n minutes.
     //
@@ -1263,6 +1280,7 @@
 
     //!
     // @category net
+    // @vanilla
     //
     // Austin Virtual Gaming: end levels after 20 minutes.
     //
@@ -1278,6 +1296,7 @@
 
     //!
     // @arg [<x> <y> | <xy>]
+    // @vanilla
     //
     // Start a game immediately, warping to ExMy (Doom 1) or MAPxy
     // (Doom 2)
@@ -1324,6 +1343,7 @@
 
     //!
     // @arg <s>
+    // @vanilla
     //
     // Load the game in slot s.
     //
@@ -1425,6 +1445,7 @@
     //!
     // @arg <x>
     // @category demo
+    // @vanilla
     //
     // Record a demo named x.lmp.
     //
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -1842,6 +1842,7 @@
     //!
     // @arg <size>
     // @category demo
+    // @vanilla
     //
     // Specify the demo buffer size (KiB)
     //
@@ -1981,6 +1982,8 @@
 void G_TimeDemo (char* name) 
 {
     //!
+    // @vanilla 
+    //
     // Disable rendering the screen entirely.
     //
 
@@ -1987,6 +1990,8 @@
     nodrawers = M_CheckParm ("-nodraw"); 
 
     //!
+    // @vanilla
+    //
     // Disable blitting the screen.
     //
 
--- a/src/m_misc.c
+++ b/src/m_misc.c
@@ -682,6 +682,7 @@
 
     //!
     // @arg <file>
+    // @vanilla
     //
     // Load configuration from the specified file, instead of
     // default.cfg.
@@ -764,6 +765,7 @@
 #ifdef _WIN32
         //!
         // @platform windows
+        // @vanilla
         //
         // Save configuration data and savegames in c:\doomdata,
         // allowing play from CD.
--- a/src/s_sound.c
+++ b/src/s_sound.c
@@ -241,18 +241,43 @@
 
 void S_Init(int sfxVolume, int musicVolume)
 {  
+    boolean nosound, nosfx, nomusic;
     int i;
 
+    //!
+    // @vanilla
+    //
+    // Disable all sound output.
+    //
+
+    nosound = M_CheckParm("-nosound") > 0;
+
+    //!
+    // @vanilla
+    //
+    // Disable sound effects. 
+    //
+
+    nosfx = M_CheckParm("-nosfx") > 0;
+
+    //!
+    // @vanilla
+    //
+    // Disable music.
+    //
+
+    nomusic = M_CheckParm("-nomusic") > 0;
+
     // Initialise the sound and music subsystems.
 
-    if (M_CheckParm("-nosound") <= 0 && !screensaver_mode)
+    if (!nosound && !screensaver_mode)
     {
-        if (M_CheckParm("-nosfx") <= 0)
+        if (!nosfx)
         {
             InitSfxModule();
         }
 
-        if (M_CheckParm("-nomusic") <= 0)
+        if (!nomusic)
         {
             InitMusicModule();
         }