diff --git a/src/input.c b/src/input.c index e4bd07a..90b006c 100644 --- a/src/input.c +++ b/src/input.c @@ -79,7 +79,7 @@ void input_setDefault(void) { input_setKeybind("secondary", KEYBIND_KEYBOARD, SDLK_LSHIFT, KMOD_NONE, 0); input_setKeybind("secondary_next", KEYBIND_KEYBOARD, SDLK_e, KMOD_NONE, 0); /* Space */ - input_setKeybind("autonav", KEYBIND_KEYBOARD, SDLK_n, KMOD_NONE, 0); + input_setKeybind("autonav", KEYBIND_KEYBOARD, SDLK_n, KMOD_CTRL, 0); input_setKeybind("target_planet", KEYBIND_KEYBOARD, SDLK_p, KMOD_NONE, 0); input_setKeybind("land", KEYBIND_KEYBOARD, SDLK_l, KMOD_NONE, 0); input_setKeybind("thyperspace", KEYBIND_KEYBOARD, SDLK_h, KMOD_NONE, 0); @@ -197,11 +197,16 @@ static void input_key(int keynum, double value, int kabs) { /* Accelerating. */ if(KEY("accel")) { - player_abortAutonav(); - if(kabs)player_accel(value); + if(kabs) { + player_abortAutonav(); + player_accel(value); + } else { /* Prevent it from getting stuck. */ - if(value == KEY_PRESS) player_accel(1.); + if(value == KEY_PRESS) { + player_accel(1.); + player_abortAutonav(); + } else if(value == KEY_RELEASE) player_accelOver(); } @@ -221,9 +226,11 @@ static void input_key(int keynum, double value, int kabs) { } /* Turning left. */ else if(KEY("left")) { - player_abortAutonav(); /* Set flags for facing correction. */ - if(value == KEY_PRESS) { player_setFlag(PLAYER_TURN_LEFT); } + if(value == KEY_PRESS) { + player_setFlag(PLAYER_TURN_LEFT); + player_abortAutonav(); + } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_TURN_LEFT); } if(kabs) { player_turn = -value; } @@ -232,9 +239,11 @@ static void input_key(int keynum, double value, int kabs) { } /* Turning right. */ else if(KEY("right")) { - player_abortAutonav(); /* Set flags for facing correction. */ - if(value == KEY_PRESS) { player_setFlag(PLAYER_TURN_RIGHT); } + if(value == KEY_PRESS) { + player_setFlag(PLAYER_TURN_RIGHT); + player_abortAutonav(); + } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_TURN_RIGHT); } if(kabs) { player_turn = value; } @@ -244,8 +253,10 @@ static void input_key(int keynum, double value, int kabs) { } /* Turn around to face vel. */ else if(KEY("reverse")) { - player_abortAutonav(); - if(value == KEY_PRESS) { player_setFlag(PLAYER_REVERSE); } + if(value == KEY_PRESS) { + player_setFlag(PLAYER_REVERSE); + player_abortAutonav(); + } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_REVERSE); player_turn = 0; /* Turning corrections. */ @@ -255,8 +266,10 @@ static void input_key(int keynum, double value, int kabs) { } /* Shoot primary weapon. BOOM BOOM. */ else if(KEY("primary")) { - player_abortAutonav(); - if(value == KEY_PRESS) { player_setFlag(PLAYER_PRIMARY); } + if(value == KEY_PRESS) { + player_setFlag(PLAYER_PRIMARY); + player_abortAutonav(); + } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_PRIMARY); } } /* Targetting. */ @@ -271,8 +284,10 @@ static void input_key(int keynum, double value, int kabs) { } /* Face the target. */ else if(KEY("face")) { - player_abortAutonav(); - if(value == KEY_PRESS) { player_setFlag(PLAYER_FACE); } + if(value == KEY_PRESS) { + player_setFlag(PLAYER_FACE); + player_abortAutonav(); + } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_FACE); @@ -284,8 +299,10 @@ static void input_key(int keynum, double value, int kabs) { } /* Board those ships. */ else if(KEY("board") && INGAME() && NOHYP()) { - player_abortAutonav(); - if(value == KEY_PRESS) player_board(); + if(value == KEY_PRESS) { + player_board(); + player_abortAutonav(); + } } /* Shooting secondary weapon. */ else if(KEY("secondary") && NOHYP()) { @@ -306,19 +323,25 @@ static void input_key(int keynum, double value, int kabs) { } /* Target nearest planet or attempt to land. */ else if(KEY("land") && INGAME() && NOHYP()) { - player_abortAutonav(); - if(value == KEY_PRESS) player_land(); + if(value == KEY_PRESS) { + player_land(); + player_abortAutonav(); + } } else if(KEY("thyperspace") && INGAME() && NOHYP()) { - player_abortAutonav(); - if(value == KEY_PRESS) player_targetHyperspace(); + if(value == KEY_PRESS) { + player_targetHyperspace(); + player_abortAutonav(); + } } else if(KEY("starmap") && NOHYP()) { if(value == KEY_PRESS) map_open(); } else if(KEY("jump") && INGAME()) { - player_abortAutonav(); - if(value == KEY_PRESS) player_jump(); + if(value == KEY_PRESS) { + player_jump(); + player_abortAutonav(); + } } /* Zoom in. */ else if(KEY("mapzoomin") && INGAME()) {