hedgewars/ArgParsers.inc
changeset 8174 df02c2ad4a2c
parent 8167 96635d815141
child 8209 780e156f19ea
--- a/hedgewars/ArgParsers.inc	Sat Dec 01 15:14:34 2012 -0500
+++ b/hedgewars/ArgParsers.inc	Sat Dec 01 15:56:19 2012 -0500
@@ -124,56 +124,74 @@
 const allArray: Array [1..12] of String = ('--width','--height','--depth','--volume','--nomusic','--nosound','--locale','--fullscreen','--showfps','--altdmg','--time','--lowquality');
 begin
     parseParameter:= false;
-    case cmd of
-        '--locale'     : cLocaleFName   := getStringParameter (arg, paramIndex);
-        '--width'      : cScreenWidth   := getLongIntParameter(arg, paramIndex, parseParameter);
-        '--height'     : cScreenHeight  := getLongIntParameter(arg, paramIndex, parseParameter);
-        '--depth'      : cBits          := getLongIntParameter(arg, paramIndex, parseParameter);
-        '--time'       : cTimerInterval := getLongIntParameter(arg, paramIndex, parseParameter);
-        '--volume'     : SetVolume       ( getLongIntParameter(arg, paramIndex, parseParameter) );
-        '--nomusic'    : SetMusic        ( false );
-        '--nosound'    : SetSound        ( false );
-        '--fullscreen' : cFullScreen    := true;
-        '--showfps'    : cShowFPS       := true;
-        '--altdmg'     : cAltDamage     := true;
-        '--lowquality' : cReducedQuality:= ($FFFFFFFF * getLongIntParameter(arg, paramIndex, parseParameter)) xor rqLowRes; //HACK!
-        '--set-video'      : parseClassicParameter(videoArray,3,paramIndex);
-        '--set-audio'      : parseClassicParameter(audioArray,3,paramIndex);
-        '--set-other'      : parseClassicParameter(otherArray,3,paramIndex);
-        '--set-multimedia' : parseClassicParameter(mediaArray,8,paramIndex);
-        '--set-everything' : parseClassicParameter(allArray,12,paramIndex);
-        '--stats-only' : begin
-                         cOnlyStats:= true;
-                         SetSound(false);
-                         SetMusic(false);
-                         cReducedQuality:= $FFFFFFFF xor rqLowRes;
-                         end;
-        '--gci' : begin            //     We had to make up all this saved space some how...     \\
-                  WriteLn(stdout, '                                                                ');
-                  WriteLn(stdout, '      /\\\\\\\\\\\\        /\\\\\\\\\  /\\\\\\\\\\\             ');
-                  WriteLn(stdout, '     /\\\//////////      /\\\////////  \/////\\\///             ');
-                  WriteLn(stdout, '     /\\\               /\\\/               \/\\\               ');
-                  WriteLn(stdout, '     \/\\\    /\\\\\\\  /\\\                 \/\\\              ');
-                  WriteLn(stdout, '      \/\\\   \/////\\\ \/\\\                 \/\\\             ');
-                  WriteLn(stdout, '       \/\\\       \/\\\ \//\\\                \/\\\            ');
-                  WriteLn(stdout, '        \/\\\       \/\\\  \///\\\              \/\\\           ');
-                  WriteLn(stdout, '         \//\\\\\\\\\\\\/     \////\\\\\\\\\  /\\\\\\\\\\\      ');
-                  WriteLn(stdout, '          \////////////           \/////////  \///////////      ');
-                  WriteLn(stdout, '                                                                ');
-                  WriteLn(stdout, ' Command Line Parser Implementation by a Google Code-In Student ');
-                  WriteLn(stdout, '             ASCII Art easter egg idea by @sheepluva            ');
-                  WriteLn(stdout, '                                                                ');
-                  end;
-        '--help' : begin
-                   DisplayUsage();
-                   GameType:= gmtSyntax;
-                   end;
+    if cmd = '--locale' then
+        cLocaleFName   := getStringParameter (arg, paramIndex)
+    else if cmd = '--width' then
+        cScreenWidth   := getLongIntParameter(arg, paramIndex, parseParameter)
+    else if cmd = '--height' then
+        cScreenHeight  := getLongIntParameter(arg, paramIndex, parseParameter)
+    else if cmd = '--depth' then
+        cBits          := getLongIntParameter(arg, paramIndex, parseParameter)
+    else if cmd = '--time' then
+        cTimerInterval := getLongIntParameter(arg, paramIndex, parseParameter)
+    else if cmd = '--volume' then
+        SetVolume       ( getLongIntParameter(arg, paramIndex, parseParameter) )
+    else if cmd = '--nomusic' then
+        SetMusic        ( false )
+    else if cmd = '--nosound' then
+        SetSound        ( false )
+    else if cmd = '--fullscreen' then
+        cFullScreen    := true
+    else if cmd = '--showfps' then
+        cShowFPS       := true
+    else if cmd = '--altdmg' then
+        cAltDamage     := true
+    else if cmd = '--lowquality' then
+        cReducedQuality:= ($FFFFFFFF * getLongIntParameter(arg, paramIndex, parseParameter)) xor rqLowRes //HACK
+    else if cmd = '--set-video' then
+        parseClassicParameter(videoArray,3,paramIndex)
+    else if cmd = '--set-audio' then
+        parseClassicParameter(audioArray,3,paramIndex)
+    else if cmd = '--set-other' then
+        parseClassicParameter(otherArray,3,paramIndex)
+    else if cmd = '--set-multimedia' then
+        parseClassicParameter(mediaArray,8,paramIndex)
+    else if cmd = '--set-everything' then
+        parseClassicParameter(allArray,12,paramIndex)
+    else if cmd = '--stats-only' then
+        begin
+        cOnlyStats:= true;
+        SetSound(false);
+        SetMusic(false);
+        cReducedQuality:= $FFFFFFFF xor rqLowRes
+        end
+    else if cmd = '--gci' then
+        begin            //     We had to make up all this saved space some how...     \\
+        WriteLn(stdout, '                                                                ');
+        WriteLn(stdout, '      /\\\\\\\\\\\\        /\\\\\\\\\  /\\\\\\\\\\\             ');
+        WriteLn(stdout, '     /\\\//////////      /\\\////////  \/////\\\///             ');
+        WriteLn(stdout, '     /\\\               /\\\/               \/\\\               ');
+        WriteLn(stdout, '     \/\\\    /\\\\\\\  /\\\                 \/\\\              ');
+        WriteLn(stdout, '      \/\\\   \/////\\\ \/\\\                 \/\\\             ');
+        WriteLn(stdout, '       \/\\\       \/\\\ \//\\\                \/\\\            ');
+        WriteLn(stdout, '        \/\\\       \/\\\  \///\\\              \/\\\           ');
+        WriteLn(stdout, '         \//\\\\\\\\\\\\/     \////\\\\\\\\\  /\\\\\\\\\\\      ');
+        WriteLn(stdout, '          \////////////           \/////////  \///////////      ');
+        WriteLn(stdout, '                                                                ');
+        WriteLn(stdout, ' Command Line Parser Implementation by a Google Code-In Student ');
+        WriteLn(stdout, '             ASCII Art easter egg idea by @sheepluva            ');
+        WriteLn(stdout, '                                                                ')
+        end
+    else if cmd = '--help' then
+        begin
+        DisplayUsage();
+        GameType:= gmtSyntax
+        end
     else
         begin
         WriteLn(stderr, 'ERROR: '+cmd+' is not a valid argument');
