#pragma once #include "pilot.h" /* Flag definitions. */ #define PLAYER_TURN_LEFT (1<<0) /**< Player is turning left. */ #define PLAYER_TURN_RIGHT (1<<1) /**< Player is turning right. */ #define PLAYER_REVERSE (1<<2) /**< Player is facing opposite of vel. */ #define PLAYER_AFTERBURNER (1<<3) /**< Player is burning it up. */ #define PLAYER_DESTROYED (1<<9) /**< Player goes BOOM! */ #define PLAYER_FACE (1<<10) /**< Player is facing target. */ #define PLAYER_PRIMARY (1<<11) /**< Player is shooting primary weapon. */ #define PLAYER_PRIMARY_L (1<<12) /**< Player shot primary weapon last frame. */ #define PLAYER_SECONDARY (1<<13) /**< Player is shooting secondary weapon. */ #define PLAYER_SECONDARY_L (1<<14) /**< Player shot secondary last frame. */ #define PLAYER_LANDACK (1<<15) /**< Player has permission to land. */ #define PLAYER_CREATING (1<<16) /**< Player is being created. */ #define PLAYER_AUTONAV (1<<17) /**< Player has autonaviagation on. */ /* Flag functions. */ #define player_isFlag(f) (player_flags & (f)) /**< Check for a player flag. */ #define player_setFlag(f) (player_flags |= (f)) /**< Set a player flag. */ #define player_rmFlag(f) (player_flags &= ~(f)) /**< Remove a player flag. */ /* The player. */ extern Pilot* player; /**< The player. */ extern char* player_name; /**< Player's name. */ extern unsigned int player_flags; /**< Player's flags. */ extern double player_crating; /**< Player's combat rating. */ extern int player_enemies; /**< Amount of enemies player has. */ /* Targetting. */ extern int planet_target; /**< Targetted planet. -1 is none. */ extern int hyperspace_target; /**< Targetted hyperspace route. -1 is none. */ /* Common player sounds. */ extern int snd_target; /**< Sound when targetting. */ extern int snd_jump; /**< Sound when can jump. */ extern int snd_nav; /**< Sound when changing nav computer. */ /* Creation/Cleanup. */ void player_new(void); int player_newShip(Ship* ship, double px, double py, double vx, double vy, double dir); void player_cleanup(void); int gui_load(const char* name); /* Render. */ void player_render(double dt); /* Misc. */ void player_message(const char* fmt, ...); void player_clear(void); void player_warp(const double x, const double y); const char* player_rating(void); /* Sounds. */ void player_playSound(int sound, int once); void player_stopSound(void); void player_soundPause(void); void player_soundResume(void); /* Cargo. */ int player_outfitOwned(const char* outfitname); int player_cargoOwned(const char* commodityname); /* Pilot ships. */ void player_ships(char** sships, glTexture** tships); int player_nships(void); Pilot* player_getShip(char* shipname); char* player_getLoc(char* shipname); void player_setLoc(char* shipname, char* loc); void player_swapShip(char* shipname); int player_shipPrice(char* shipname); void player_rmShip(char* shipname); /* Player missions. */ void player_missionFinished(int id); int player_missionAlreadyDone(int id); /* Licenses. */ void player_addLicense(char* license); int player_hasLicense(char* license); char** player_getLicenses(int* nlicenses); /* Keybind actions. */ void player_targetHostile(void); void player_targetNext(void); void player_targetPrev(void); void player_targetNearest(void); void player_targetEscort(int prev); void player_secondaryNext(void); void player_secondaryPrev(void); void player_targetPlanet(void); void player_land(void); void player_targetHyperspace(void); void player_jump(void); void player_screenshot(void); void player_afterburn(void); void player_afterburnOver(void); void player_accel(double acc); void player_accelOver(void); void player_startAutonav(void); void player_abortAutonav(char* reason); void player_hail(void);