Lephisto/src/player.h

104 lines
3.9 KiB
C

#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);