rnd-20100615-2-src
[rocksndiamonds.git] / src / main.h
index 8632855a043f5b6a4a2a8e6094a2acaa5014d9e3..b37e21c50ebf6c13670763a9f23dd9dff66d0b26 100644 (file)
 
 #define DEFAULT_FULLSCREEN_MODE                "800x600"
 
+#if 0
 #define SCR_FIELDX                     17
 #define SCR_FIELDY                     17
+#endif
 #define MAX_BUF_XSIZE                  (SCR_FIELDX + 2)
 #define MAX_BUF_YSIZE                  (SCR_FIELDY + 2)
 #define MIN_LEV_FIELDX                 3
 #define MAX_INITIAL_INVENTORY_SIZE     8
 
 /* often used screen positions */
+#if 0
 #define SX                     8
 #define SY                     8
 #define REAL_SX                        (SX - 2)
 #define VY                     400
 #define EX                     DX
 #define EY                     (VY - 44)
+#endif
 #define TILESIZE               32
 #define TILEX                  TILESIZE
 #define TILEY                  TILESIZE
 #define GFX_SPECIAL_ARG_SETUP          9
 #define GFX_SPECIAL_ARG_PLAYING                10
 #define GFX_SPECIAL_ARG_DOOR           11
-#define GFX_SPECIAL_ARG_PANEL          12
-#define GFX_SPECIAL_ARG_PREVIEW                13
-#define GFX_SPECIAL_ARG_CRUMBLED       14
+#define GFX_SPECIAL_ARG_TAPE           12
+#define GFX_SPECIAL_ARG_PANEL          13
+#define GFX_SPECIAL_ARG_PREVIEW                14
+#define GFX_SPECIAL_ARG_CRUMBLED       15
 
-#define NUM_SPECIAL_GFX_ARGS           15
+#define NUM_SPECIAL_GFX_ARGS           16
 
 /* these additional definitions are currently only used for draw offsets */
 #define GFX_SPECIAL_ARG_INFO_MAIN      0
 #define GFX_ARG_SORT_PRIORITY          45
 #define GFX_ARG_CLASS                  46
 #define GFX_ARG_STYLE                  47
+#define GFX_ARG_ACTIVE_XOFFSET         48
+#define GFX_ARG_ACTIVE_YOFFSET         49
+#define GFX_ARG_PRESSED_XOFFSET                50
+#define GFX_ARG_PRESSED_YOFFSET                51
 
-#define NUM_GFX_ARGS                   48
+#define NUM_GFX_ARGS                   52
 
 
 /* values for sound configuration suffixes */
 #define GAME_MODE_SETUP                        9
 #define GAME_MODE_PLAYING              10
 #define GAME_MODE_PSEUDO_DOOR          11
-#define GAME_MODE_PSEUDO_PANEL         12
-#define GAME_MODE_PSEUDO_PREVIEW       13
-#define GAME_MODE_PSEUDO_CRUMBLED      14
+#define GAME_MODE_PSEUDO_TAPE          12
+#define GAME_MODE_PSEUDO_PANEL         13
+#define GAME_MODE_PSEUDO_PREVIEW       14
+#define GAME_MODE_PSEUDO_CRUMBLED      15
 
 /* there are no special config file suffixes for these modes */
-#define GAME_MODE_PSEUDO_TYPENAME      15
-#define GAME_MODE_QUIT                 16
+#define GAME_MODE_PSEUDO_TYPENAME      16
+#define GAME_MODE_QUIT                 17
 
 /* special definitions currently only used for custom artwork configuration */
 #define MUSIC_PREFIX_BACKGROUND                0
 
 /* program information and versioning definitions */
 #define PROGRAM_VERSION_MAJOR          3
-#define PROGRAM_VERSION_MINOR          2
-#define PROGRAM_VERSION_PATCH          6
+#define PROGRAM_VERSION_MINOR          3
+#define PROGRAM_VERSION_PATCH          0
 #define PROGRAM_VERSION_BUILD          2
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING          "Holger Schemel"
-#define PROGRAM_COPYRIGHT_STRING       "Copyright ©1995-2009 by Holger Schemel"
+#define PROGRAM_COPYRIGHT_STRING       "Copyright ©1995-2010 by Holger Schemel"
 #define PROGRAM_EMAIL_STRING           "info@artsoft.org"
 #define PROGRAM_WEBSITE_STRING         "http://www.artsoft.org/"
 #define PROGRAM_GAME_BY_STRING         "A Game by Artsoft Entertainment"
@@ -2253,6 +2263,14 @@ struct PreviewInfo
   int anim_mode;
 };
 
+struct ViewportInfo
+{
+  struct RectWithBorder window;
+  struct RectWithBorder playfield[NUM_SPECIAL_GFX_ARGS];
+  struct RectWithBorder door_1[NUM_SPECIAL_GFX_ARGS];
+  struct RectWithBorder door_2[NUM_SPECIAL_GFX_ARGS];
+};
+
 struct HiScore
 {
   char Name[MAX_PLAYER_NAME_LEN + 1];
@@ -2448,8 +2466,6 @@ struct GlobalInfo
   int fading_status;
   int fading_type;
 #endif
-
-  struct Rect screen;
 };
 
 struct ElementChangeInfo
@@ -2706,6 +2722,11 @@ struct GraphicInfo
   int class;
   int style;
 
+  int active_xoffset;
+  int active_yoffset;
+  int pressed_xoffset;
+  int pressed_yoffset;
+
   boolean use_image_size;      /* use image size as default width and height */
 
 #if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
@@ -2782,6 +2803,7 @@ struct HelpAnimInfo
 };
 
 
+extern Bitmap                 *bitmap_db_store;
 extern Bitmap                 *bitmap_db_cross;
 extern Bitmap                 *bitmap_db_field;
 extern Bitmap                 *bitmap_db_panel;
@@ -2802,7 +2824,11 @@ extern SDL_Thread               *server_thread;
 
 extern int                     key_joystick_mapping;
 
+#if 1
+extern boolean                 redraw[MAX_LEV_FIELDX + 2][MAX_LEV_FIELDY + 2];
+#else
 extern boolean                 redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
+#endif
 extern int                     redraw_x1, redraw_y1;
 
 extern short                   Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
@@ -2848,6 +2874,13 @@ extern int                       lev_fieldx, lev_fieldy;
 extern int                     scroll_x, scroll_y;
 
 extern int                     WIN_XSIZE, WIN_YSIZE;
+extern int                     SCR_FIELDX, SCR_FIELDY;
+extern int                     SX, SY;
+extern int                     REAL_SX, REAL_SY;
+extern int                     DX, DY;
+extern int                     VX, VY;
+extern int                     EX, EY;
+extern int                     dDX, dDY;
 
 extern int                     FX, FY;
 extern int                     ScrollStepSize;
@@ -2875,6 +2908,7 @@ extern struct HiScore             highscore[];
 extern struct TapeInfo         tape;
 extern struct GlobalInfo       global;
 extern struct BorderInfo       border;
+extern struct ViewportInfo     viewport;
 extern struct TitleFadingInfo  fading;
 extern struct TitleFadingInfo  fading_none;
 extern struct TitleFadingInfo  title_initial_default;