rnd-20071023-1-src
authorHolger Schemel <info@artsoft.org>
Mon, 22 Oct 2007 23:33:20 +0000 (01:33 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:56:38 +0000 (10:56 +0200)
* added command line function to write level sketch images to directory

ChangeLog
Makefile
src/conftime.h
src/files.c
src/files.h
src/init.c
src/main.c
src/main.h

index 5f4d6475e5635a4b522a82d01842796cb6715327..49ec71e1d3adc4ebf0d55b9b25e55735a3bb5260 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2007-10-23
+       * added command line function to write level sketch images to directory
+
 2007-10-20
        * merged override and auto-override options into new override options
          with a new data type than can take the values "no", "yes" and "auto"
index ea1154ef1c2ea54566dc97b86ab836b3fda47884..65ea127afc122305d32049d1b72a8af35326133c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -42,7 +42,7 @@ CROSS_PATH_MSDOS = /usr/local/cross-msdos/i386-msdosdjgpp
 CROSS_PATH_WIN32 = /usr/local/cross-tools/i386-mingw32msvc
 
 # compile special edition of R'n'D instead of the normal (classic) version
-SPECIAL_EDITION = rnd_jue
+SPECIAL_EDITION = rnd_jue
 
 
 # -----------------------------------------------------------------------------
@@ -130,6 +130,9 @@ enginetestnew: all
 leveltest: all
        ./Scripts/make_enginetest.sh leveltest
 
+levelsketch_images: all
+       ./Scripts/make_levelsketch_images.sh
+
 backup:
        ./Scripts/make_backup.sh src 1
 
index 2968c64d849eca1c26cfdae214c99f52c3fce905..aa4d27cf6b4565b8fbccf17d4fc8f8b030255d43 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2007-10-20 02:03"
+#define COMPILE_DATE_STRING "2007-10-23 00:44"
index 45dec406063d6c3ed9d471506ecf4c70e1156710..54d75d6ccb4f4be3e2337849ea2def27c4811911 100644 (file)
@@ -9625,9 +9625,9 @@ void LoadHelpTextInfo()
 }
 
 
-/* ------------------------------------------------------------------------- *
- * convert levels
- * ------------------------------------------------------------------------- */
+/* ------------------------------------------------------------------------- */
+/* convert levels                                                            */
+/* ------------------------------------------------------------------------- */
 
 #define MAX_NUM_CONVERT_LEVELS         1000
 
@@ -9737,3 +9737,65 @@ void ConvertLevels()
 
   CloseAllAndExit(0);
 }
