X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=dcd822443f976931102c8c6d8c6ef5af084207b4;hb=0c27626bae90cb1eeea4939de0130a49b9aac507;hp=dfbdd059a930c00314d18bc6787bae6f89b3a9e6;hpb=d7bb50dd6727a25908eaecca817b361d9b09158e;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index dfbdd059..dcd82244 100644 --- a/src/init.c +++ b/src/init.c @@ -388,7 +388,7 @@ void InitWindow(int argc, char *argv[]) PropModePrepend, (unsigned char *) &delete_atom, 1); sprintf(icon_filename, "%s/%s/%s", - options.base_directory, GRAPHICS_DIRECTORY, + options.ro_base_directory, GRAPHICS_DIRECTORY, icon_pic.picture_filename); XReadBitmapFile(display,window,icon_filename, &icon_width,&icon_height, @@ -397,7 +397,7 @@ void InitWindow(int argc, char *argv[]) Error(ERR_EXIT, "cannot read icon bitmap file '%s'", icon_filename); sprintf(icon_filename, "%s/%s/%s", - options.base_directory, GRAPHICS_DIRECTORY, + options.ro_base_directory, GRAPHICS_DIRECTORY, icon_pic.picturemask_filename); XReadBitmapFile(display,window,icon_filename, &icon_width,&icon_height, @@ -497,6 +497,21 @@ void InitGfx() }; #endif +#ifdef DEBUG +#if 0 + static struct PictureFileInfo test_pic1 = + { + "RocksFont2", + FALSE + }; + static struct PictureFileInfo test_pic2 = + { + "mouse", + FALSE + }; +#endif +#endif + static struct { int start; @@ -528,6 +543,15 @@ void InitGfx() { GFX_SPIELER4_RIGHT, 4 }, { GFX_SPIELER4_PUSH_LEFT, 4 }, { GFX_SPIELER4_PUSH_RIGHT, 4 }, + { GFX_SP_MURPHY, 1 }, + { GFX_MURPHY_GO_LEFT, 3 }, + { GFX_MURPHY_GO_RIGHT, 3 }, + { GFX_MURPHY_SNAP_UP, 1 }, + { GFX_MURPHY_SNAP_DOWN, 1 }, + { GFX_MURPHY_SNAP_RIGHT, 1 }, + { GFX_MURPHY_SNAP_LEFT, 1 }, + { GFX_MURPHY_PUSH_RIGHT, 1 }, + { GFX_MURPHY_PUSH_LEFT, 1 }, { GFX_GEBLUBBER, 4 }, { GFX_DYNAMIT, 7 }, { GFX_DYNABOMB, 4 }, @@ -542,6 +566,19 @@ void InitGfx() debug_print_timestamp(0, NULL); /* initialize timestamp function */ #endif +#ifdef DEBUG +#if 0 + printf("Test: Loading RocksFont2.pcx ...\n"); + LoadGfx(PIX_SMALLFONT,&test_pic1); + printf("Test: Done.\n"); + printf("Test: Loading mouse.pcx ...\n"); + LoadGfx(PIX_SMALLFONT,&test_pic2); + printf("Test: Done.\n"); +#endif +#endif + + + LoadGfx(PIX_SMALLFONT,&pic[PIX_SMALLFONT]); DrawInitText(WINDOW_TITLE_STRING,20,FC_YELLOW); DrawInitText(COPYRIGHT_STRING,50,FC_RED); @@ -591,35 +628,11 @@ void InitGfx() int tile = tile_needs_clipping[i].start + j; int graphic = tile; int src_x, src_y; + int pixmap_nr; Pixmap src_pixmap; - if (graphic >= GFX_START_ROCKSSCREEN && - graphic <= GFX_END_ROCKSSCREEN) - { - src_pixmap = clipmask[PIX_BACK]; - graphic -= GFX_START_ROCKSSCREEN; - src_x = SX + (graphic % GFX_PER_LINE) * TILEX; - src_y = SY + (graphic / GFX_PER_LINE) * TILEY; - } - else if (graphic >= GFX_START_ROCKSHEROES && - graphic <= GFX_END_ROCKSHEROES) - { - src_pixmap = clipmask[PIX_HEROES]; - graphic -= GFX_START_ROCKSHEROES; - src_x = (graphic % HEROES_PER_LINE) * TILEX; - src_y = (graphic / HEROES_PER_LINE) * TILEY; - } - else if (graphic >= GFX_START_ROCKSFONT && - graphic <= GFX_END_ROCKSFONT) - { - src_pixmap = clipmask[PIX_BIGFONT]; - graphic -= GFX_START_ROCKSFONT; - src_x = (graphic % FONT_CHARS_PER_LINE) * TILEX; - src_y = (graphic / FONT_CHARS_PER_LINE) * TILEY + - FC_SPECIAL1 * FONT_LINES_PER_FONT * TILEY; - } - else - break; + getGraphicSource(graphic, &pixmap_nr, &src_x, &src_y); + src_pixmap = clipmask[pixmap_nr]; tile_clipmask[tile] = XCreatePixmap(display, window, TILEX,TILEY, 1); @@ -683,7 +696,7 @@ void LoadGfx(int pos, struct PictureFileInfo *pic) sprintf(basefilename, "%s%s", pic->picture_filename, picture_ext); DrawInitText(basefilename, 150, FC_YELLOW); sprintf(filename, "%s/%s/%s", - options.base_directory, GRAPHICS_DIRECTORY, basefilename); + options.ro_base_directory, GRAPHICS_DIRECTORY, basefilename); #ifdef MSDOS rest(100); @@ -759,7 +772,7 @@ void LoadGfx(int pos, struct PictureFileInfo *pic) sprintf(basefilename, "%s%s", pic->picture_filename, picturemask_ext); DrawInitText(basefilename, 150, FC_YELLOW); sprintf(filename, "%s/%s/%s", - options.base_directory, GRAPHICS_DIRECTORY, basefilename); + options.ro_base_directory, GRAPHICS_DIRECTORY, basefilename); #if DEBUG_TIMING debug_print_timestamp(1, NULL); /* initialize timestamp function */ @@ -830,7 +843,11 @@ void InitElementProperties() EL_SCHLUESSEL1, EL_SCHLUESSEL2, EL_SCHLUESSEL3, - EL_SCHLUESSEL4 + EL_SCHLUESSEL4, + EL_EM_KEY_1, + EL_EM_KEY_2, + EL_EM_KEY_3, + EL_EM_KEY_4 }; static int ep_schluessel_num = sizeof(ep_schluessel)/sizeof(int); @@ -843,7 +860,15 @@ void InitElementProperties() EL_PFORTE1X, EL_PFORTE2X, EL_PFORTE3X, - EL_PFORTE4X + EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X }; static int ep_pforte_num = sizeof(ep_pforte)/sizeof(int); @@ -920,6 +945,14 @@ void InitElementProperties() EL_PFORTE2X, EL_PFORTE3X, EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, EL_SP_HARD_GRAY, EL_SP_HARD_GREEN, EL_SP_HARD_BLUE, @@ -993,6 +1026,14 @@ void InitElementProperties() EL_PFORTE2X, EL_PFORTE3X, EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, EL_AUSGANG_ZU, EL_AUSGANG_ACT, EL_AUSGANG_AUF, @@ -1061,6 +1102,10 @@ void InitElementProperties() EL_SCHLUESSEL2, EL_SCHLUESSEL3, EL_SCHLUESSEL4, + EL_EM_KEY_1, + EL_EM_KEY_2, + EL_EM_KEY_3, + EL_EM_KEY_4, EL_BOMBE, EL_KOKOSNUSS, EL_TROPFEN, @@ -1248,6 +1293,10 @@ void InitElementProperties() EL_SCHLUESSEL2, EL_SCHLUESSEL3, EL_SCHLUESSEL4, + EL_EM_KEY_1, + EL_EM_KEY_2, + EL_EM_KEY_3, + EL_EM_KEY_4, EL_PFORTE1, EL_PFORTE2, EL_PFORTE3, @@ -1256,7 +1305,15 @@ void InitElementProperties() EL_PFORTE2X, EL_PFORTE3X, EL_PFORTE4X, - EL_DYNAMIT_AUS, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, + EL_DYNAMITE_INACTIVE, EL_UNSICHTBAR, EL_BIRNE_AUS, EL_BIRNE_EIN, @@ -1322,9 +1379,12 @@ void InitElementProperties() static int ep_explosive[] = { EL_BOMBE, - EL_DYNAMIT, - EL_DYNAMIT_AUS, - EL_DYNABOMB, + EL_DYNAMITE_ACTIVE, + EL_DYNAMITE_INACTIVE, + EL_DYNABOMB_ACTIVE_1, + EL_DYNABOMB_ACTIVE_2, + EL_DYNABOMB_ACTIVE_3, + EL_DYNABOMB_ACTIVE_4, EL_DYNABOMB_NR, EL_DYNABOMB_SZ, EL_DYNABOMB_XL, @@ -1441,6 +1501,56 @@ void InitElementProperties() }; static int ep_sp_element_num = sizeof(ep_sp_element)/sizeof(int); + static int ep_quick_gate[] = + { + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, + EL_SP_PORT1_LEFT, + EL_SP_PORT2_LEFT, + EL_SP_PORT1_RIGHT, + EL_SP_PORT2_RIGHT, + EL_SP_PORT1_UP, + EL_SP_PORT2_UP, + EL_SP_PORT1_DOWN, + EL_SP_PORT2_DOWN, + EL_SP_PORT_X, + EL_SP_PORT_Y, + EL_SP_PORT_XY + }; + static int ep_quick_gate_num = sizeof(ep_quick_gate)/sizeof(int); + + static int ep_over_player[] = + { + EL_SP_PORT1_LEFT, + EL_SP_PORT2_LEFT, + EL_SP_PORT1_RIGHT, + EL_SP_PORT2_RIGHT, + EL_SP_PORT1_UP, + EL_SP_PORT2_UP, + EL_SP_PORT1_DOWN, + EL_SP_PORT2_DOWN, + EL_SP_PORT_X, + EL_SP_PORT_Y, + EL_SP_PORT_XY + }; + static int ep_over_player_num = sizeof(ep_over_player)/sizeof(int); + + static int ep_active_bomb[] = + { + EL_DYNAMITE_ACTIVE, + EL_DYNABOMB_ACTIVE_1, + EL_DYNABOMB_ACTIVE_2, + EL_DYNABOMB_ACTIVE_3, + EL_DYNABOMB_ACTIVE_4 + }; + static int ep_active_bomb_num = sizeof(ep_active_bomb)/sizeof(int); + static long ep_bit[] = { EP_BIT_AMOEBALIVE, @@ -1470,7 +1580,10 @@ void InitElementProperties() EP_BIT_PLAYER, EP_BIT_HAS_CONTENT, EP_BIT_EATABLE, - EP_BIT_SP_ELEMENT + EP_BIT_SP_ELEMENT, + EP_BIT_QUICK_GATE, + EP_BIT_OVER_PLAYER, + EP_BIT_ACTIVE_BOMB }; static int *ep_array[] = { @@ -1501,7 +1614,10 @@ void InitElementProperties() ep_player, ep_has_content, ep_eatable, - ep_sp_element + ep_sp_element, + ep_quick_gate, + ep_over_player, + ep_active_bomb }; static int *ep_num[] = { @@ -1532,7 +1648,10 @@ void InitElementProperties() &ep_player_num, &ep_has_content_num, &ep_eatable_num, - &ep_sp_element_num + &ep_sp_element_num, + &ep_quick_gate_num, + &ep_over_player_num, + &ep_active_bomb_num }; static int num_properties = sizeof(ep_num)/sizeof(int *);