#include <signal.h>
+#include "libgame/libgame.h"
+
#include "init.h"
#include "events.h"
-#include "misc.h"
-#include "sound.h"
#include "screens.h"
#include "editor.h"
#include "game.h"
#include "tools.h"
#include "files.h"
#include "joystick.h"
-#include "image.h"
-#include "pcx.h"
#include "network.h"
#include "netserv.h"
static void InitNetworkServer(void);
static void InitSound(void);
static void InitSoundServer(void);
+static void InitDisplay(void);
static void InitGfx(void);
static void InitGfxBackground(void);
static void LoadGfx(int, struct PictureFileInfo *);
signal(SIGINT, CloseAllAndExit);
signal(SIGTERM, CloseAllAndExit);
- InitBufferedDisplay(&backbuffer, &window);
+ InitDisplay();
InitEventFilter(FilterMouseMotionEvents);
InitGfx();
{
int i;
- /* REMOVE THIS! (gone to system.c:InitAudio) */
- if (!sysinfo.audio_available)
- return;
-
-#if defined(TARGET_SDL)
- if (InitAudio())
- {
- sysinfo.audio_available = TRUE;
- sysinfo.audio_loops_available = TRUE;
- }
- else
- {
- sysinfo.audio_available = FALSE;
- }
-#else /* !TARGET_SDL */
-
-#if defined(PLATFORM_UNIX)
- if (!(sysinfo.audio_available = CheckAudio(sound_device_name)))
- return;
-
-#ifdef VOXWARE
- sysinfo.audio_loops_available = TRUE;
-#endif
-
-#else /* !PLATFORM_UNIX */
- sysinfo.audio_loops_available = TRUE;
-
-#endif /* !PLATFORM_UNIX */
-#endif /* !TARGET_SDL */
+ OpenAudio(&audio);
for(i=0; i<NUM_SOUNDS; i++)
{
if (!LoadSound(&Sound[i]))
{
- sysinfo.audio_available = FALSE;
- sysinfo.audio_loops_available = FALSE;
+ audio.sound_available = FALSE;
+ audio.loops_available = FALSE;
return;
}
}
void InitSoundServer()
{
- if (!sysinfo.audio_available)
+ if (!audio.sound_available)
return;
#if !defined(TARGET_SDL)
#if defined(PLATFORM_UNIX)
- if (pipe(sysinfo.audio_process_pipe) < 0)
+ if (pipe(audio.soundserver_pipe) < 0)
{
Error(ERR_WARN, "cannot create pipe - no sounds");
- sysinfo.audio_available = FALSE;
+ audio.sound_available = FALSE;
return;
}
- if ((sysinfo.audio_process_id = fork()) < 0)
+ if ((audio.soundserver_pid = fork()) < 0)
{
Error(ERR_WARN, "cannot create sound server process - no sounds");
- sysinfo.audio_available = FALSE;
+ audio.sound_available = FALSE;
return;
}
- if (!sysinfo.audio_process_id) /* we are child */
+ if (audio.soundserver_pid == 0) /* we are child */
{
SoundServer();
exit(0);
}
else /* we are parent */
- close(sysinfo.audio_process_pipe[0]); /* no reading from pipe needed */
+ close(audio.soundserver_pipe[0]); /* no reading from pipe needed */
#else /* !PLATFORM_UNIX */
#endif /* !TARGET_SDL */
}
+void InitDisplay()
+{
+ char *gfx_dir = getPath2(options.ro_base_directory, GRAPHICS_DIRECTORY);
+ char *x11_icon_filename = getPath2(gfx_dir, X11_ICON_FILENAME);
+ char *x11_iconmask_filename = getPath2(gfx_dir, X11_ICONMASK_FILENAME);
+ char *msdos_pointer_filename = getPath2(gfx_dir, MSDOS_POINTER_FILENAME);
+
+ free(gfx_dir);
+
+ InitProgramInfo(program_name, PROGRAM_TITLE_STRING, WINDOW_TITLE_STRING,
+ ICON_TITLE_STRING, x11_icon_filename, x11_iconmask_filename,
+ msdos_pointer_filename);
+
+ InitScrollbufferSize(FXSIZE, FYSIZE); /* (only needed for MS-DOS code) */
+
+ InitVideoDisplay();
+ InitVideoBuffer(&backbuffer, &window, WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH,
+ setup.fullscreen);
+}
+
void InitGfx()
{
int i, j;
{
int x, y;
- drawto = backbuffer = pix[PIX_DB_BACK];
+ drawto = backbuffer;
fieldbuffer = pix[PIX_DB_FIELD];
SetDrawtoField(DRAW_BACKBUFFER);
StopSounds();
FreeSounds(NUM_SOUNDS);
#else
- if (sysinfo.audio_process_id)
+ if (audio.soundserver_pid)
{
StopSounds();
- kill(sysinfo.audio_process_id, SIGTERM);
+ kill(audio.soundserver_pid, SIGTERM);
FreeSounds(NUM_SOUNDS);
}
#endif