+
+
+/* ------------------------------------------------------------------------- */
+/* create images for use in level sketches (raw BMP format)                  */
+/* ------------------------------------------------------------------------- */
+
+void CreateLevelSketchImages()
+{
+#if defined(TARGET_SDL)
+  Bitmap *bitmap1;
+  Bitmap *bitmap2;
+  int i;
+
+  bitmap1 = CreateBitmap(TILEX, TILEY, DEFAULT_DEPTH);
+  bitmap2 = CreateBitmap(MINI_TILEX, MINI_TILEY, DEFAULT_DEPTH);
+
+  for (i = 0; i < NUM_FILE_ELEMENTS; i++)
+  {
+    Bitmap *src_bitmap;
+    int src_x, src_y;
+    int graphic = el2edimg(i);
+    char basename1[16];
+    char basename2[16];
+    char *filename1;
+    char *filename2;
+
+    sprintf(basename1, "%03d.bmp", i);
+    sprintf(basename2, "%03ds.bmp", i);
+
+    filename1 = getPath2(global.create_images_dir, basename1);
+    filename2 = getPath2(global.create_images_dir, basename2);
+
+    getGraphicSource(graphic, 0, &src_bitmap, &src_x, &src_y);
+    BlitBitmap(src_bitmap, bitmap1, src_x, src_y, TILEX, TILEY, 0, 0);
+
+    if (SDL_SaveBMP(bitmap1->surface, filename1) != 0)
+      Error(ERR_EXIT, "cannot save level sketch image file '%s'", filename1);
+
+    getMiniGraphicSource(graphic, &src_bitmap, &src_x, &src_y);
+    BlitBitmap(src_bitmap, bitmap2, src_x, src_y, MINI_TILEX, MINI_TILEY, 0, 0);
+
+    if (SDL_SaveBMP(bitmap2->surface, filename2) != 0)
+      Error(ERR_EXIT, "cannot save level sketch image file '%s'", filename2);
+
+    free(filename1);
+    free(filename2);
+
+    if (options.debug)
+      printf("%03d `%03d%c", i, i, (i % 10 < 9 ? ' ' : '\n'));
+  }
+
+  FreeBitmap(bitmap1);
+  FreeBitmap(bitmap2);
+
+  if (options.debug)
+    printf("\n");
+
+  Error(ERR_INFO, "%d normal and small images created", NUM_FILE_ELEMENTS);
+
+  CloseAllAndExit(0);
+#endif
+}
index 51509f8cbc03d3e42a7c918faec1df3d3c4db840..75dc34601e02e72b237e06b1f872f102aa1bb0ed 100644 (file)
@@ -68,6 +68,7 @@ void LoadMusicInfo();
 void LoadHelpAnimInfo();
 void LoadHelpTextInfo();
 
-void ConvertLevels(void);
+void ConvertLevels();
+void CreateLevelSketchImages();
 
 #endif /* FILES_H */
index 6ef48aee97da2ced884db8f8a24a540967fe1740..8f2fdf7d61696fa9e6623c6ecaedbe8f3129d78c 100644 (file)
@@ -4976,6 +4976,7 @@ static void InitGlobal()
 
   global.autoplay_leveldir = NULL;
   global.convert_leveldir = NULL;
+  global.create_images_dir = NULL;
 
   global.frames_per_second = 0;
   global.fps_slowdown = FALSE;
@@ -5157,6 +5158,18 @@ void Execute_Command(char *command)
       global.convert_level_nr = atoi(str_ptr); /* get level_nr value */
     }
   }
+  else if (strncmp(command, "create images ", 14) == 0)
+  {
+#if defined(TARGET_SDL)
+    global.create_images_dir = getStringCopy(&command[14]);
+
+    if (access(global.create_images_dir, W_OK) != 0)
+      Error(ERR_EXIT, "image target directory '%s' not found or not writable",
+           global.create_images_dir);
+#else
+    Error(ERR_EXIT, "command only available for SDL target");
+#endif
+  }
 
 #if DEBUG
 #if defined(TARGET_SDL)
@@ -6178,6 +6191,11 @@ void OpenAll()
     ConvertLevels();
     return;
   }
+  else if (global.create_images_dir)
+  {
+    CreateLevelSketchImages();
+    return;
+  }
 
   game_status = GAME_MODE_MAIN;
 
index aae4944aace422cf3f208817a530c3be47c35015..e1612f531312d569e1ecdf691ca9c40219133f6f 100644 (file)
@@ -5538,6 +5538,7 @@ static void print_usage()
         "  \"dump tape FILE\"                 dump tape data from FILE\n"
         "  \"autoplay LEVELDIR [NR ...]\"     play level tapes for LEVELDIR\n"
         "  \"convert LEVELDIR [NR]\"          convert levels in LEVELDIR\n"
+        "  \"create images DIRECTORY\"        write BMP images to DIRECTORY\n"
         "\n",
         program.command_basename);
 }
index 763195b9b7aa6db58295ea39d476d1c243ba294f..aac5a59c254955bebbc7c96631e609265784de13 100644 (file)
@@ -2346,6 +2346,8 @@ struct GlobalInfo
   char *convert_leveldir;
   int convert_level_nr;
 
+  char *create_images_dir;
+
   int num_toons;
 
   float frames_per_second;