struct PictureFileInfo
{
char *picture_filename;
- BOOL picture_with_mask;
+ boolean picture_with_mask;
};
struct IconFileInfo
void OpenAll(int argc, char *argv[])
{
- if (serveronly)
+ if (options.serveronly)
{
- NetworkServer(server_port, serveronly);
+ NetworkServer(options.server_port, options.serveronly);
/* never reached */
exit(0);
InitCounter();
InitSound();
InitSoundServer();
- InitJoystick();
+ InitJoysticks();
InitRND(NEW_RANDOMIZE);
signal(SIGINT, CloseAllAndExit);
{
int i;
+ /* choose default local player */
local_player = &stored_player[0];
- if (!LoadLevelInfo()) /* global level info */
- Error(ERR_EXIT, NULL);
-
- LoadPlayerInfo(PLAYER_SETUP); /* global setup info */
- LoadPlayerInfo(PLAYER_LEVEL); /* level specific info */
-
for (i=0; i<MAX_PLAYERS; i++)
{
+ stored_player[i].joystick_fd = -1; /* joystick device closed */
stored_player[i].connected = FALSE;
- stored_player[i].local = FALSE;
}
+
local_player->connected = TRUE;
- local_player->local = TRUE;
+
+ if (!LoadLevelInfo()) /* global level info */
+ Error(ERR_EXIT, NULL);
+
+ LoadSetup(); /* global setup info */
+ LoadLevelSetup(); /* info about last played level */
}
void InitNetworkServer()
{
int nr_wanted;
- if (!network)
+ if (!options.network)
return;
nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED);
- if (!ConnectToServer(server_host, server_port))
+ if (!ConnectToServer(options.server_host, options.server_port))
Error(ERR_EXIT, "cannot connect to multiplayer server");
- SendToServer_Nickname(local_player->alias_name);
+ SendToServer_Nickname(setup.alias_name);
SendToServer_ProtocolVersion();
if (nr_wanted)
return;
#ifndef MSDOS
- if (access(sound_device_name,W_OK)<0)
+ if (access(sound_device_name, W_OK) != 0)
{
- Error(ERR_RETURN, "cannot access sound device - no sounds");
+ Error(ERR_WARN, "cannot access sound device - no sounds");
sound_status = SOUND_OFF;
return;
}
if ((sound_device = open(sound_device_name,O_WRONLY))<0)
{
- Error(ERR_RETURN, "cannot open sound device - no sounds");
+ Error(ERR_WARN, "cannot open sound device - no sounds");
sound_status = SOUND_OFF;
return;
}
#ifdef VOXWARE
sound_loops_allowed = TRUE;
- sound_loops_on = TRUE;
+
+ /*
+ setup.sound_loops_on = TRUE;
+ */
+
#endif
#else
sound_loops_allowed = TRUE;
- sound_loops_on = TRUE;
+
+ /*
+ setup.sound_loops_on = TRUE;
+ */
+
#endif
for(i=0; i<NUM_SOUNDS; i++)
#ifndef MSDOS
if (pipe(sound_pipe)<0)
{
- Error(ERR_RETURN, "cannot create pipe - no sounds");
+ Error(ERR_WARN, "cannot create pipe - no sounds");
sound_status = SOUND_OFF;
return;
}
if ((sound_process_id = fork()) < 0)
{
- Error(ERR_RETURN, "cannot create sound server process - no sounds");
+ Error(ERR_WARN, "cannot create sound server process - no sounds");
sound_status = SOUND_OFF;
return;
}
#endif
}
-void InitJoystick()
+void InitJoysticks()
{
+ int i;
+
if (global_joystick_status == JOYSTICK_OFF)
return;
+ joystick_status = JOYSTICK_OFF;
+
#ifndef MSDOS
- if (access(joystick_device_name[joystick_nr],R_OK)<0)
+ for (i=0; i<MAX_PLAYERS; i++)
{
- Error(ERR_RETURN, "cannot access joystick device '%s'",
- joystick_device_name[joystick_nr]);
- joystick_status = JOYSTICK_OFF;
- return;
- }
+ char *device_name = setup.input[i].joy.device_name;
- if ((joystick_device = open(joystick_device_name[joystick_nr],O_RDONLY))<0)
- {
- Error(ERR_RETURN, "cannot open joystick device '%s'",
- joystick_device_name[joystick_nr]);
- joystick_status = JOYSTICK_OFF;
- return;
- }
+ /* this allows subsequent calls to 'InitJoysticks' for re-initialization */
+ if (stored_player[i].joystick_fd != -1)
+ {
+ close(stored_player[i].joystick_fd);
+ stored_player[i].joystick_fd = -1;
+ }
- joystick_status = JOYSTICK_AVAILABLE;
- LoadJoystickData();
+ if (!setup.input[i].use_joystick)
+ continue;
+
+ if (access(device_name, R_OK) != 0)
+ {
+ Error(ERR_WARN, "cannot access joystick device '%s'", device_name);
+ continue;
+ }
+
+ if ((stored_player[i].joystick_fd = open(device_name, O_RDONLY)) < 0)
+ {
+ Error(ERR_WARN, "cannot open joystick device '%s'", device_name);
+ continue;
+ }
+
+ joystick_status = JOYSTICK_AVAILABLE;
+ }
#else
joystick_status = JOYSTICK_AVAILABLE;
#endif
unsigned int depth;
/* connect to X server */
- if (!(display = XOpenDisplay(display_name)))
- Error(ERR_EXIT,"cannot connect to X server %s",XDisplayName(display_name));
+ if (!(display = XOpenDisplay(options.display_name)))
+ Error(ERR_EXIT, "cannot connect to X server %s",
+ XDisplayName(options.display_name));
screen = DefaultScreen(display);
visual = DefaultVisual(display, screen);
XChangeProperty(display, window, proto_atom, XA_ATOM, 32,
PropModePrepend, (unsigned char *) &delete_atom, 1);
- sprintf(icon_filename,"%s/%s",GFX_PATH,icon_pic.picture_filename);
+ sprintf(icon_filename, "%s/%s/%s",
+ options.base_directory, GRAPHICS_DIRECTORY,
+ icon_pic.picture_filename);
XReadBitmapFile(display,window,icon_filename,
&icon_width,&icon_height,
&icon_pixmap,&icon_hot_x,&icon_hot_y);
if (!icon_pixmap)
Error(ERR_EXIT, "cannot read icon bitmap file '%s'", icon_filename);
- sprintf(icon_filename,"%s/%s",GFX_PATH,icon_pic.picturemask_filename);
+ sprintf(icon_filename, "%s/%s/%s",
+ options.base_directory, GRAPHICS_DIRECTORY,
+ icon_pic.picturemask_filename);
XReadBitmapFile(display,window,icon_filename,
&icon_width,&icon_height,
&iconmask_pixmap,&icon_hot_x,&icon_hot_y);
/* Grafik laden */
if (pic->picture_filename)
{
- sprintf(basefilename,"%s%s",pic->picture_filename,picture_ext);
- DrawInitText(basefilename,150,FC_YELLOW);
- sprintf(filename,"%s/%s",GFX_PATH,basefilename);
+ sprintf(basefilename, "%s%s", pic->picture_filename, picture_ext);
+ DrawInitText(basefilename, 150, FC_YELLOW);
+ sprintf(filename, "%s/%s/%s",
+ options.base_directory, GRAPHICS_DIRECTORY, basefilename);
#ifdef MSDOS
rest(100);
#ifdef XPM_INCLUDE_FILE
- sprintf(basefilename,"%s%s",pic->picture_filename,picturemask_ext);
- DrawInitText(basefilename,150,FC_YELLOW);
- sprintf(filename,"%s/%s",GFX_PATH,basefilename);
+ sprintf(basefilename, "%s%s", pic->picture_filename, picturemask_ext);
+ DrawInitText(basefilename, 150, FC_YELLOW);
+ sprintf(filename, "%s/%s/%s",
+ options.base_directory, GRAPHICS_DIRECTORY, basefilename);
#ifdef DEBUG_TIMING
count1 = Counter();