rnd-19980918
[rocksndiamonds.git] / src / main.h
index 90dcd6d2672a2feb1f827e4bd0c4efb06e390d23..d34fbb96085bbae64644fcad02f29afde17b0bd2 100644 (file)
 #ifndef MAIN_H
 #define MAIN_H
 
+#ifndef MSDOS
 #define XK_MISCELLANY
 #define XK_LATIN1
 
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
+#include <X11/Xatom.h>
 #include <X11/Xos.h>
 #include <X11/Intrinsic.h>
 #include <X11/keysymdef.h>
@@ -27,6 +29,9 @@
 #ifdef   XPM_INCLUDE_FILE
 #include XPM_INCLUDE_FILE
 #endif
+#else
+#include "msdos.h"
+#endif  // von #ifndef MSDOS
 
 #include <sys/types.h>
 #include <sys/stat.h>
 
 typedef int BOOL;
 
-#define TRUE           1
-#define FALSE          0
+#ifndef FALSE
+#define FALSE 0
+#define TRUE (!FALSE)
+#endif
 
-#define WIN_XPOS       0
-#define WIN_YPOS       0
 #define WIN_XSIZE      672
 #define WIN_YSIZE      560
+#ifndef MSDOS
+#define WIN_XPOS       0
+#define WIN_YPOS       0
+#else
+#define WIN_XPOS       (XRES-WIN_XSIZE)/2
+#define WIN_YPOS       (YRES-WIN_YSIZE)/2
+#endif
 #define SCR_FIELDX     17
 #define SCR_FIELDY     17
 #define MAX_BUF_XSIZE  (SCR_FIELDX + 2)
@@ -56,10 +68,18 @@ typedef int BOOL;
 #define MAX_LEV_FIELDX 128
 #define MAX_LEV_FIELDY 128
 
+#ifndef MIN
 #define MIN(a,b)       ((a)<(b) ? (a) : (b))
+#endif
+#ifndef MAX
 #define MAX(a,b)       ((a)>(b) ? (a) : (b))
+#endif
+#ifndef ABS
 #define ABS(a)         ((a)<0 ? -(a) : (a))
+#endif
+#ifndef SIGN
 #define SIGN(a)                ((a)<0 ? -1 : ((a)>0 ? 1 : 0))
+#endif
 #define SCROLLX(a)     ((a)-scroll_x)
 #define SCROLLY(a)     ((a)-scroll_y)
 #define UNSCROLLX(a)   ((a)+scroll_x)
@@ -71,7 +91,7 @@ typedef int BOOL;
 #define IS_PLAYER(x,y)         (JX==(x) && JY==(y))
 
 /*
-#define IS_PLAYER(x,y)         ((JX==(x) && JY==(y)) || (JX2==(x) && JY2==(y)))
+#define IS_PLAYER(x,y)         ((JX==(x) && JY==(y)) || (lastJX==(x) && lastJY==(y)))
 */
 
 #define IS_FREE(x,y)           (Feld[x][y]==EL_LEERRAUM && !IS_PLAYER(x,y))
@@ -243,12 +263,12 @@ struct JoystickInfo
 };
 
 extern Display        *display;
+extern Visual         *visual;
 extern int             screen;
 extern Window                  window;
-extern GC              gc, clip_gc[];
-extern XImage         *image[];
-extern Pixmap          clipmask[];
+extern GC              gc, clip_gc[], tile_clip_gc;
 extern Pixmap          pix[];
+extern Pixmap          clipmask[], tile_clipmask[];
 
 #ifdef XPM_INCLUDE_FILE
 extern XpmAttributes   xpm_att[];
@@ -264,7 +284,6 @@ extern int          joystick_device;
 extern char           *joystick_device_name[2];
 extern char           *level_directory;
 extern int                     width, height;
-extern unsigned long   pen_fg, pen_bg;
 
 extern int             game_status;
 extern int             game_emulation;
@@ -283,6 +302,7 @@ extern int          fading_on;
 extern int             autorecord_on;
 extern int             joystick_nr;
 extern int             quick_doors;
+extern int             cpu_friendly;
 
 extern BOOL            redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
 extern int             redraw_x1, redraw_y1;
@@ -306,10 +326,12 @@ extern long               Elementeigenschaften[MAX_ELEMENTS];
 extern int             level_nr, leveldir_nr, num_leveldirs;
 extern int             lev_fieldx,lev_fieldy, scroll_x,scroll_y;
 
