rnd-20140430-1-src
authorHolger Schemel <info@artsoft.org>
Wed, 30 Apr 2014 19:41:30 +0000 (21:41 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 09:01:29 +0000 (11:01 +0200)
src/Makefile
src/conftime.h
src/game.c
src/libgame/sdl.c
src/libgame/sdl.h
src/main.h
src/tools.c

index ebe3091f7b26ea5d538b82541250ad450f472d9c..8efe88c658ff570af4f28a3feb8888295845d5ce 100644 (file)
@@ -75,7 +75,8 @@ endif
 ifeq ($(PLATFORM),cross-win32)         # cross-compiling to Windows
 PROGNAME = ../$(PROGBASE).exe
 EXTRA_LDFLAGS = -lshfolder -lwsock32
 ifeq ($(PLATFORM),cross-win32)         # cross-compiling to Windows
 PROGNAME = ../$(PROGBASE).exe
 EXTRA_LDFLAGS = -lshfolder -lwsock32
-TARGET = sdl
+# TARGET = sdl
+TARGET = sdl2
 endif
 
 ifeq ($(PLATFORM),cross-msdos)         # cross-compiling to MS-DOS
 endif
 
 ifeq ($(PLATFORM),cross-msdos)         # cross-compiling to MS-DOS
index 5aca865a438a9cca8e9dea64f3fe73815c5be1ef..556b90ccee14988c58c3499fc132edef76ece43c 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2014-04-18 02:47"
+#define COMPILE_DATE_STRING "2014-04-30 21:41"
index a5a9396c9d3a6180fa7715accbc002d759800c2b..8b9d1132f23e7588ac0c6bb68ebabf0bc4ed58d2 100644 (file)
@@ -3520,6 +3520,9 @@ int get_num_special_action(int element, int action_first, int action_last)
 
 void InitGame()
 {
 
 void InitGame()
 {
+  int full_lev_fieldx = lev_fieldx + (BorderElement != EL_EMPTY ? 2 : 0);
+  int full_lev_fieldy = lev_fieldy + (BorderElement != EL_EMPTY ? 2 : 0);
+
   boolean emulate_bd = TRUE;   /* unless non-BOULDERDASH elements found */
   boolean emulate_sb = TRUE;   /* unless non-SOKOBAN     elements found */
   boolean emulate_sp = TRUE;   /* unless non-SUPAPLEX    elements found */
   boolean emulate_bd = TRUE;   /* unless non-BOULDERDASH elements found */
   boolean emulate_sb = TRUE;   /* unless non-SOKOBAN     elements found */
   boolean emulate_sp = TRUE;   /* unless non-SUPAPLEX    elements found */
@@ -4301,16 +4304,44 @@ void InitGame()
 
 #if NEW_TILESIZE
 
 
 #if NEW_TILESIZE
 
+  // printf("::: START-0: %d, %d\n", lev_fieldx, SCR_FIELDX);
+  // printf("::: START-1: %d, %d\n", SBX_Left, SBX_Right);
+
+#if 1
+  if (full_lev_fieldx <= SCR_FIELDX)
+    SBX_Left = SBX_Right = -1 * (SCR_FIELDX - lev_fieldx) / 2;
+
+  if (full_lev_fieldy <= SCR_FIELDY)
+    SBY_Upper = SBY_Lower = -1 * (SCR_FIELDY - lev_fieldy) / 2;
+#else
   if (lev_fieldx + (SBX_Left < 0 ? 2 : 0) <= SCR_FIELDX)
     SBX_Left = SBX_Right = -1 * (SCR_FIELDX - lev_fieldx) / 2;
 
   if (lev_fieldy + (SBY_Upper < 0 ? 2 : 0) <= SCR_FIELDY)
     SBY_Upper = SBY_Lower = -1 * (SCR_FIELDY - lev_fieldy) / 2;
   if (lev_fieldx + (SBX_Left < 0 ? 2 : 0) <= SCR_FIELDX)
     SBX_Left = SBX_Right = -1 * (SCR_FIELDX - lev_fieldx) / 2;
 
   if (lev_fieldy + (SBY_Upper < 0 ? 2 : 0) <= SCR_FIELDY)
     SBY_Upper = SBY_Lower = -1 * (SCR_FIELDY - lev_fieldy) / 2;
+#endif
 
 
+  /*
+  printf("::: START-2: %d, %d (%d)\n", SBX_Left, SBX_Right,
+        SBX_Right - SBX_Left + 1);
+  */
+
+#if 1
+  if (EVEN(SCR_FIELDX) && full_lev_fieldx > SCR_FIELDX)
+    SBX_Left--;
+  if (EVEN(SCR_FIELDY) && full_lev_fieldy > SCR_FIELDY)
+    SBY_Upper--;
+#else
   if (EVEN(SCR_FIELDX))
     SBX_Left--;
   if (EVEN(SCR_FIELDY))
     SBY_Upper--;
   if (EVEN(SCR_FIELDX))
     SBX_Left--;
   if (EVEN(SCR_FIELDY))
     SBY_Upper--;
+#endif
+
+  /*
+  printf("::: START-3: %d, %d\n", SBX_Left, SBX_Right);
+  printf("\n");
+  */
 
 #else
 
 
 #else
 
index bfcd7ead12e0cdc815dd3fad2bebe9f184cbe816..0b27fafbfec3ad71b4840a2b885d3c96282cc297 100644 (file)
@@ -816,13 +816,26 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen)
   {
     SDL_SysWMinfo wminfo;
     HWND hwnd;
   {
     SDL_SysWMinfo wminfo;
     HWND hwnd;
+    boolean wminfo_success = FALSE;
 
     SDL_VERSION(&wminfo.version);
 
     SDL_VERSION(&wminfo.version);
-    SDL_GetWMInfo(&wminfo);
+#if defined(TARGET_SDL2)
+    if (sdl_window)
+      wminfo_success = SDL_GetWindowWMInfo(sdl_window, &wminfo);
+#else
+    wminfo_success = (SDL_GetWMInfo(&wminfo) == 1);
+#endif
 
 
-    hwnd = wminfo.window;
+    if (wminfo_success)
+    {
+#if defined(TARGET_SDL2)
+      hwnd = wminfo.info.win.window;
+#else
+      hwnd = wminfo.window;
+#endif
 
 
-    DragAcceptFiles(hwnd, TRUE);
+      DragAcceptFiles(hwnd, TRUE);
+    }
   }
 #endif
 #endif
   }
 #endif
 #endif
@@ -830,12 +843,16 @@ boolean SDLSetVideoMode(DrawBuffer **backbuffer, boolean fullscreen)
   return success;
 }
 
   return success;
 }
 
