int climbing;
int game_paused;
int have_joystick;
+#ifdef HACKING
int identify;
+#endif
int scanner_zoom = 1;
+int remap_keys;
int find_input;
char find_name[20];
void finish_game (void)
{
finish = 1;
- game_over = 1;
+ game_over = 2;
}
}
+static void roll_left(void)
+{
+ if (flight_roll < 0)
+ flight_roll = 0;
+ else
+ {
+ increase_flight_roll();
+ increase_flight_roll();
+ rolling = 1;
+ }
+}
+
+static void roll_right(void)
+{
+ if (flight_roll > 0)
+ flight_roll = 0;
+ else
+ {
+ decrease_flight_roll();
+ decrease_flight_roll();
+ rolling = 1;
+ }
+}
+
+static void climb(void)
+{
+ if (flight_climb < 0)
+ flight_climb = 0;
+ else
+ {
+ increase_flight_climb();
+ }
+ climbing = 1;
+}
+
+static void dive(void)
+{
+ if (flight_climb > 0)
+ flight_climb = 0;
+ else
+ {
+ decrease_flight_climb();
+ }
+ climbing = 1;
+}
+
void arrow_right (void)
{
switch (current_screen)
break;
case SCR_FRONT_VIEW:
+ roll_right();
+ break;
case SCR_REAR_VIEW:
+ if (remap_keys) roll_left(); else roll_right();
+ break;
case SCR_RIGHT_VIEW:
+ if (remap_keys) climb(); else roll_right();
+ break;
case SCR_LEFT_VIEW:
- if (flight_roll > 0)
- flight_roll = 0;
- else
- {
- decrease_flight_roll();
- decrease_flight_roll();
- rolling = 1;
- }
- break;
+ if (remap_keys) dive(); else roll_right();
+ break;
}
}
break;
case SCR_FRONT_VIEW:
+ roll_left();
+ break;
case SCR_REAR_VIEW:
+ if (remap_keys) roll_right(); else roll_left();
+ break;
case SCR_RIGHT_VIEW:
+ if (remap_keys) dive(); else roll_left();
+ break;
case SCR_LEFT_VIEW:
- if (flight_roll < 0)
- flight_roll = 0;
- else
- {
- increase_flight_roll();
- increase_flight_roll();
- rolling = 1;
- }
- break;
+ if (remap_keys) climb(); else roll_left();
+ break;
}
}
break;
case SCR_FRONT_VIEW:
+ dive();
+ break;
case SCR_REAR_VIEW:
+ if (remap_keys) climb(); else dive();
+ break;
case SCR_RIGHT_VIEW:
+ if (remap_keys) roll_right(); else dive();
+ break;
case SCR_LEFT_VIEW:
- if (flight_climb > 0)
- flight_climb = 0;
- else
- {
- decrease_flight_climb();
- }
- climbing = 1;
- break;
+ if (remap_keys) roll_left(); else dive();
+ break;
}
}
break;
case SCR_FRONT_VIEW:
+ climb();
+ break;
case SCR_REAR_VIEW:
+ if (remap_keys) dive(); else climb();
+ break;
case SCR_RIGHT_VIEW:
+ if (remap_keys) roll_left(); else climb();
+ break;
case SCR_LEFT_VIEW:
- if (flight_climb < 0)
- flight_climb = 0;
- else
- {
- increase_flight_climb();
- }
- climbing = 1;
- break;
+ if (remap_keys) roll_right(); else climb();
+ break;
}
}
case SCR_QUIT:
finish_game();
break;
+ case SCR_RESTART:
+ game_over = 2;
+ break;
}
}
switch (current_screen)
{
case SCR_QUIT:
+ case SCR_RESTART:
if (docked)
display_commander_status();
else
abandon_ship();
}
+static int cheat_arg = 0;
+static void check_cheat_keys(void)
+{
+ int i;
+
+ if (!kbd_ctrl_pressed)
+ return;
+
+ for (i = 0; i < 10; i++) {
+ if (old_key[KEY_0 + i] == 1) {
+ cheat_arg = cheat_arg * 10 + i;
+ goto ok;
+ }
+ }
+
+ if (old_key[KEY_C] == 1)
+ goto done;
+
+ if (docked)
+ return;
+
+ if (old_key[KEY_S] == 1) {
+ if (cheat_arg < NO_OF_SHIPS) {
+ int un = create_other_ship(cheat_arg);
+ if (un != -1)
+ universe[un].flags |= FLG_TARGET;
+ goto done;
+ }
+ }
+
+ if (old_key[KEY_D] == 1) {
+ game_paused = 0;
+ snd_play_sample (SND_DOCK);
+ dock_player();
+ current_screen = SCR_BREAK_PATTERN;
+ goto done;
+ }
+
+ return;
+done:
+ cheat_arg = 0;
+ok:
+ snd_play_sample(SND_BEEP);
+ return;
+}
void handle_flight_keys (void)
{
{
if (kbd_resume_pressed)
game_paused = 0;
+ else
+ check_cheat_keys();
return;
}
if (kbd_n_pressed)
n_pressed();
+#ifdef HACKING
if (kbd_i_pressed == 1)
identify = !identify;
+#endif
if (kbd_zoom_pressed == 1)
scanner_zoom ^= 3;
{
if (!docked && cmdr.docking_computer)
{
- if (instant_dock)
- engage_docking_computer();
- else
- engage_auto_pilot();
+ if ((universe[1].type == SHIP_CORIOLIS ||
+ universe[1].type == SHIP_DODEC) &&
+ (universe[1].flags & FLG_ANGRY))
+ info_message("Docking permission refused");
+ else if (instant_dock)
+ engage_docking_computer();
+ else
+ engage_auto_pilot();
}
}
if (kbd_origin_pressed)
o_pressed();
- if (kbd_pause_pressed)
+ if (kbd_pause_pressed) {
+ cheat_arg = 0;
game_paused = 1;
+ }
if (kbd_target_missile_pressed)
{
if (kbd_enter_pressed)
return_pressed();
- if (kbd_energy_bomb_pressed)
+ if (kbd_energy_bomb_pressed && kbd_ctrl_pressed)
{
if ((!docked) && (cmdr.energy_bomb))
{
}
}
- if (kbd_escape_pressed)
+ if (kbd_escape_pressed && kbd_ctrl_pressed)
{
if ((!docked) && (cmdr.escape_pod) && (!witchspace))
run_escape_sequence();
snd_play_midi (SND_ELITE_THEME, TRUE);
initialise_intro1();
+#ifdef HACKING
identify = 0;
+#endif
for (;;)
{
current_screen = SCR_INTRO_TWO;
snd_play_midi (SND_BLUE_DANUBE, TRUE);
-
+
+#ifdef HACKING
identify = 0;
+#endif
initialise_intro2();
flight_speed = 3;
flight_speed = 6;
flight_roll = 0;
flight_climb = 0;
+#ifdef HACKING
identify = 0;
+#endif
clear_universe();
set_init_matrix (rotmat);
}
}
- if (!finish)
+ if (game_over < 2)
run_game_over_screen();
}