-extern int             FX,FY, ScreenMovPos;
+extern int             FX,FY, ScreenMovPos, ScrollStepSize;
+extern int             GameSpeed, MoveSpeed;
 extern int             BX1,BY1, BX2,BY2;
-extern int             JX,JY, JX2,JY2, ZX,ZY, ExitX,ExitY;
-extern int             PlayerMovDir, PlayerMovPos, PlayerFrame, PlayerPushing;
+extern int             JX,JY, lastJX,lastJY, ZX,ZY, ExitX,ExitY;
+extern int             PlayerMovDir, PlayerMovPos, PlayerPushing;
+extern int             PlayerFrame, PlayerGfxPos;
 extern int             PlayerGone,LevelSolved,GameOver;
 extern int             FrameCounter,TimeFrames,TimeLeft,Score;
 extern int             Gems,SokobanFields,Lights,Friends;
@@ -565,6 +587,7 @@ extern char         *progname;
 #define EL_AMOEBING            305
 #define EL_MAUERND             306
 #define EL_BURNING             307
+#define EL_PLAYER_IS_LEAVING   308
 
 /* game graphics:
 **       0 - 255: graphics from "RocksScreen"
@@ -579,6 +602,8 @@ extern char         *progname;
 #define GFX_START_ROCKSHEROES  512
 #define GFX_END_ROCKSHEROES    767
 
+#define NUM_TILES              768
+
 /* graphics from "RocksScreen" */
 /* Zeile 0 (0) */
 #define GFX_LEERRAUM           (-1)
@@ -727,6 +752,10 @@ extern char                *progname;
 #define GFX_FIREFLY_L          206
 #define GFX_FIREFLY_U          207
 
+/* CHANGE THIS!!!! (NO REGULAR POSITIONS...) */
+#define GFX_MASK_SPARKLING     210
+/* CHANGE THIS!!!! (NO REGULAR POSITIONS...) */
+
 #define GFX_SCHLUESSEL         GFX_SCHLUESSEL1
 #define GFX_SPIELFIGUR         GFX_SPIELER1
 
@@ -933,10 +962,17 @@ extern char               *progname;
 #define JOYDAT_PATH            GAME_DIR
 #endif
 
+#ifndef MSDOS
 #define SCORE_FILENAME         "ROCKS.score"
 #define NAMES_FILENAME         "ROCKS.names"
 #define LEVDIR_FILENAME                "ROCKS.levelinfo"
 #define JOYDAT_FILENAME                "ROCKS.joystick"
+#else
+#define SCORE_FILENAME         "ROCKS.sco"
+#define NAMES_FILENAME         "ROCKS.nam"
+#define LEVDIR_FILENAME                "ROCKS.lev"
+#define JOYDAT_FILENAME                "ROCKS.joy"
+#endif
 
 #define JOYDAT_FILE            JOYDAT_PATH "/" JOYDAT_FILENAME
 
@@ -963,7 +999,7 @@ extern char         *progname;
 #define LEVELREC_COOKIE_LEN    (strlen(LEVELREC_COOKIE)+1)
 #define JOYSTICK_COOKIE_LEN    (strlen(JOYSTICK_COOKIE)+1)
 
-#define VERSION_STRING         "1.1"
+#define VERSION_STRING         "1.2"
 #define GAMETITLE_STRING       "Rocks'n'Diamonds"
 #define WINDOWTITLE_STRING     GAMETITLE_STRING " " VERSION_STRING
 #define COPYRIGHT_STRING       "Copyright ^1995-98 by Holger Schemel"
@@ -980,8 +1016,13 @@ extern char               *progname;
 #define MB_MENU_MARK           TRUE
 #define MB_MENU_INITIALIZE     (-1)
 #define MB_LEFT                        1
+#ifdef MSDOS
+#define MB_MIDDLE              4
+#define MB_RIGHT               2
+#else
 #define MB_MIDDLE              2
 #define MB_RIGHT               3
+#endif
 
 /* values for key_status */
 #define KEY_NOT_PRESSED                FALSE
@@ -1050,5 +1091,6 @@ extern char               *progname;
 /* für DrawGraphicAnimation (tools.c) und AnimateToon (cartoons.c) */
 #define ANIM_NORMAL    0
 #define ANIM_OSCILLATE 1
+#define ANIM_REVERSE   2
 
 #endif