-#if defined(TARGET_SDL2)
 void SDLSetWindowTitle()
 {
 void SDLSetWindowTitle()
 {
+#if defined(TARGET_SDL2)
   SDL_SetWindowTitle(sdl_window, program.window_title);
   SDL_SetWindowTitle(sdl_window, program.window_title);
+#else
+  SDL_WM_SetCaption(program.window_title, program.window_title);
+#endif
 }
 
 }
 
+#if defined(TARGET_SDL2)
 void SDLSetWindowScaling(int window_scaling_percent)
 {
   if (sdl_window == NULL)
 void SDLSetWindowScaling(int window_scaling_percent)
 {
   if (sdl_window == NULL)
@@ -2508,9 +2525,17 @@ void SDLHandleWindowManagerEvent(Event *event)
   SDL_SysWMEvent *syswmevent = (SDL_SysWMEvent *)event;
   SDL_SysWMmsg *syswmmsg = (SDL_SysWMmsg *)(syswmevent->msg);
 
   SDL_SysWMEvent *syswmevent = (SDL_SysWMEvent *)event;
   SDL_SysWMmsg *syswmmsg = (SDL_SysWMmsg *)(syswmevent->msg);
 
+#if defined(TARGET_SDL2)
+  if (syswmmsg->msg.win.msg == WM_DROPFILES)
+#else
   if (syswmmsg->msg == WM_DROPFILES)
   if (syswmmsg->msg == WM_DROPFILES)
+#endif
   {
   {
+#if defined(TARGET_SDL2)
+    HDROP hdrop = (HDROP)syswmmsg->msg.win.wParam;
+#else
     HDROP hdrop = (HDROP)syswmmsg->wParam;
     HDROP hdrop = (HDROP)syswmmsg->wParam;
+#endif
     int i, num_files;
 
     printf("::: SDL_SYSWMEVENT:\n");
     int i, num_files;
 
     printf("::: SDL_SYSWMEVENT:\n");
@@ -2527,7 +2552,11 @@ void SDLHandleWindowManagerEvent(Event *event)
       printf("::: - '%s'\n", buffer);
     }
 
       printf("::: - '%s'\n", buffer);
     }
 
+#if defined(TARGET_SDL2)
+    DragFinish((HDROP)syswmmsg->msg.win.wParam);
+#else
     DragFinish((HDROP)syswmmsg->wParam);
     DragFinish((HDROP)syswmmsg->wParam);
+#endif
   }
 #endif
 }
   }
 #endif
 }
