X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=634542b53c5a41063f191a631b713719f432fe56;hb=f941ccddee3065d7531298e37ad4dcfcd892c1f8;hp=6b4bece70fcac7f92f9b45a0dd3d208c49c95580;hpb=1d5a33fc89d071c8e8a242ff3b51258f1b6b0e1e;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 6b4bece7..634542b5 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 @@ -538,7 +543,7 @@ void InitGfx() #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); @@ -789,6 +794,13 @@ void LoadGfx(int pos, struct PictureFileInfo *pic) } } +void InitGadgets() +{ + CreateLevelEditorGadgets(); + CreateGameButtons(); + CreateTapeButtons(); +} + void InitElementProperties() { int i,j; @@ -885,11 +897,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, @@ -917,8 +930,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[] = { @@ -942,11 +956,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); @@ -1003,7 +1019,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); @@ -1134,7 +1151,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); @@ -1197,7 +1214,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); @@ -1279,7 +1297,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, @@ -1296,8 +1313,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); @@ -1378,6 +1395,51 @@ void InitElementProperties() }; 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, @@ -1385,7 +1447,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, @@ -1406,7 +1468,8 @@ void InitElementProperties() EP_BIT_PUSHABLE, EP_BIT_PLAYER, EP_BIT_HAS_CONTENT, - EP_BIT_EATABLE + EP_BIT_EATABLE, + EP_BIT_SP_ELEMENT }; static int *ep_array[] = { @@ -1415,7 +1478,7 @@ void InitElementProperties() ep_schluessel, ep_pforte, ep_solid, - ep_massiv, + ep_massive, ep_slippery, ep_enemy, ep_mauer, @@ -1436,7 +1499,8 @@ void InitElementProperties() ep_pushable, ep_player, ep_has_content, - ep_eatable + ep_eatable, + ep_sp_element }; static int *ep_num[] = { @@ -1445,7 +1509,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, @@ -1466,7 +1530,8 @@ void InitElementProperties() &ep_pushable_num, &ep_player_num, &ep_has_content_num, - &ep_eatable_num + &ep_eatable_num, + &ep_sp_element_num }; static int num_properties = sizeof(ep_num)/sizeof(int *);