diff --git a/src/input.c b/src/input.c index 49023e9..568595d 100644 --- a/src/input.c +++ b/src/input.c @@ -199,8 +199,8 @@ static void input_key(int keynum, double value, int kabs) { else { /* Prevent it from getting stuck. */ if(value == KEY_PRESS) { - player_accel(1.); player_abortAutonav(); + player_accel(1.); } else if(value == KEY_RELEASE) player_accelOver(); } @@ -223,8 +223,8 @@ static void input_key(int keynum, double value, int kabs) { else if(KEY("left")) { /* Set flags for facing correction. */ if(value == KEY_PRESS) { - player_setFlag(PLAYER_TURN_LEFT); player_abortAutonav(); + player_setFlag(PLAYER_TURN_LEFT); } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_TURN_LEFT); } @@ -236,8 +236,8 @@ static void input_key(int keynum, double value, int kabs) { else if(KEY("right")) { /* Set flags for facing correction. */ if(value == KEY_PRESS) { - player_setFlag(PLAYER_TURN_RIGHT); player_abortAutonav(); + player_setFlag(PLAYER_TURN_RIGHT); } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_TURN_RIGHT); } @@ -249,8 +249,8 @@ static void input_key(int keynum, double value, int kabs) { /* Turn around to face vel. */ else if(KEY("reverse")) { if(value == KEY_PRESS) { - player_setFlag(PLAYER_REVERSE); player_abortAutonav(); + player_setFlag(PLAYER_REVERSE); } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_REVERSE); @@ -262,8 +262,8 @@ static void input_key(int keynum, double value, int kabs) { /* Shoot primary weapon. BOOM BOOM. */ else if(KEY("primary")) { if(value == KEY_PRESS) { - player_setFlag(PLAYER_PRIMARY); player_abortAutonav(); + player_setFlag(PLAYER_PRIMARY); } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_PRIMARY); } } @@ -280,8 +280,8 @@ static void input_key(int keynum, double value, int kabs) { /* Face the target. */ else if(KEY("face")) { if(value == KEY_PRESS) { - player_setFlag(PLAYER_FACE); player_abortAutonav(); + player_setFlag(PLAYER_FACE); } else if(value == KEY_RELEASE) { player_rmFlag(PLAYER_FACE); @@ -295,8 +295,8 @@ static void input_key(int keynum, double value, int kabs) { /* Board those ships. */ else if(KEY("board") && INGAME() && NOHYP()) { if(value == KEY_PRESS) { - player_board(); player_abortAutonav(); + player_board(); } } /* Shooting secondary weapon. */ @@ -319,14 +319,14 @@ static void input_key(int keynum, double value, int kabs) { /* Target nearest planet or attempt to land. */ else if(KEY("land") && INGAME() && NOHYP()) { if(value == KEY_PRESS) { - player_land(); player_abortAutonav(); + player_land(); } } else if(KEY("thyperspace") && INGAME() && NOHYP()) { if(value == KEY_PRESS) { - player_targetHyperspace(); player_abortAutonav(); + player_targetHyperspace(); } } else if(KEY("starmap") && NOHYP()) { @@ -334,8 +334,8 @@ static void input_key(int keynum, double value, int kabs) { } else if(KEY("jump") && INGAME()) { if(value == KEY_PRESS) { - player_jump(); player_abortAutonav(); + player_jump(); } } /* Zoom in. */ @@ -401,7 +401,7 @@ static void input_joyevent(int event, const unsigned int button) { static void input_keyevent(int event, SDLKey key, SDLMod mod) { int i; - mod &= (KMOD_CAPS | KMOD_NUM | KMOD_MODE); /* We want to ignore "global" modifiers. */ + mod &= ~(KMOD_CAPS | KMOD_NUM | KMOD_MODE); /* We want to ignore "global" modifiers. */ for(i = 0; strcmp(keybindNames[i], "end"); i++) if((input_keybinds[i]->type == KEYBIND_KEYBOARD) && diff --git a/src/player.c b/src/player.c index dac38e7..b30057a 100644 --- a/src/player.c +++ b/src/player.c @@ -1495,6 +1495,7 @@ void player_startAutonav(void) { void player_abortAutonav(void) { if(player_isFlag(PLAYER_AUTONAV)) { player_message("Autonav aborted!"); + player_acc = 0.; /* Might be acceling. */ player_rmFlag(PLAYER_AUTONAV); if(pilot_isFlag(player, PILOT_HYP_PREP)) { pilot_hyperspaceAbort(player); @@ -1524,9 +1525,10 @@ void player_think(Pilot* pplayer) { if(pplayer->lockons > 0) player_abortAutonav(); - if(space_canHyperspace(pplayer)) + if(space_canHyperspace(pplayer)) { + player_acc = 0.; player_jump(); - else { + } else { pilot_face(pplayer, VANGLE(pplayer->solid->pos)); player_acc = 1.; }