DEADSOFTWARE

moved tools to separate directory; moved "mapdef.txt" to separate directory
[d2df-sdl.git] / src / tools / mapgen.dpr
similarity index 53%
rename from src/shared/zmapgen.dpr
rename to src/tools/mapgen.dpr
index e983e43688b3846ecdf3b7a355e69349393676d1..bb38d087d8e153896ac54b725dc86839ad4fb190 100644 (file)
@@ -1,11 +1,12 @@
-{$INCLUDE a_modes.inc}
-{$M+}
+{$INCLUDE ../shared/a_modes.inc}
+{$APPTYPE CONSOLE}
 
 uses
   SysUtils, Classes,
-  xparser in 'xparser.pas',
-  xdynrec in 'xdynrec.pas',
-  utils in 'utils.pas';
+  xstreams in '../shared/xstreams.pas',
+  xparser in '../shared/xparser.pas',
+  xdynrec in '../shared/xdynrec.pas',
+  utils in '../shared/utils.pas';
 
 
 // ////////////////////////////////////////////////////////////////////////// //
@@ -13,13 +14,29 @@ var
   pr: TTextParser;
   dfmapdef: TDynMapDef;
   fo: TextFile;
-  st: TStream;
+  st: TStream = nil;
   ch: AnsiChar;
   wdt: Integer;
   s: AnsiString;
 begin
+  //writeln(getFilenamePath(ParamStr(0)), '|');
+
   writeln('parsing "mapdef.txt"...');
-  pr := TFileTextParser.Create('mapdef.txt');
+  try
+    st := openDiskFileRO('mapdef.txt');
+    writeln('found: local mapdef');
+  except // sorry
+    st := nil;
+  end;
+  try
+    writeln(filenameConcat(getFilenamePath(ParamStr(0)), '../mapdef/mapdef.txt'), '|');
+    st := openDiskFileRO(filenameConcat(getFilenamePath(ParamStr(0)), '../mapdef/mapdef.txt'));
+    writeln('found: system mapdef');
+  except // sorry
+    writeln('FATAL: mapdef not found!');
+  end;
+
+  pr := TFileTextParser.Create(st, false); // don't own
   try
     dfmapdef := TDynMapDef.Create(pr);
   except on e: Exception do
@@ -28,15 +45,17 @@ begin
       Halt(1);
     end;
   end;
+  pr.Free();
 
   writeln('writing "mapdef.inc"...');
   AssignFile(fo, 'mapdef.inc');
   Rewrite(fo);
   write(fo, '// *** WARNING! ***'#10);
-  write(fo, '//   regenerate this part directly from "mapdef.txt" with ''zmapgen'', NEVER manually change anything here!'#10#10#10);
+  write(fo, '//   regenerate this part directly from "mapdef.txt" with ''mapgen'', NEVER manually change anything here!'#10#10#10);
   write(fo, dfmapdef.pasdef);
 
-  st := openDiskFileRO('mapdef.txt');
+  //st := openDiskFileRO('mapdef.txt');
+  st.position := 0;
   write(fo, #10#10'const defaultMapDef: AnsiString = ''''+'#10'  ');
   wdt := 2;
   while true do