From 97944d44b3e97d78e2e5194e6fb2c4c2ae8f4b09 Mon Sep 17 00:00:00 2001
From: Allanis <allanis@saracraft.net>
Date: Sat, 28 Dec 2013 23:06:52 +0000
Subject: [PATCH] [Change] Polished autonav system a bit more.

---
 src/input.c  | 22 +++++++++++-----------
 src/player.c |  6 ++++--
 2 files changed, 15 insertions(+), 13 deletions(-)

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.;
   	}