index a69e235085587cc4b149e6086e0ca27bc5cdc2a3..00b2698ad5cb209044da930b55a7ca8c3d3e54a0 100644 (file)
@@ -437,13 +437,14 @@ struct MouseCursorInfo
 
 #if defined(TARGET_SDL2)
 SDL_Surface *SDL_DisplayFormat(SDL_Surface *);
 
 #if defined(TARGET_SDL2)
 SDL_Surface *SDL_DisplayFormat(SDL_Surface *);
-void SDLSetWindowTitle(void);
 void SDLSetWindowScaling(int);
 void SDLSetWindowScalingQuality(char *);
 void SDLSetWindowFullscreen(boolean);
 void SDLRedrawWindow();
 #endif
 
 void SDLSetWindowScaling(int);
 void SDLSetWindowScalingQuality(char *);
 void SDLSetWindowFullscreen(boolean);
 void SDLRedrawWindow();
 #endif
 
+void SDLSetWindowTitle(void);
+
 void SDLLimitScreenUpdates(boolean);
 void SDLInitVideoDisplay(void);
 void SDLInitVideoBuffer(DrawBuffer **, DrawWindow **, boolean);
 void SDLLimitScreenUpdates(boolean);
 void SDLInitVideoDisplay(void);
 void SDLInitVideoBuffer(DrawBuffer **, DrawWindow **, boolean);
index 29f84f2f5ee393b46b710c5caff3a39c39a69432..0e2259a58bd9cbf579dbf59c86df5f943c2e18a1 100644 (file)
 
 
 /* program information and versioning definitions */
 
 
 /* program information and versioning definitions */
-#define PROGRAM_VERSION_MAJOR          3
-#define PROGRAM_VERSION_MINOR          3
-#define PROGRAM_VERSION_PATCH          1
-#define PROGRAM_VERSION_BUILD          3
+#define PROGRAM_VERSION_MAJOR          4
+#define PROGRAM_VERSION_MINOR          0
+#define PROGRAM_VERSION_PATCH          0
+#define PROGRAM_VERSION_BUILD          0
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING          "Holger Schemel"
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING          "Holger Schemel"
index 7986e8bc8652261f3bfc1a54221a276bea3176b0..8954a19dc9ac9d33371ea95e06485e51c97a699d 100644 (file)
@@ -437,6 +437,8 @@ void BlitScreenToBitmap(Bitmap *target_bitmap)
 {
   DrawBuffer *buffer = (drawto_field == window ? backbuffer : drawto_field);
   int fx = FX, fy = FY;
 {
   DrawBuffer *buffer = (drawto_field == window ? backbuffer : drawto_field);
   int fx = FX, fy = FY;
+  int full_lev_fieldx = lev_fieldx + (BorderElement != EL_EMPTY ? 2 : 0);
+  int full_lev_fieldy = lev_fieldy + (BorderElement != EL_EMPTY ? 2 : 0);
 
 #if NEW_TILESIZE
   int dx = (ScreenMovDir & (MV_LEFT | MV_RIGHT) ? ScreenGfxPos : 0);
 
 #if NEW_TILESIZE
   int dx = (ScreenMovDir & (MV_LEFT | MV_RIGHT) ? ScreenGfxPos : 0);
@@ -487,6 +489,28 @@ void BlitScreenToBitmap(Bitmap *target_bitmap)
         fx, fy);
 #endif
 
         fx, fy);
 #endif
 
+#if 1
+  if (full_lev_fieldx <= SCR_FIELDX)
+  {
+    // printf(":1: PLAYFIELD FITS TO SCREEN [%d, %d, %d]\n", fx, ffx, dx_var);
+
+    if (EVEN(SCR_FIELDX))
+      fx = 2 * TILEX_VAR - (ODD(lev_fieldx)  ? TILEX_VAR / 2 : 0);
+    else
+      fx = 2 * TILEX_VAR - (EVEN(lev_fieldx) ? TILEX_VAR / 2 : 0);
+
+    // printf(":2: PLAYFIELD FITS TO SCREEN [%d, %d, %d]\n", fx, ffx, dx_var);
+  }
+
+  if (full_lev_fieldy <= SCR_FIELDY)
+  {
+    if (EVEN(SCR_FIELDY))
+      fy = 2 * TILEY_VAR - (ODD(lev_fieldy)  ? TILEY_VAR / 2 : 0);
+    else
+      fy = 2 * TILEY_VAR - (EVEN(lev_fieldy) ? TILEY_VAR / 2 : 0);
+  }
+#endif
+
   if (border.draw_masked[GAME_MODE_PLAYING])
   {
     if (buffer != backbuffer)
   if (border.draw_masked[GAME_MODE_PLAYING])
   {
     if (buffer != backbuffer)