-        parseParameter:= true;
-        end
-    end;
+        parseParameter:= true
+        end;
 end;
 
 procedure parseClassicParameter(cmdArray: Array of String; size:LongInt; var paramIndex:LongInt);
@@ -185,8 +203,12 @@
     while (index < size) do
         begin
         paramIndex:= paramIndex+1;
-        //This next line is a really strange (but short), way to check if the parameter is a boolean one
-        isBool:= true; case cmdArray[index] of '--nomusic':;'--nosound':;'--fullscreen':;'--showfps':;'--altdmg':;'--lowquality':; else isBool:= false; end;
+        isBool:= not ((cmdArray[index] = '--nomusic') or
+                      (cmdArray[index] = '--nosound') or
+                      (cmdArray[index] = '--fullscreen') or
+                      (cmdArray[index] = '--showfps') or
+                      (cmdArray[index] = '--altdmg') or
+                      (cmdArray[index] = '--lowquality'));
         if (not isBool) or ((ParamStr(paramIndex)='1') and (cmdArray[index]<>'--nomusic') and (cmdArray[index]<>'--nosound')) then
             parseParameter(cmdArray[index], ParamStr(paramIndex), tmpInt);
         //if isBool then
@@ -198,7 +220,6 @@
 procedure playReplayFileWithParameters(paramIndex: LongInt);
 var wrongParameter: boolean;
 begin
-    paramIndex:= 4;
     wrongParameter:= false;
     while (paramIndex <= ParamCount) do
         begin