/* Bitmaps with graphic file */
#define PIX_BACK 0
-#define PIX_DOOR 1
-#define PIX_HEROES 2
-#define PIX_TOONS 3
-#define PIX_SP 4
-#define PIX_DC 5
-#define PIX_MORE 6
-#define PIX_BIGFONT 7
-#define PIX_SMALLFONT 8
-#define PIX_MEDIUMFONT 9
+#define PIX_ELEMENTS 1
+#define PIX_DOOR 2
+#define PIX_HEROES 3
+#define PIX_TOONS 4
+#define PIX_SP 5
+#define PIX_DC 6
+#define PIX_MORE 7
+#define PIX_BIGFONT 8
+#define PIX_SMALLFONT 9
+#define PIX_MEDIUMFONT 10
/* Bitmaps without graphic file */
-#define PIX_DB_DOOR 10
-#define PIX_DB_FIELD 11
+#define PIX_DB_DOOR 11
+#define PIX_DB_FIELD 12
-#define NUM_PICTURES 10
+#define NUM_PICTURES 11
#define NUM_BITMAPS 12
/* boundaries of arrays etc. */
#define MAX_TAPELEN (1000 * 50) /* max. time * framerate */
#define MAX_SCORE_ENTRIES 100
#define MAX_ELEMENTS 700 /* 500 static + 200 runtime */
+#define MAX_GRAPHICS 1536 /* see below: NUM_TILES */
#define MAX_NUM_AMOEBA 100
/* values for elements with content */
struct ElementInfo
{
- char *sound_class_name;
- char *editor_description;
+ char *sound_class_name; /* classification for custom sound effects */
+ char *editor_description; /* short description for level editor */
+
+ int graphic;
+};
+
+struct GraphicInfo
+{
+ Bitmap *bitmap;
+ int src_x, src_y;
+ int anim_frames;
+ int anim_delay;
+ int anim_mode;
};
extern GC tile_clip_gc;
extern struct GameInfo game;
extern struct GlobalInfo global;
extern struct ElementInfo element_info[];
-extern struct SoundEffectInfo sound_effects[];
+extern struct GraphicInfo graphic_info[];
+extern struct ConfigInfo image_config[], sound_config[];
+extern struct ConfigInfo image_config_suffix[], sound_config_suffix[];
+extern struct FileInfo *image_files, *sound_files;
/* often used screen positions */
#define SX 8
#define MICROLEV_YPOS (SX + 12 * TILEY - MICRO_TILEY)
#define MICROLABEL_YPOS (MICROLEV_YPOS + MICROLEV_YSIZE + 7)
-#define GFX_STARTX SX
-#define GFX_STARTY SY
-#define MINI_GFX_STARTX SX
-#define MINI_GFX_STARTY 424
-#define MICRO_GFX_STARTX SX
-#define MICRO_GFX_STARTY 536
+#define MINI_GFX_STARTX 0
+#define MINI_GFX_STARTY 416
+#define MICRO_GFX_STARTX 0
+#define MICRO_GFX_STARTY 528
#define GFX_PER_LINE 16
#define MINI_GFX_PER_LINE 32
#define MICRO_GFX_PER_LINE 128
#define EL_MAGIC_WALL_BD_FILLING 612
/* game graphics:
-** 0 - 255: graphics from "RocksScreen"
+** 0 - 255: graphics from "RocksElements"
** 256 - 511: graphics from "RocksFont"
** 512 - 767: graphics from "RocksHeroes"
** 768 - 1023: graphics from "RocksSP"
** 1280 - 1535: graphics from "RocksMore"
*/
-#define GFX_START_ROCKSSCREEN 0
-#define GFX_END_ROCKSSCREEN 255
+#define GFX_START_ROCKSELEMENTS 0
+#define GFX_END_ROCKSELEMENTS 255
#define GFX_START_ROCKSFONT 256
#define GFX_END_ROCKSFONT 511
#define GFX_START_ROCKSHEROES 512
#define GFX_START_ROCKSMORE 1280
#define GFX_END_ROCKSMORE 1535
-#define NUM_TILES 1536
+#define NUM_TILES 1536 /* see above: MAX_GRAPHICS */
/* graphics from "RocksScreen" */
/* Zeile 0 (0) */
#define NUM_SOUNDS 55
-/* values for sound effects */
+/* values for image configuration suffixes */
+#define GFXARG_FRAME_XPOS 0
+#define GFXARG_FRAME_YPOS 1
+#define GFXARG_NUM_FRAMES 2
+
+/* values for image configuration */
+#define GFX_BD_DIAMOND 0
+#define GFX_ROBOT_WHEEL 1
+
+#define NUM_IMAGE_FILES 2
+
+/* values for sound configuration suffixes */
+/* (currently none) */
+
+/* values for sound configuration */
#define SND_BD_EMPTY_SPACE_DIGGING 0
#define SND_BD_SAND_DIGGING 1
#define SND_BD_DIAMOND_COLLECTING 2
#define SND_MENU_HALL_OF_FAME 167
#define SND_MENU_INFO_SCREEN 168
-#define NUM_SOUND_EFFECTS 169
+#define NUM_SOUND_FILES 169
/* values for game_status */
#define PROGRAM_VERSION_MAJOR 2
#define PROGRAM_VERSION_MINOR 1
-#define PROGRAM_VERSION_PATCH 0
-#define PROGRAM_VERSION_STRING "2.1.0"
+#define PROGRAM_VERSION_PATCH 2
+#define PROGRAM_VERSION_STRING "2.1.2"
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"