[Add] Player can abort hyperspaec jump sequence.
This commit is contained in:
parent
2fdeecaefa
commit
93fd1eef4d
23
src/pilot.c
23
src/pilot.c
@ -19,8 +19,8 @@
|
||||
#include "map.h"
|
||||
#include "pilot.h"
|
||||
|
||||
#define XML_ID "Fleets" /**< XML section identifier. */
|
||||
#define XML_FLEET "fleet"
|
||||
#define XML_ID "Fleets" /**< XML document identifier. */
|
||||
#define XML_FLEET "fleet" /**< XML individual fleet identifier. */
|
||||
|
||||
#define FLEET_DATA "../dat/fleet.xml" /**< Where to find fleet data. */
|
||||
|
||||
@ -36,7 +36,7 @@ int pilot_nstack = 0; /**< Same. */
|
||||
static int pilot_mstack = 0; /** Memory allocated for pilot_stack. */
|
||||
|
||||
extern Pilot* player;
|
||||
extern unsigned int player_crating;
|
||||
extern unsigned int player_crating; /**< Players combat rating. */
|
||||
|
||||
/* Stack of fleets. */
|
||||
static Fleet* fleet_stack = NULL; /** Fleet stack. */
|
||||
@ -707,6 +707,23 @@ static void pilot_hyperspace(Pilot* p) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn void pilot_hyperspaceAbort(Pilot* p)
|
||||
*
|
||||
* @brief Stops the pilot from hyperspaceing.
|
||||
*
|
||||
* Can only stop in preperation mode.
|
||||
* @param p Pilot to handle stop hyperspace.
|
||||
*/
|
||||
void pilot_hyperspaceAbort(Pilot* p) {
|
||||
if(!pilot_isFlag(p, PILOT_HYPERSPACE)) {
|
||||
if(pilot_isFlag(p, PILOT_HYP_BEGIN))
|
||||
pilot_rmFlag(p, PILOT_HYP_BEGIN);
|
||||
if(pilot_isFlag(p, PILOT_HYP_PREP))
|
||||
pilot_rmFlag(p, PILOT_HYP_PREP);
|
||||
}
|
||||
}
|
||||
|
||||
int pilot_addOutfit(Pilot* pilot, Outfit* outfit, int quantity) {
|
||||
int i, q, free_space;
|
||||
char* osec;
|
||||
|
@ -222,6 +222,7 @@ void pilot_setSecondary(Pilot* p, const char* secondary);
|
||||
void pilot_setAmmo(Pilot* p);
|
||||
void pilot_setAfterburner(Pilot* p);
|
||||
double pilot_face(Pilot* p, const double dir);
|
||||
void pilot_hyperspaceAbort(Pilot* p);
|
||||
/* Outfits. */
|
||||
int pilot_freeSpace(Pilot* p); /* Pilot space. */
|
||||
int pilot_addOutfit(Pilot* pilot, Outfit* outfit, int quantity);
|
||||
|
13
src/player.c
13
src/player.c
@ -1665,12 +1665,17 @@ void player_targetHyperspace(void) {
|
||||
*/
|
||||
void player_jump(void) {
|
||||
int i;
|
||||
if((hyperspace_target == -1) ||
|
||||
pilot_isFlag(player, PILOT_HYP_PREP) ||
|
||||
pilot_isFlag(player, PILOT_HYP_BEGIN) ||
|
||||
pilot_isFlag(player, PILOT_HYPERSPACE))
|
||||
/* Must have a jump target and not be already jumping. */
|
||||
if((hyperspace_target == -1) || pilot_isFlag(player, PILOT_HYPERSPACE))
|
||||
return;
|
||||
|
||||
/* Already jumping, so we break jump. */
|
||||
if(pilot_isFlag(player, PILOT_HYP_PREP)) {
|
||||
pilot_hyperspaceAbort(player);
|
||||
player_message("Aborting hyperspace sequence.");
|
||||
return;
|
||||
}
|
||||
|
||||
i = space_hyperspace(player);
|
||||
|
||||
if(i == -1)
|
||||
|
Loading…
Reference in New Issue
Block a user