DEADSOFTWARE

tools: fix build with sdl2
[d2df-sdl.git] / src / tools / mapgen.dpr
index 1a4850593b81dcf21d215761a613be7e971bc713..cdb4d3551d9accdaf25ce4328c7aabc45c6d5076 100644 (file)
@@ -5,6 +5,13 @@
 
 uses
   SysUtils, Classes,
+  {$IFDEF USE_SDL}
+    SDL in '../lib/sdl/sdl.pas',
+  {$ENDIF}
+  {$IFDEF USE_SDL2}
+    SDL2 in '../lib/sdl2/sdl2.pas',
+  {$ENDIF}
+  mempool in '../shared/mempool.pas',
   xstreams in '../shared/xstreams.pas',
   xparser in '../shared/xparser.pas',
   xdynrec in '../shared/xdynrec.pas',
@@ -17,7 +24,7 @@ uses
 
 // ////////////////////////////////////////////////////////////////////////// //
 type
-  THashStrFld = specialize THashBase<AnsiString, TDynField>;
+  THashStrFld = specialize THashBase<AnsiString, TDynField, THashKeyStr>;
 
 
 // ////////////////////////////////////////////////////////////////////////// //
@@ -38,7 +45,7 @@ begin
   AssignFile(fo, fname);
   {$I+}Rewrite(fo);{$I-}
 
-  fldknown := THashStrFld.Create(hsihash, hsiequ);
+  fldknown := THashStrFld.Create();
 
   write(fo, '// trigger cache'#10);
   for tidx := 0 to dfmapdef.trigTypeCount-1 do
@@ -243,7 +250,7 @@ var
   fldknown: THashStrFld = nil; // key: palias; value: prev field
   knownfld: TDynField;
 begin
-  fldknown := THashStrFld.Create(hsihash, hsiequ);
+  fldknown := THashStrFld.Create();
   //writeln(getFilenamePath(ParamStr(0)), '|');
 
   e_InitWritelnDriver();
@@ -265,14 +272,21 @@ begin
     writeln('FATAL: mapdef not found!');
   end;
 
+  writeln('parsing "mapdef.txt"...');
   pr := TFileTextParser.Create(st, false); // don't own
   try
     dfmapdef := TDynMapDef.Create(pr);
-  except on e: Exception do
-    begin
-      writeln('ERROR at (', pr.tokLine, ',', pr.tokCol, '): ', e.message);
-      Halt(1);
-    end;
+  except
+    on e: TDynParseException do
+      begin
+        writeln('ERROR at (', e.tokLine, ',', e.tokCol, '): ', e.message);
+        Halt(1);
+      end;
+    on e: Exception do
+      begin
+        writeln('ERROR: ', e.message);
+        Halt(1);
+      end;
   end;
   pr.Free();