static char *direction_suffix[NUM_DIRECTIONS + 1];
static char *special_suffix[NUM_SPECIAL_GFX_ARGS + 1];
static char *dummy[1] = { NULL };
+ static char *ignore_image_tokens[] =
+ {
+ "name",
+ "sort_priority",
+ "menu.main.hide_static_text",
+ "global.num_toons",
+ NULL
+ };
+ static char *ignore_sound_tokens[] =
+ {
+ "name",
+ "sort_priority",
+ NULL
+ };
int i;
for (i=0; i<MAX_NUM_ELEMENTS + 1; i++)
special_suffix[i] = special_suffix_info[i].suffix;
InitImageList(image_config, NUM_IMAGE_FILES, image_config_suffix,
- element_prefix, action_suffix,direction_suffix,special_suffix);
+ element_prefix, action_suffix, direction_suffix,
+ special_suffix, ignore_image_tokens);
InitSoundList(sound_config, NUM_SOUND_FILES, sound_config_suffix,
- sound_class_prefix, action_suffix, dummy, dummy);
+ sound_class_prefix, action_suffix, dummy,
+ dummy, ignore_sound_tokens);
}
void InitLevelArtworkInfo()
static void InitImages()
{
ReloadCustomImages();
- ReinitializeGraphics();
LoadCustomElementDescriptions();
LoadSpecialMenuDesignSettings();
+
+ ReinitializeGraphics();
}
static void InitSound()
ClearRectangle(window, 0, 0, WIN_XSIZE, WIN_YSIZE);
- ReloadCustomImages();
- ReinitializeGraphics();
-
- LoadCustomElementDescriptions();
- LoadSpecialMenuDesignSettings();
+ InitImages();
FreeTileClipmasks();
InitTileClipmasks();
}
}
-#if 1
+#if 0
#if DEBUG
if (options.verbose)
{
}
}
-static void InitElementSoundInfo()
-{
- /* !!! soon to come !!! */
-}
-
static void set_graphic_parameters(int graphic, char **parameter_raw)
{
Bitmap *src_bitmap = getBitmapFromImageID(graphic);
static void InitGraphicInfo()
{
- static boolean clipmasks_initialized = FALSE;
int fallback_graphic = IMG_CHAR_EXCLAM;
struct FileInfo *fallback_image = getImageListEntry(fallback_graphic);
Bitmap *fallback_bitmap = getBitmapFromImageID(fallback_graphic);
int num_images = getImageListSize();
int i;
+
#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
+ static boolean clipmasks_initialized = FALSE;
Pixmap src_pixmap;
XGCValues clip_gc_values;
unsigned long clip_gc_valuemask;
clip_gc_values.graphics_exposures = False;
clip_gc_values.clip_mask = graphic_info[i].clip_mask;
clip_gc_valuemask = GCGraphicsExposures | GCClipMask;
+
graphic_info[i].clip_gc =
XCreateGC(display, window->drawable, clip_gc_valuemask, &clip_gc_values);
#endif
#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
if (copy_clipmask_gc)
XFreeGC(display, copy_clipmask_gc);
-#endif
clipmasks_initialized = TRUE;
+#endif
+}
+
+static void InitElementSoundInfo()
+{
+ /* !!! soon to come !!! */
}
static void set_sound_parameters(int sound, char **parameter_raw)
static void InitSoundInfo()
{
+ struct PropertyMapping *property_mapping = getSoundListPropertyMapping();
+ int num_property_mappings = getSoundListPropertyMappingSize();
int *sound_effect_properties;
int num_sounds = getSoundListSize();
int i, j;
free(sound_effect_properties);
+ /* initialize element/sound mapping from dynamic configuration */
+ for (i=0; i < num_property_mappings; i++)
+ {
+ int element = property_mapping[i].base_index;
+ int action = property_mapping[i].ext1_index;
+ int sound = property_mapping[i].artwork_index;
+
+ if (action < 0)
+ action = ACTION_DEFAULT;
+
+ element_info[element].sound[action] = sound;
+ }
+
+#if 0
+ /* TEST ONLY */
+ {
+ int element = EL_CUSTOM_11;
+ int j = 0;
+
+ while (element_action_info[j].suffix)
+ {
+ printf("element %d, sound action '%s' == %d\n",
+ element, element_action_info[j].suffix,
+ element_info[element].sound[j]);
+ j++;
+ }
+ }
+
+ PlaySoundLevelElementAction(0,0, EL_CUSTOM_11, ACTION_PUSHING);
+#endif
+
#if 0
/* TEST ONLY */
{
if (element_action_info[j].value == sound_action)
printf("element %d, sound action '%s' == %d\n",
element, element_action_info[j].suffix,
- element_info_[element].sound[sound_action]);
+ element_info[element].sound[sound_action]);
j++;
}
}
static int ep_solid[] =
{
- EL_STEELWALL,
EL_WALL,
EL_WALL_GROWING,
EL_WALL_GROWING_X,
EL_BD_MAGIC_WALL_DEAD,
EL_GAMEOFLIFE,
EL_BIOMAZE,
- EL_ACIDPOOL_TOPLEFT,
- EL_ACIDPOOL_TOPRIGHT,
- EL_ACIDPOOL_BOTTOMLEFT,
- EL_ACIDPOOL_BOTTOM,
- EL_ACIDPOOL_BOTTOMRIGHT,
EL_SP_CHIP_SINGLE,
EL_SP_CHIP_LEFT,
EL_SP_CHIP_RIGHT,
EL_SP_CHIP_UPPER,
EL_SP_CHIP_LOWER,
+ EL_SP_TERMINAL,
+ EL_SP_TERMINAL_ACTIVE,
+ EL_SP_EXIT_CLOSED,
+ EL_SP_EXIT_OPEN,
+ EL_INVISIBLE_WALL,
+ EL_INVISIBLE_WALL_ACTIVE,
+ EL_SWITCHGATE_SWITCH_UP,
+ EL_SWITCHGATE_SWITCH_DOWN,
+ EL_TIMEGATE_SWITCH,
+ EL_TIMEGATE_SWITCH_ACTIVE,
+ EL_EMC_WALL_PILLAR_UPPER,
+ EL_EMC_WALL_PILLAR_MIDDLE,
+ EL_EMC_WALL_PILLAR_LOWER,
+ EL_EMC_WALL4,
+ EL_EMC_WALL5,
+ EL_EMC_WALL6,
+ EL_EMC_WALL7,
+ EL_EMC_WALL8,
+ EL_WALL_PEARL,
+ EL_WALL_CRYSTAL,
+
+ /* the following elements are a direct copy of "indestructible" elements,
+ except "EL_ACID", which is "indestructible", but not "solid"! */
+#if 0
+ EL_ACID,
+#endif
+ EL_STEELWALL,
+ EL_ACIDPOOL_TOPLEFT,
+ EL_ACIDPOOL_TOPRIGHT,
+ EL_ACIDPOOL_BOTTOMLEFT,
+ EL_ACIDPOOL_BOTTOM,
+ EL_ACIDPOOL_BOTTOMRIGHT,
EL_SP_HARD_GRAY,
EL_SP_HARD_GREEN,
EL_SP_HARD_BLUE,
EL_SP_HARD_BASE4,
EL_SP_HARD_BASE5,
EL_SP_HARD_BASE6,
- EL_SP_TERMINAL,
- EL_SP_TERMINAL_ACTIVE,
- EL_SP_EXIT_CLOSED,
- EL_SP_EXIT_OPEN,
EL_INVISIBLE_STEELWALL,
EL_INVISIBLE_STEELWALL_ACTIVE,
- EL_INVISIBLE_WALL,
- EL_INVISIBLE_WALL_ACTIVE,
EL_CONVEYOR_BELT1_SWITCH_LEFT,
EL_CONVEYOR_BELT1_SWITCH_MIDDLE,
EL_CONVEYOR_BELT1_SWITCH_RIGHT,
EL_CONVEYOR_BELT4_SWITCH_LEFT,
EL_CONVEYOR_BELT4_SWITCH_MIDDLE,
EL_CONVEYOR_BELT4_SWITCH_RIGHT,
- EL_SWITCHGATE_SWITCH_UP,
- EL_SWITCHGATE_SWITCH_DOWN,
EL_LIGHT_SWITCH,
EL_LIGHT_SWITCH_ACTIVE,
- EL_TIMEGATE_SWITCH,
- EL_TIMEGATE_SWITCH_ACTIVE,
EL_SIGN_EXCLAMATION,
EL_SIGN_RADIOACTIVITY,
EL_SIGN_STOP,
EL_EMC_STEELWALL2,
EL_EMC_STEELWALL3,
EL_EMC_STEELWALL4,
- EL_EMC_WALL_PILLAR_UPPER,
- EL_EMC_WALL_PILLAR_MIDDLE,
- EL_EMC_WALL_PILLAR_LOWER,
- EL_EMC_WALL4,
- EL_EMC_WALL5,
- EL_EMC_WALL6,
- EL_EMC_WALL7,
- EL_EMC_WALL8,
EL_CRYSTAL,
- EL_WALL_PEARL,
- EL_WALL_CRYSTAL,
EL_GATE1,
EL_GATE2,
EL_GATE3,
};
static int ep_solid_num = SIZEOF_ARRAY_INT(ep_solid);
- static int ep_massive[] =
+ static int ep_indestructible[] =
{
EL_STEELWALL,
EL_ACID,
EL_TUBE_RIGHT_UP,
EL_TUBE_RIGHT_DOWN
};
- static int ep_massive_num = SIZEOF_ARRAY_INT(ep_massive);
+ static int ep_indestructible_num = SIZEOF_ARRAY_INT(ep_indestructible);
static int ep_slippery[] =
{
EP_BIT_SCHLUESSEL,
EP_BIT_PFORTE,
EP_BIT_SOLID,
- EP_BIT_MASSIVE,
+ EP_BIT_INDESTRUCTIBLE,
EP_BIT_SLIPPERY,
EP_BIT_ENEMY,
EP_BIT_MAUER,
ep_schluessel,
ep_pforte,
ep_solid,
- ep_massive,
+ ep_indestructible,
ep_slippery,
ep_enemy,
ep_mauer,
&ep_schluessel_num,
&ep_pforte_num,
&ep_solid_num,
- &ep_massive_num,
+ &ep_indestructible_num,
&ep_slippery_num,
&ep_enemy_num,
&ep_mauer_num,