X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Finit.c;h=7c62ad953e0e56ee95b5c0b3ac99751220b38208;hp=4b871020796012f2e968bc92d2320d76c497826f;hb=afd9659572a8963b24b17340613b396ea49cbe55;hpb=9cfd3853252303df85d4fb925993448788d03483 diff --git a/src/init.c b/src/init.c index 4b871020..7c62ad95 100644 --- a/src/init.c +++ b/src/init.c @@ -18,6 +18,8 @@ #include "sound.h" #include "screens.h" #include "editor.h" +#include "game.h" +#include "tape.h" #include "tools.h" #include "files.h" #include "joystick.h" @@ -48,6 +50,7 @@ static void InitSoundServer(void); static void InitWindow(int, char **); static void InitGfx(void); static void LoadGfx(int, struct PictureFileInfo *); +static void InitGadgets(void); static void InitElementProperties(void); void OpenAll(int argc, char *argv[]) @@ -67,7 +70,6 @@ void OpenAll(int argc, char *argv[]) InitSoundServer(); InitJoysticks(); InitRND(NEW_RANDOMIZE); - InitLevelEditorGadgets(); signal(SIGINT, CloseAllAndExit); signal(SIGTERM, CloseAllAndExit); @@ -80,6 +82,7 @@ void OpenAll(int argc, char *argv[]) InitGfx(); InitElementProperties(); + InitGadgets(); DrawMainMenu(); @@ -348,8 +351,8 @@ void InitWindow(int argc, char *argv[]) XSizeHints size_hints; XWMHints wm_hints; XClassHint class_hints; - char *window_name = WINDOWTITLE_STRING; - char *icon_name = WINDOWTITLE_STRING; + char *window_name = WINDOW_TITLE_STRING; + char *icon_name = WINDOW_TITLE_STRING; long window_event_mask; Atom proto_atom = None, delete_atom = None; #endif @@ -436,9 +439,11 @@ void InitWindow(int argc, char *argv[]) XFree(iconName.value); /* Select event types wanted */ - window_event_mask = ExposureMask | StructureNotifyMask | FocusChangeMask | - ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | - KeyPressMask | KeyReleaseMask; + window_event_mask = + ExposureMask | StructureNotifyMask | FocusChangeMask | + ButtonPressMask | ButtonReleaseMask | PointerMotionMask | + PointerMotionHintMask | KeyPressMask | KeyReleaseMask; + XSelectInput(display, window, window_event_mask); #endif @@ -492,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; @@ -523,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 }, @@ -537,8 +566,21 @@ 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(WINDOWTITLE_STRING,20,FC_YELLOW); + DrawInitText(WINDOW_TITLE_STRING,20,FC_YELLOW); DrawInitText(COPYRIGHT_STRING,50,FC_RED); #ifdef MSDOS DrawInitText("MSDOS version done by Guido Schulz",210,FC_BLUE); @@ -588,6 +630,7 @@ void InitGfx() int src_x, src_y; Pixmap src_pixmap; +#if 0 if (graphic >= GFX_START_ROCKSSCREEN && graphic <= GFX_END_ROCKSSCREEN) { @@ -615,6 +658,14 @@ void InitGfx() } else break; +#else + + int pixmap_nr; + + getGraphicSource(graphic, &pixmap_nr, &src_x, &src_y); + src_pixmap = clipmask[pixmap_nr]; + +#endif tile_clipmask[tile] = XCreatePixmap(display, window, TILEX,TILEY, 1); @@ -789,6 +840,14 @@ void LoadGfx(int pos, struct PictureFileInfo *pic) } } +void InitGadgets() +{ + CreateLevelEditorGadgets(); + CreateGameButtons(); + CreateTapeButtons(); + CreateToolButtons(); +} + void InitElementProperties() { int i,j; @@ -853,11 +912,13 @@ void InitElementProperties() EL_AMOEBE_BD, EL_MORAST_VOLL, EL_MORAST_LEER, - EL_SIEB_VOLL, + EL_SIEB_INAKTIV, EL_SIEB_LEER, + EL_SIEB_VOLL, EL_SIEB_TOT, - EL_SIEB2_VOLL, + EL_SIEB2_INAKTIV, EL_SIEB2_LEER, + EL_SIEB2_VOLL, EL_SIEB2_TOT, EL_LIFE, EL_LIFE_ASYNC, @@ -883,11 +944,12 @@ void InitElementProperties() EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, EL_SP_TERMINAL, - EL_SP_EXIT + EL_SP_EXIT, + EL_INVISIBLE_STEEL }; static int ep_solid_num = sizeof(ep_solid)/sizeof(int); - static int ep_massiv[] = + static int ep_massive[] = { EL_BETON, EL_SALZSAEURE, @@ -915,8 +977,9 @@ void InitElementProperties() EL_SP_HARD_BASE4, EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, + EL_INVISIBLE_STEEL }; - static int ep_massiv_num = sizeof(ep_massiv)/sizeof(int); + static int ep_massive_num = sizeof(ep_massive)/sizeof(int); static int ep_slippery[] = { @@ -940,11 +1003,13 @@ void InitElementProperties() EL_BADEWANNE2, EL_SONDE, EL_SP_ZONK, + EL_SP_INFOTRON, EL_SP_CHIP_SINGLE, EL_SP_CHIP_LEFT, EL_SP_CHIP_RIGHT, EL_SP_CHIP_UPPER, EL_SP_CHIP_LOWER, + EL_SPEED_PILL }; static int ep_slippery_num = sizeof(ep_slippery)/sizeof(int); @@ -1001,7 +1066,8 @@ void InitElementProperties() EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, EL_SP_TERMINAL, - EL_SP_EXIT + EL_SP_EXIT, + EL_INVISIBLE_STEEL }; static int ep_mauer_num = sizeof(ep_mauer)/sizeof(int); @@ -1132,7 +1198,7 @@ void InitElementProperties() EL_SALZSAEURE, EL_SP_SNIKSNAK, EL_SP_ELECTRON, - EL_SP_BUG + EL_SP_BUG_ACTIVE }; static int ep_dont_go_to_num = sizeof(ep_dont_go_to)/sizeof(int); @@ -1168,7 +1234,7 @@ void InitElementProperties() EL_FELSBODEN, EL_FELSBROCKEN, EL_EDELSTEIN_BD, - EL_SIEB2_LEER, + EL_SIEB2_INAKTIV, EL_AUSGANG_ZU, EL_AUSGANG_AUF, EL_BETON, @@ -1195,7 +1261,8 @@ void InitElementProperties() EL_SOKOBAN_OBJEKT, EL_SOKOBAN_FELD_LEER, EL_SOKOBAN_FELD_VOLL, - EL_SPIELFIGUR + EL_SPIELFIGUR, + EL_INVISIBLE_STEEL }; static int ep_sb_element_num = sizeof(ep_sb_element)/sizeof(int); @@ -1256,7 +1323,9 @@ void InitElementProperties() EL_BADEWANNE3, EL_BADEWANNE4, EL_BADEWANNE5, + EL_SIEB_INAKTIV, EL_SIEB_TOT, + EL_SIEB2_INAKTIV, EL_SIEB2_TOT, EL_AMOEBA2DIAM, EL_BLOCKED, @@ -1275,7 +1344,6 @@ void InitElementProperties() EL_SP_PORT_XY, EL_SP_DISK_RED, EL_SP_DISK_YELLOW, - EL_SP_TERMINAL, EL_SP_CHIP_SINGLE, EL_SP_CHIP_LEFT, EL_SP_CHIP_RIGHT, @@ -1292,8 +1360,8 @@ void InitElementProperties() EL_SP_HARD_BASE4, EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, - EL_SP_TERMINAL, - EL_SP_EXIT + EL_SP_EXIT, + EL_INVISIBLE_STEEL }; static int ep_inactive_num = sizeof(ep_inactive)/sizeof(int); @@ -1366,6 +1434,59 @@ void InitElementProperties() }; static int ep_has_content_num = sizeof(ep_has_content)/sizeof(int); + static int ep_eatable[] = + { + EL_ERDREICH, + EL_SP_BASE, + EL_SP_BUG + }; + static int ep_eatable_num = sizeof(ep_eatable)/sizeof(int); + + static int ep_sp_element[] = + { + EL_SP_EMPTY, + EL_SP_ZONK, + EL_SP_BASE, + EL_SP_MURPHY, + EL_SP_INFOTRON, + EL_SP_CHIP_SINGLE, + EL_SP_HARD_GRAY, + EL_SP_EXIT, + EL_SP_DISK_ORANGE, + EL_SP_PORT1_RIGHT, + EL_SP_PORT1_DOWN, + EL_SP_PORT1_LEFT, + EL_SP_PORT1_UP, + EL_SP_PORT2_RIGHT, + EL_SP_PORT2_DOWN, + EL_SP_PORT2_LEFT, + EL_SP_PORT2_UP, + EL_SP_SNIKSNAK, + EL_SP_DISK_YELLOW, + EL_SP_TERMINAL, + EL_SP_DISK_RED, + EL_SP_PORT_Y, + EL_SP_PORT_X, + EL_SP_PORT_XY, + EL_SP_ELECTRON, + EL_SP_BUG, + EL_SP_CHIP_LEFT, + EL_SP_CHIP_RIGHT, + EL_SP_HARD_BASE1, + EL_SP_HARD_GREEN, + EL_SP_HARD_BLUE, + EL_SP_HARD_RED, + EL_SP_HARD_YELLOW, + EL_SP_HARD_BASE2, + EL_SP_HARD_BASE3, + EL_SP_HARD_BASE4, + EL_SP_HARD_BASE5, + EL_SP_HARD_BASE6, + EL_SP_CHIP_UPPER, + EL_SP_CHIP_LOWER + }; + static int ep_sp_element_num = sizeof(ep_sp_element)/sizeof(int); + static long ep_bit[] = { EP_BIT_AMOEBALIVE, @@ -1373,7 +1494,7 @@ void InitElementProperties() EP_BIT_SCHLUESSEL, EP_BIT_PFORTE, EP_BIT_SOLID, - EP_BIT_MASSIV, + EP_BIT_MASSIVE, EP_BIT_SLIPPERY, EP_BIT_ENEMY, EP_BIT_MAUER, @@ -1393,7 +1514,9 @@ void InitElementProperties() EP_BIT_MAMPF3, EP_BIT_PUSHABLE, EP_BIT_PLAYER, - EP_BIT_HAS_CONTENT + EP_BIT_HAS_CONTENT, + EP_BIT_EATABLE, + EP_BIT_SP_ELEMENT }; static int *ep_array[] = { @@ -1402,7 +1525,7 @@ void InitElementProperties() ep_schluessel, ep_pforte, ep_solid, - ep_massiv, + ep_massive, ep_slippery, ep_enemy, ep_mauer, @@ -1422,7 +1545,9 @@ void InitElementProperties() ep_mampf3, ep_pushable, ep_player, - ep_has_content + ep_has_content, + ep_eatable, + ep_sp_element }; static int *ep_num[] = { @@ -1431,7 +1556,7 @@ void InitElementProperties() &ep_schluessel_num, &ep_pforte_num, &ep_solid_num, - &ep_massiv_num, + &ep_massive_num, &ep_slippery_num, &ep_enemy_num, &ep_mauer_num, @@ -1451,7 +1576,9 @@ void InitElementProperties() &ep_mampf3_num, &ep_pushable_num, &ep_player_num, - &ep_has_content_num + &ep_has_content_num, + &ep_eatable_num, + &ep_sp_element_num }; static int num_properties = sizeof(ep_num)/sizeof(int *);