projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed re-initialization of textures after change of renderer
[rocksndiamonds.git]
/
src
/
init.c
diff --git
a/src/init.c
b/src/init.c
index 0af298ee1bcdb5af172c564d53334fa9b6fed34a..375bf6a3174e2c25204b7c95a3ceabe41a615d28 100644
(file)
--- a/
src/init.c
+++ b/
src/init.c
@@
-226,13
+226,15
@@
void InitBitmapPointers()
graphic_info[i].bitmap = graphic_info[i].bitmaps[IMG_BITMAP_STANDARD];
}
graphic_info[i].bitmap = graphic_info[i].bitmaps[IMG_BITMAP_STANDARD];
}
-
static void InitGlobalAnimImag
es()
+
void InitImageTextur
es()
{
int i, j, k;
{
int i, j, k;
+ FreeAllImageTextures();
+
for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
{
for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
{
- for (j = 0; j < NUM_GLOBAL_ANIM_PARTS; j++)
+ for (j = 0; j < NUM_GLOBAL_ANIM_PARTS
_ALL
; j++)
{
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
{
{
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
{
@@
-241,7
+243,6
@@
static void InitGlobalAnimImages()
if (graphic == IMG_UNDEFINED)
continue;
if (graphic == IMG_UNDEFINED)
continue;
- // create textures from images for fast GPU blitting, if possible
CreateImageTextures(graphic);
}
}
CreateImageTextures(graphic);
}
}
@@
-537,15
+538,19
@@
void InitGlobalAnimGraphicInfo()
return;
/* always start with reliable default values (no global animations) */
return;
/* always start with reliable default values (no global animations) */
- for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
- for (j = 0; j < NUM_GLOBAL_ANIM_PARTS; j++)
+ for (i = 0; i < NUM_GLOBAL_ANIM
_TOKEN
S; i++)
+ for (j = 0; j < NUM_GLOBAL_ANIM_PARTS
_ALL
; j++)
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
global_anim_info[i].graphic[j][k] = IMG_UNDEFINED;
/* initialize global animation definitions from static configuration */
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
global_anim_info[i].graphic[j][k] = IMG_UNDEFINED;
/* initialize global animation definitions from static configuration */
- for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
- global_anim_info[i].graphic[0][GFX_SPECIAL_ARG_DEFAULT] =
- IMG_GLOBAL_ANIM_1 + i;
+ for (i = 0; i < NUM_GLOBAL_ANIM_TOKENS; i++)
+ {
+ int j = GLOBAL_ANIM_ID_PART_BASE;
+ int k = GFX_SPECIAL_ARG_DEFAULT;
+
+ global_anim_info[i].graphic[j][k] = IMG_GLOBAL_ANIM_1_GFX + i;
+ }
/* initialize global animation definitions from dynamic configuration */
for (i = 0; i < num_property_mappings; i++)
/* initialize global animation definitions from dynamic configuration */
for (i = 0; i < num_property_mappings; i++)
@@
-555,14
+560,14
@@
void InitGlobalAnimGraphicInfo()
int special = property_mapping[i].ext3_index;
int graphic = property_mapping[i].artwork_index;
int special = property_mapping[i].ext3_index;
int graphic = property_mapping[i].artwork_index;
- if (anim_nr < 0 || anim_nr >= NUM_GLOBAL_ANIMS)
+ if (anim_nr < 0 || anim_nr >= NUM_GLOBAL_ANIM
_TOKEN
S)
continue;
continue;
- /*
map animation part to first
part, if not specified */
- if (
part_nr < 0
)
- part_nr =
0
;
+ /*
set animation part to base
part, if not specified */
+ if (
!IS_GLOBAL_ANIM_PART(part_nr)
)
+ part_nr =
GLOBAL_ANIM_ID_PART_BASE
;
- /*
map
animation screen to default, if not specified */
+ /*
set
animation screen to default, if not specified */
if (!IS_SPECIAL_GFX_ARG(special))
special = GFX_SPECIAL_ARG_DEFAULT;
if (!IS_SPECIAL_GFX_ARG(special))
special = GFX_SPECIAL_ARG_DEFAULT;
@@
-573,11
+578,11
@@
void InitGlobalAnimGraphicInfo()
printf("::: InitGlobalAnimGraphicInfo\n");
for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
printf("::: InitGlobalAnimGraphicInfo\n");
for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
- for (j = 0; j < NUM_GLOBAL_ANIM_PARTS; j++)
+ for (j = 0; j < NUM_GLOBAL_ANIM_PARTS
_ALL
; j++)
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
if (global_anim_info[i].graphic[j][k] != IMG_UNDEFINED &&
graphic_info[global_anim_info[i].graphic[j][k]].bitmap != NULL)
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
if (global_anim_info[i].graphic[j][k] != IMG_UNDEFINED &&
graphic_info[global_anim_info[i].graphic[j][k]].bitmap != NULL)
- printf(":::
%d, %d,
%d => %d\n",
+ printf(":::
- anim %d, part %d, mode
%d => %d\n",
i, j, k, global_anim_info[i].graphic[j][k]);
#endif
}
i, j, k, global_anim_info[i].graphic[j][k]);
#endif
}
@@
-1342,6
+1347,8
@@
static void set_graphic_parameters_ext(int graphic, int *parameter,
g->step_delay = parameter[GFX_ARG_STEP_DELAY];
g->direction = parameter[GFX_ARG_DIRECTION];
g->position = parameter[GFX_ARG_POSITION];
g->step_delay = parameter[GFX_ARG_STEP_DELAY];
g->direction = parameter[GFX_ARG_DIRECTION];
g->position = parameter[GFX_ARG_POSITION];
+ g->x = parameter[GFX_ARG_X]; // (may be uninitialized,
+ g->y = parameter[GFX_ARG_Y]; // unlike src_x and src_y)
/* this is only used for drawing font characters */
g->draw_xoffset = parameter[GFX_ARG_DRAW_XOFFSET];
/* this is only used for drawing font characters */
g->draw_xoffset = parameter[GFX_ARG_DRAW_XOFFSET];
@@
-2020,8
+2027,9
@@
static void ReinitializeGraphics()
print_timestamp_time("InitFontGraphicInfo");
InitGlobalAnimGraphicInfo(); /* initialize global animation config */
print_timestamp_time("InitGlobalAnimGraphicInfo");
print_timestamp_time("InitFontGraphicInfo");
InitGlobalAnimGraphicInfo(); /* initialize global animation config */
print_timestamp_time("InitGlobalAnimGraphicInfo");
- InitGlobalAnimImages(); /* initialize global animation images */
- print_timestamp_time("InitGlobalAnimImages");
+
+ InitImageTextures(); /* create textures for certain images */
+ print_timestamp_time("InitImageTextures");
InitGraphicInfo_EM(); /* graphic mapping for EM engine */
print_timestamp_time("InitGraphicInfo_EM");
InitGraphicInfo_EM(); /* graphic mapping for EM engine */
print_timestamp_time("InitGraphicInfo_EM");
@@
-4989,7
+4997,7
@@
static void InitArtworkConfig()
{
static char *image_id_prefix[MAX_NUM_ELEMENTS +
NUM_FONTS +
{
static char *image_id_prefix[MAX_NUM_ELEMENTS +
NUM_FONTS +
- NUM_GLOBAL_ANIMS + 1];
+ NUM_GLOBAL_ANIM
_TOKEN
S + 1];
static char *sound_id_prefix[2 * MAX_NUM_ELEMENTS + 1];
static char *music_id_prefix[NUM_MUSIC_PREFIXES + 1];
static char *action_id_suffix[NUM_ACTIONS + 1];
static char *sound_id_prefix[2 * MAX_NUM_ELEMENTS + 1];
static char *music_id_prefix[NUM_MUSIC_PREFIXES + 1];
static char *action_id_suffix[NUM_ACTIONS + 1];
@@
-5050,10
+5058,10
@@
static void InitArtworkConfig()
image_id_prefix[i] = element_info[i].token_name;
for (i = 0; i < NUM_FONTS; i++)
image_id_prefix[MAX_NUM_ELEMENTS + i] = font_info[i].token_name;
image_id_prefix[i] = element_info[i].token_name;
for (i = 0; i < NUM_FONTS; i++)
image_id_prefix[MAX_NUM_ELEMENTS + i] = font_info[i].token_name;
- for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
+ for (i = 0; i < NUM_GLOBAL_ANIM
_TOKEN
S; i++)
image_id_prefix[MAX_NUM_ELEMENTS + NUM_FONTS + i] =
global_anim_info[i].token_name;
image_id_prefix[MAX_NUM_ELEMENTS + NUM_FONTS + i] =
global_anim_info[i].token_name;
- image_id_prefix[MAX_NUM_ELEMENTS + NUM_FONTS + NUM_GLOBAL_ANIMS] = NULL;
+ image_id_prefix[MAX_NUM_ELEMENTS + NUM_FONTS + NUM_GLOBAL_ANIM
_TOKEN
S] = NULL;
for (i = 0; i < MAX_NUM_ELEMENTS; i++)
sound_id_prefix[i] = element_info[i].token_name;
for (i = 0; i < MAX_NUM_ELEMENTS; i++)
sound_id_prefix[i] = element_info[i].token_name;