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
-#define COMPILE_DATE_STRING "2014-04-18 02:47"
+#define COMPILE_DATE_STRING "2014-04-30 21:41"
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 */
#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;
+#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--;
+#endif
+
+ /*
+ printf("::: START-3: %d, %d\n", SBX_Left, SBX_Right);
+ printf("\n");
+ */
#else
{
SDL_SysWMinfo wminfo;
HWND hwnd;
+ boolean wminfo_success = FALSE;
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
return success;
}
-#if defined(TARGET_SDL2)
void SDLSetWindowTitle()
{
+#if defined(TARGET_SDL2)
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)
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)
+#endif
{
+#if defined(TARGET_SDL2)
+ HDROP hdrop = (HDROP)syswmmsg->msg.win.wParam;
+#else
HDROP hdrop = (HDROP)syswmmsg->wParam;
+#endif
int i, num_files;
printf("::: SDL_SYSWMEVENT:\n");
printf("::: - '%s'\n", buffer);
}
+#if defined(TARGET_SDL2)
+ DragFinish((HDROP)syswmmsg->msg.win.wParam);
+#else
DragFinish((HDROP)syswmmsg->wParam);
+#endif
}
#endif
}
#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 SDLSetWindowTitle(void);
+
void SDLLimitScreenUpdates(boolean);
void SDLInitVideoDisplay(void);
void SDLInitVideoBuffer(DrawBuffer **, DrawWindow **, boolean);
/* 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"
{
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);
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)