exit(0);
}
+ InitUserdataDirectory();
InitLevelAndPlayerInfo();
InitCounter();
InitSound();
InitSoundServer();
- InitJoystick();
+ InitJoysticks();
InitRND(NEW_RANDOMIZE);
signal(SIGINT, CloseAllAndExit);
{
int i;
- /* initialize local setup */
- setup.sound_on = TRUE;
- setup.sound_loops_on = FALSE;
- setup.sound_music_on = FALSE;
- setup.sound_simple_on = FALSE;
- setup.toons_on = TRUE;
- setup.direct_draw_on = FALSE;
- setup.scroll_delay_on = FALSE;
- setup.soft_scrolling_on = TRUE;
- setup.fading_on = FALSE;
- setup.autorecord_on = FALSE;
- setup.quick_doors = FALSE;
- for (i=0; i<MAX_PLAYERS; i++)
- {
- setup.joy_input[i].use_joystick = FALSE;
- setup.joy_input[i].joystick_nr = i;
- setup.joy_input[i].button_snap = JOY_BUTTON_1;
- setup.joy_input[i].button_bomb = JOY_BUTTON_2;
- setup.key_input[i].left = DEFAULT_KEY_LEFT;
- setup.key_input[i].right = DEFAULT_KEY_RIGHT;
- setup.key_input[i].up = DEFAULT_KEY_UP;
- setup.key_input[i].down = DEFAULT_KEY_DOWN;
- setup.key_input[i].snap = DEFAULT_KEY_SNAP;
- setup.key_input[i].bomb = DEFAULT_KEY_BOMB;
- }
-
/* 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 */
-
- /* after LoadPlayerInfo(), because it overwrites 'local_player' */
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()
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;
+
+ /*
setup.sound_loops_on = TRUE;
+ */
+
#endif
#else
sound_loops_allowed = 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 joystick_nr = setup.joy_input[0].joystick_nr;
+ 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