projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20060430-1-src
[rocksndiamonds.git]
/
src
/
init.c
diff --git
a/src/init.c
b/src/init.c
index d228ea5064a6340cfb7183da8b60f57b73bb681d..a25394b6f09f7e7b5615eed538d3e1dcebae42df 100644
(file)
--- a/
src/init.c
+++ b/
src/init.c
@@
-66,6
+66,11
@@
static int copy_properties[][5] =
EL_PACMAN_LEFT, EL_PACMAN_RIGHT,
EL_PACMAN_UP, EL_PACMAN_DOWN
},
EL_PACMAN_LEFT, EL_PACMAN_RIGHT,
EL_PACMAN_UP, EL_PACMAN_DOWN
},
+ {
+ EL_YAMYAM,
+ EL_YAMYAM_LEFT, EL_YAMYAM_RIGHT,
+ EL_YAMYAM_UP, EL_YAMYAM_DOWN
+ },
{
EL_MOLE,
EL_MOLE_LEFT, EL_MOLE_RIGHT,
{
EL_MOLE,
EL_MOLE_LEFT, EL_MOLE_RIGHT,
@@
-138,6
+143,15
@@
void InitElementSmallImages()
InitElementSmallImagesScaledUp(special_graphics[i]);
}
InitElementSmallImagesScaledUp(special_graphics[i]);
}
+void InitScaledImages()
+{
+ int i;
+
+ /* scale normal images from static configuration, if not already scaled */
+ for (i = 0; i < NUM_IMAGE_FILES; i++)
+ ScaleImage(i, graphic_info[i].scale_up_factor);
+}
+
#if 1
/* !!! FIX THIS (CHANGE TO USING NORMAL ELEMENT GRAPHIC DEFINITIONS) !!! */
void SetBitmaps_EM(Bitmap **em_bitmap)
#if 1
/* !!! FIX THIS (CHANGE TO USING NORMAL ELEMENT GRAPHIC DEFINITIONS) !!! */
void SetBitmaps_EM(Bitmap **em_bitmap)
@@
-290,8
+304,11
@@
void InitFontGraphicInfo()
font_bitmap_info[font_bitmap_id].src_y = graphic_info[graphic].src_y;
font_bitmap_info[font_bitmap_id].width = graphic_info[graphic].width;
font_bitmap_info[font_bitmap_id].height = graphic_info[graphic].height;
font_bitmap_info[font_bitmap_id].src_y = graphic_info[graphic].src_y;
font_bitmap_info[font_bitmap_id].width = graphic_info[graphic].width;
font_bitmap_info[font_bitmap_id].height = graphic_info[graphic].height;
- font_bitmap_info[font_bitmap_id].draw_x = graphic_info[graphic].draw_x;
- font_bitmap_info[font_bitmap_id].draw_y = graphic_info[graphic].draw_y;
+
+ font_bitmap_info[font_bitmap_id].draw_xoffset =
+ graphic_info[graphic].draw_xoffset;
+ font_bitmap_info[font_bitmap_id].draw_yoffset =
+ graphic_info[graphic].draw_yoffset;
font_bitmap_info[font_bitmap_id].num_chars =
graphic_info[graphic].anim_frames;
font_bitmap_info[font_bitmap_id].num_chars =
graphic_info[graphic].anim_frames;
@@
-712,6
+729,8
@@
void InitElementGraphicInfo()
}
}
}
}
+#if 0
+ /* !!! THIS ALSO CLEARS SPECIAL FLAGS (AND IS NOT NEEDED ANYWAY) !!! */
/* set animation mode to "none" for each graphic with only 1 frame */
for (i = 0; i < MAX_NUM_ELEMENTS; i++)
{
/* set animation mode to "none" for each graphic with only 1 frame */
for (i = 0; i < MAX_NUM_ELEMENTS; i++)
{
@@
-737,6
+756,7
@@
void InitElementGraphicInfo()
}
}
}
}
}
}
+#endif
#if 0
#if DEBUG
#if 0
#if DEBUG
@@
-816,12
+836,12
@@
static int get_graphic_parameter_value(char *value_raw, char *suffix, int type)
if (type != TYPE_TOKEN)
return get_parameter_value(value_raw, suffix, type);
if (type != TYPE_TOKEN)
return get_parameter_value(value_raw, suffix, type);
- if (str
cmp(value_raw, ARG_UNDEFINED) == 0
)
+ if (str
Equal(value_raw, ARG_UNDEFINED)
)
return ARG_UNDEFINED_VALUE;
/* !!! OPTIMIZE THIS BY USING HASH !!! */
for (i = 0; i < MAX_NUM_ELEMENTS; i++)
return ARG_UNDEFINED_VALUE;
/* !!! OPTIMIZE THIS BY USING HASH !!! */
for (i = 0; i < MAX_NUM_ELEMENTS; i++)
- if (str
cmp(element_info[i].token_name, value_raw) == 0
)
+ if (str
Equal(element_info[i].token_name, value_raw)
)
return i;
/* !!! OPTIMIZE THIS BY USING HASH !!! */
return i;
/* !!! OPTIMIZE THIS BY USING HASH !!! */
@@
-829,12
+849,12
@@
static int get_graphic_parameter_value(char *value_raw, char *suffix, int type)
{
int len_config_value = strlen(image_config[i].value);
{
int len_config_value = strlen(image_config[i].value);
- if (
strcmp(&image_config[i].value[len_config_value - 4], ".pcx") != 0
&&
-
strcmp(&image_config[i].value[len_config_value - 4], ".wav") != 0
&&
-
strcmp(image_config[i].value, UNDEFINED_FILENAME) != 0
)
+ if (
!strEqual(&image_config[i].value[len_config_value - 4], ".pcx")
&&
+
!strEqual(&image_config[i].value[len_config_value - 4], ".wav")
&&
+
!strEqual(image_config[i].value, UNDEFINED_FILENAME)
)
continue;
continue;
- if (str
cmp(image_config[i].token, value_raw) == 0
)
+ if (str
Equal(image_config[i].token, value_raw)
)
return x;
x++;
return x;
x++;
@@
-1055,8
+1075,8
@@
static void set_graphic_parameters(int graphic)
graphic_info[graphic].step_delay = parameter[GFX_ARG_STEP_DELAY];
/* this is only used for drawing font characters */
graphic_info[graphic].step_delay = parameter[GFX_ARG_STEP_DELAY];
/* this is only used for drawing font characters */
- graphic_info[graphic].draw_x = parameter[GFX_ARG_DRAW_XOFFSET];
- graphic_info[graphic].draw_y = parameter[GFX_ARG_DRAW_YOFFSET];
+ graphic_info[graphic].draw_x
offset
= parameter[GFX_ARG_DRAW_XOFFSET];
+ graphic_info[graphic].draw_y
offset
= parameter[GFX_ARG_DRAW_YOFFSET];
/* this is only used for drawing envelope graphics */
graphic_info[graphic].draw_masked = parameter[GFX_ARG_DRAW_MASKED];
/* this is only used for drawing envelope graphics */
graphic_info[graphic].draw_masked = parameter[GFX_ARG_DRAW_MASKED];
@@
-1282,8
+1302,8
@@
static void InitElementSoundInfo()
element_info[element].sound[action] = sound;
else
for (j = 0; j < MAX_NUM_ELEMENTS; j++)
element_info[element].sound[action] = sound;
else
for (j = 0; j < MAX_NUM_ELEMENTS; j++)
- if (str
cmp
(element_info[j].class_name,
-
element_info[element].class_name) == 0
)
+ if (str
Equal
(element_info[j].class_name,
+
element_info[element].class_name)
)
element_info[j].sound[action] = sound;
}
element_info[j].sound[action] = sound;
}
@@
-1301,8
+1321,8
@@
static void InitElementSoundInfo()
action = ACTION_DEFAULT;
for (j = 0; j < MAX_NUM_ELEMENTS; j++)
action = ACTION_DEFAULT;
for (j = 0; j < MAX_NUM_ELEMENTS; j++)
- if (str
cmp
(element_info[j].class_name,
-
element_info[element_class].class_name) == 0
)
+ if (str
Equal
(element_info[j].class_name,
+
element_info[element_class].class_name)
)
element_info[j].sound[action] = sound;
}
element_info[j].sound[action] = sound;
}
@@
-1457,8
+1477,8
@@
static void InitSoundInfo()
int len_action_text = strlen(element_action_info[j].suffix);
if (len_action_text < len_effect_text &&
int len_action_text = strlen(element_action_info[j].suffix);
if (len_action_text < len_effect_text &&
- str
cmp
(&sound->token[len_effect_text - len_action_text],
-
element_action_info[j].suffix) == 0
)
+ str
Equal
(&sound->token[len_effect_text - len_action_text],
+
element_action_info[j].suffix)
)
{
sound_effect_properties[i] = element_action_info[j].value;
sound_info[i].loop = element_action_info[j].is_loop_sound;
{
sound_effect_properties[i] = element_action_info[j].value;
sound_info[i].loop = element_action_info[j].is_loop_sound;
@@
-1636,7
+1656,8
@@
static void ReinitializeGraphics()
InitElementGraphicInfo(); /* element game graphic mapping */
InitElementSpecialGraphicInfo(); /* element special graphic mapping */
InitElementGraphicInfo(); /* element game graphic mapping */
InitElementSpecialGraphicInfo(); /* element special graphic mapping */
- InitElementSmallImages(); /* scale images to all needed sizes */
+ InitElementSmallImages(); /* scale elements to all needed sizes */
+ InitScaledImages(); /* scale all other images, if needed */
InitFontGraphicInfo(); /* initialize text drawing functions */
InitGraphicInfo_EM(); /* graphic mapping for EM engine */
InitFontGraphicInfo(); /* initialize text drawing functions */
InitGraphicInfo_EM(); /* graphic mapping for EM engine */
@@
-1703,6
+1724,10
@@
static int get_special_property_bit(int element, int property_bit_nr)
{ EL_BD_FIREFLY_UP, 4 },
{ EL_BD_FIREFLY_DOWN, 4 },
{ EL_YAMYAM, 5 },
{ EL_BD_FIREFLY_UP, 4 },
{ EL_BD_FIREFLY_DOWN, 4 },
{ EL_YAMYAM, 5 },
+ { EL_YAMYAM_LEFT, 5 },
+ { EL_YAMYAM_RIGHT, 5 },
+ { EL_YAMYAM_UP, 5 },
+ { EL_YAMYAM_DOWN, 5 },
{ EL_DARK_YAMYAM, 6 },
{ EL_ROBOT, 7 },
{ EL_PACMAN, 8 },
{ EL_DARK_YAMYAM, 6 },
{ EL_ROBOT, 7 },
{ EL_PACMAN, 8 },
@@
-3246,6
+3271,10
@@
void InitElementPropertiesStatic()
EL_PLAYER_4,
EL_SP_MURPHY,
EL_YAMYAM,
EL_PLAYER_4,
EL_SP_MURPHY,
EL_YAMYAM,
+ EL_YAMYAM_LEFT,
+ EL_YAMYAM_RIGHT,
+ EL_YAMYAM_UP,
+ EL_YAMYAM_DOWN,
EL_AMOEBA_WET,
EL_AMOEBA_DRY,
EL_AMOEBA_FULL,
EL_AMOEBA_WET,
EL_AMOEBA_DRY,
EL_AMOEBA_FULL,
@@
-3953,7
+3982,7
@@
void Execute_Command(char *command)
{
int i;
{
int i;
- if (str
cmp(command, "print graphicsinfo.conf") == 0
)
+ if (str
Equal(command, "print graphicsinfo.conf")
)
{
printf("# You can configure additional/alternative image files here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
{
printf("# You can configure additional/alternative image files here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
@@
-3969,7
+3998,7
@@
void Execute_Command(char *command)
exit(0);
}
exit(0);
}
- else if (str
cmp(command, "print soundsinfo.conf") == 0
)
+ else if (str
Equal(command, "print soundsinfo.conf")
)
{
printf("# You can configure additional/alternative sound files here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
{
printf("# You can configure additional/alternative sound files here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
@@
-3985,7
+4014,7
@@
void Execute_Command(char *command)
exit(0);
}
exit(0);
}
- else if (str
cmp(command, "print musicinfo.conf") == 0
)
+ else if (str
Equal(command, "print musicinfo.conf")
)
{
printf("# You can configure additional/alternative music files here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
{
printf("# You can configure additional/alternative music files here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
@@
-4001,7
+4030,7
@@
void Execute_Command(char *command)
exit(0);
}
exit(0);
}
- else if (str
cmp(command, "print editorsetup.conf") == 0
)
+ else if (str
Equal(command, "print editorsetup.conf")
)
{
printf("# You can configure your personal editor element list here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
{
printf("# You can configure your personal editor element list here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
@@
-4015,7
+4044,7
@@
void Execute_Command(char *command)
exit(0);
}
exit(0);
}
- else if (str
cmp(command, "print helpanim.conf") == 0
)
+ else if (str
Equal(command, "print helpanim.conf")
)
{
printf("# You can configure different element help animations here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
{
printf("# You can configure different element help animations here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
@@
-4026,13
+4055,13
@@
void Execute_Command(char *command)
printf("# %s\n", getFormattedSetupEntry(helpanim_config[i].token,
helpanim_config[i].value));
printf("# %s\n", getFormattedSetupEntry(helpanim_config[i].token,
helpanim_config[i].value));
- if (str
cmp(helpanim_config[i].token, "end") == 0
)
+ if (str
Equal(helpanim_config[i].token, "end")
)
printf("#\n");
}
exit(0);
}
printf("#\n");
}
exit(0);
}
- else if (str
cmp(command, "print helptext.conf") == 0
)
+ else if (str
Equal(command, "print helptext.conf")
)
{
printf("# You can configure different element help text here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
{
printf("# You can configure different element help text here.\n");
printf("# (The entries below are default and therefore commented out.)\n");
@@
-4326,18
+4355,18
@@
void InitGfx()
sprintf(font_token, "%s_%d", CONFIG_TOKEN_FONT_INITIAL, j + 1);
len_font_token = strlen(font_token);
sprintf(font_token, "%s_%d", CONFIG_TOKEN_FONT_INITIAL, j + 1);
len_font_token = strlen(font_token);
- if (str
cmp(image_config[i].token, font_token) == 0
)
+ if (str
Equal(image_config[i].token, font_token)
)
filename_font_initial = image_config[i].value;
else if (strlen(image_config[i].token) > len_font_token &&
strncmp(image_config[i].token, font_token, len_font_token) == 0)
{
filename_font_initial = image_config[i].value;
else if (strlen(image_config[i].token) > len_font_token &&
strncmp(image_config[i].token, font_token, len_font_token) == 0)
{
- if (str
cmp(&image_config[i].token[len_font_token], ".x") == 0
)
+ if (str
Equal(&image_config[i].token[len_font_token], ".x")
)
font_initial[j].src_x = atoi(image_config[i].value);
font_initial[j].src_x = atoi(image_config[i].value);
- else if (str
cmp(&image_config[i].token[len_font_token], ".y") == 0
)
+ else if (str
Equal(&image_config[i].token[len_font_token], ".y")
)
font_initial[j].src_y = atoi(image_config[i].value);
font_initial[j].src_y = atoi(image_config[i].value);
- else if (str
cmp(&image_config[i].token[len_font_token], ".width") == 0
)
+ else if (str
Equal(&image_config[i].token[len_font_token], ".width")
)
font_initial[j].width = atoi(image_config[i].value);
font_initial[j].width = atoi(image_config[i].value);
- else if (str
cmp(&image_config[i].token[len_font_token],".height") == 0
)
+ else if (str
Equal(&image_config[i].token[len_font_token],".height")
)
font_initial[j].height = atoi(image_config[i].value);
}
}
font_initial[j].height = atoi(image_config[i].value);
}
}
@@
-4352,7
+4381,8
@@
void InitGfx()
if (filename_font_initial == NULL) /* should not happen */
Error(ERR_EXIT, "cannot get filename for '%s'", CONFIG_TOKEN_FONT_INITIAL);
if (filename_font_initial == NULL) /* should not happen */
Error(ERR_EXIT, "cannot get filename for '%s'", CONFIG_TOKEN_FONT_INITIAL);
- /* create additional image buffers for double-buffering */
+ /* create additional image buffers for double-buffering and cross-fading */
+ bitmap_db_title = CreateBitmap(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH);
bitmap_db_field = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH);
bitmap_db_door = CreateBitmap(3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH);
bitmap_db_field = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH);
bitmap_db_door = CreateBitmap(3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH);
@@
-4377,6
+4407,14
@@
void InitGfx()
DrawInitText("Loading graphics:", 120, FC_GREEN);
}
DrawInitText("Loading graphics:", 120, FC_GREEN);
}
+void RedrawBackground()
+{
+ BlitBitmap(graphic_info[IMG_GLOBAL_BORDER].bitmap, backbuffer,
+ 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+
+ redraw_mask = REDRAW_ALL;
+}
+
void InitGfxBackground()
{
int x, y;
void InitGfxBackground()
{
int x, y;
@@
-4385,8
+4423,8
@@
void InitGfxBackground()
fieldbuffer = bitmap_db_field;
SetDrawtoField(DRAW_BACKBUFFER);
fieldbuffer = bitmap_db_field;
SetDrawtoField(DRAW_BACKBUFFER);
- BlitBitmap(graphic_info[IMG_GLOBAL_BORDER].bitmap, backbuffer,
- 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
+ RedrawBackground();
+
ClearRectangle(backbuffer, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
ClearRectangle(bitmap_db_door, 0, 0, 3 * DXSIZE, DYSIZE + VYSIZE);
ClearRectangle(backbuffer, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
ClearRectangle(bitmap_db_door, 0, 0, 3 * DXSIZE, DYSIZE + VYSIZE);
@@
-4557,8
+4595,8
@@
static char *getNewArtworkIdentifier(int type)
#endif
/* ---------- reload if current artwork identifier has changed ----------- */
#endif
/* ---------- reload if current artwork identifier has changed ----------- */
- if (
strcmp
(ARTWORK_CURRENT_IDENTIFIER(artwork, type),
-
artwork_current_identifier) != 0
)
+ if (
!strEqual
(ARTWORK_CURRENT_IDENTIFIER(artwork, type),
+
artwork_current_identifier)
)
artwork_new_identifier = artwork_current_identifier;
*(ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type))= artwork_current_identifier;
artwork_new_identifier = artwork_current_identifier;
*(ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type))= artwork_current_identifier;
@@
-4592,14
+4630,20
@@
static char *getNewArtworkIdentifier(int type)
void ReloadCustomArtwork(int force_reload)
{
void ReloadCustomArtwork(int force_reload)
{
- char *gfx_new_identifier
= getNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS)
;
- char *snd_new_identifier
= getNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS)
;
- char *mus_new_identifier
= getNewArtworkIdentifier(ARTWORK_TYPE_MUSIC)
;
+ char *gfx_new_identifier;
+ char *snd_new_identifier;
+ char *mus_new_identifier;
boolean force_reload_gfx = (force_reload & (1 << ARTWORK_TYPE_GRAPHICS));
boolean force_reload_snd = (force_reload & (1 << ARTWORK_TYPE_SOUNDS));
boolean force_reload_mus = (force_reload & (1 << ARTWORK_TYPE_MUSIC));
boolean redraw_screen = FALSE;
boolean force_reload_gfx = (force_reload & (1 << ARTWORK_TYPE_GRAPHICS));
boolean force_reload_snd = (force_reload & (1 << ARTWORK_TYPE_SOUNDS));
boolean force_reload_mus = (force_reload & (1 << ARTWORK_TYPE_MUSIC));
boolean redraw_screen = FALSE;
+ force_reload_gfx |= AdjustGraphicsForEMC();
+
+ gfx_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS);
+ snd_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS);
+ mus_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_MUSIC);
+
if (gfx_new_identifier != NULL || force_reload_gfx)
{
#if 0
if (gfx_new_identifier != NULL || force_reload_gfx)
{
#if 0
@@
-4637,7
+4681,11
@@
void ReloadCustomArtwork(int force_reload)
if (redraw_screen)
{
if (redraw_screen)
{
+#if 1
+ RedrawBackground();
+#else
InitGfxBackground();
InitGfxBackground();
+#endif
/* force redraw of (open or closed) door graphics */
SetDoorState(DOOR_OPEN_ALL);
/* force redraw of (open or closed) door graphics */
SetDoorState(DOOR_OPEN_ALL);