/***********************************************************
* Artsoft Retro-Game Library *
*----------------------------------------------------------*
-* (c) 1994-2001 Artsoft Entertainment *
+* (c) 1994-2002 Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
struct VideoSystemInfo video;
struct AudioSystemInfo audio;
struct GfxInfo gfx;
+struct FontInfo font;
struct ArtworkInfo artwork;
struct JoystickInfo joystick;
struct SetupInfo setup;
#if !defined(PLATFORM_UNIX)
program.userdata_directory = "userdata";
+#endif
+
+#if defined(PLATFORM_MSDOS)
initErrorFile();
#endif
void ClosePlatformDependantStuff(void)
{
-#if !defined(PLATFORM_UNIX)
+#if defined(PLATFORM_MSDOS)
dumpErrorFile();
#endif
}
gfx.draw_deactivation_mask = draw_deactivation_mask;
}
+void SetBackgroundBitmap(Bitmap *background_bitmap)
+{
+ gfx.background_bitmap = background_bitmap;
+}
+
/* ========================================================================= */
/* video functions */
{
if (gfx.draw_deactivation_mask != REDRAW_NONE)
{
- if ((gfx.draw_deactivation_mask & REDRAW_FIELD) &&
- x < gfx.sx + gfx.sxsize)
+ if (gfx.draw_deactivation_mask & REDRAW_ALL)
+ return TRUE;
+ else if ((gfx.draw_deactivation_mask & REDRAW_FIELD) &&
+ x < gfx.sx + gfx.sxsize)
return TRUE;
else if ((gfx.draw_deactivation_mask & REDRAW_DOORS) &&
x > gfx.dx)
return FALSE;
}
+inline boolean DrawingOnBackground(int x, int y)
+{
+ return (gfx.background_bitmap != NULL && x < gfx.sx + gfx.sxsize);
+}
+
inline void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap,
int src_x, int src_y,
int width, int height,
#endif
}
+inline void ClearRectangleOnBackground(Bitmap *bitmap, int x, int y,
+ int width, int height)
+{
+ if (!DrawingOnBackground(x, y))
+ ClearRectangle(bitmap, x, y, width, height);
+ else
+ BlitBitmap(gfx.background_bitmap, bitmap,
+ x - gfx.real_sx, y - gfx.real_sy, width, height, x, y);
+}
+
#if 0
#ifndef TARGET_SDL
static GC last_clip_gc = 0; /* needed for XCopyArea() through clip mask */
#endif
}
+inline void BlitBitmapOnBackground(Bitmap *src_bitmap, Bitmap *dst_bitmap,
+ int src_x, int src_y,
+ int width, int height,
+ int dst_x, int dst_y)
+{
+ if (!DrawingOnBackground(src_x, src_y))
+ BlitBitmap(src_bitmap, dst_bitmap, src_x, src_y, width, height,
+ dst_x, dst_y);
+ else
+ {
+ /* draw background */
+ BlitBitmap(gfx.background_bitmap, dst_bitmap,
+ dst_x - gfx.real_sx, dst_y - gfx.real_sy, width, height,
+ dst_x, dst_y);
+
+ /* draw foreground */
+ SetClipOrigin(src_bitmap, src_bitmap->stored_clip_gc,
+ dst_x - src_x, dst_y - src_y);
+ BlitBitmapMasked(src_bitmap, dst_bitmap, src_x, src_y, width, height,
+ dst_x, dst_y);
+ }
+}
+
inline void DrawSimpleWhiteLine(Bitmap *bitmap, int from_x, int from_y,
int to_x, int to_y)
{
new_bitmap = X11LoadImage(filename);
#endif
- new_bitmap->source_filename = getStringCopy(filename);
+ if (new_bitmap)
+ new_bitmap->source_filename = getStringCopy(filename);
return new_bitmap;
}
if (bitmap->width != new_bitmap->width ||
bitmap->height != new_bitmap->height)
{
- Error(ERR_WARN, "ReloadCustomImage: new image has wrong dimensions");
+ Error(ERR_WARN, "ReloadCustomImage: new image '%s' has wrong dimensions",
+ filename);
FreeBitmap(new_bitmap);
return;
}
audio.sound_available = FALSE;
audio.music_available = FALSE;
audio.loops_available = FALSE;
- audio.mods_available = FALSE;
- audio.sound_enabled = FALSE;
+ audio.sound_enabled = FALSE;
audio.sound_deactivated = FALSE;
- audio.soundserver_pipe[0] = audio.soundserver_pipe[1] = 0;
- audio.soundserver_pid = -1;
+ audio.mixer_pipe[0] = audio.mixer_pipe[1] = 0;
+ audio.mixer_pid = -1;
audio.device_name = NULL;
- audio.device_fd = 0;
+ audio.device_fd = -1;
- audio.channels = 0;
+ audio.num_channels = 0;
audio.music_channel = 0;
- audio.music_nr = 0;
+ audio.first_sound_channel = 0;
#if defined(TARGET_SDL)
SDLOpenAudio();
(int)SDL_GetModState());
#endif
- if (with_modifiers && event->keysym.unicode != 0)
+ if (with_modifiers &&
+ event->keysym.unicode > 0x0000 &&
+ event->keysym.unicode < 0x2000)
return event->keysym.unicode;
else
return event->keysym.sym;