From d3173f294951f8d01a5b7745eaf3ae52723735fc Mon Sep 17 00:00:00 2001 From: Allanis Date: Mon, 2 Sep 2013 17:08:51 +0100 Subject: [PATCH] [Add] player.c is now partially documented. --- src/player.c | 231 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 158 insertions(+), 73 deletions(-) diff --git a/src/player.c b/src/player.c index 13b46e6..7214d31 100644 --- a/src/player.c +++ b/src/player.c @@ -1,3 +1,9 @@ +/** + * @file player.c + * + * @brief Contains all the player related stuff. + */ + #include #include "lephisto.h" @@ -24,54 +30,54 @@ #include "spfx.h" #include "player.h" -#define XML_GUI_ID "GUIs" /* XML section identifier. */ -#define XML_GUI_TAG "gui" +#define XML_GUI_ID "GUIs" /**< XML section identifier for GUI document. */ +#define XML_GUI_TAG "gui" /**< XML section identifier for GUI tags. */ -#define XML_START_ID "Start" +#define XML_START_ID "Start" /**< Module start xml document identifier. */ -#define GUI_DATA "../dat/gui.xml" -#define GUI_GFX "../gfx/gui/" +#define GUI_DATA "../dat/gui.xml" /**< Global GUI configuration file. */ +#define GUI_GFX "../gfx/gui/" /**< Location of the GUI graphics. */ -#define START_DATA "../dat/start.xml" +#define START_DATA "../dat/start.xml" /**< Module start information file. */ -#define TARGET_WIDTH 128 -#define TARGET_HEIGHT 96 +#define TARGET_WIDTH 128 /**< Width of target graphics. */ +#define TARGET_HEIGHT 96 /**< Height of target graphics. */ -#define PLAYER_RESERVED_CHANNELS 4 -#define PLAYER_CHANNEL 0 +#define PLAYER_RESERVED_CHANNELS 4 /**< Number of channels to reserve for player sounds. */ +#define PLAYER_CHANNEL 0 /**< Player channel. */ /* Player stuff. */ -Pilot* player = NULL; /* extern in pilot.h */ -static Ship* player_ship = NULL; /* Temp ship to hold when naming it. */ -static double player_px, player_py, player_vx, player_vy, player_dir; -static int player_credits = 0; /* Temp hack. */ +Pilot* player = NULL; /**< The player. */ +static Ship* player_ship = NULL; /**< Temp ship to hold when naming it. */ +static double player_px, player_py, player_vx, player_vy, player_dir; /**< More hack. */ +static int player_credits = 0; /**< Temp hack on create. */ /* Player pilot stack - Ships she owns. */ -static Pilot** player_stack = NULL; -static char** player_lstack = NULL; /* Names of the planet the ships are at. */ -static int player_nstack = 0; +static Pilot** player_stack = NULL; /**< Stack of ships player has. */ +static char** player_lstack = NULL; /**< Names of the planet the ships are at. */ +static int player_nstack = 0; /**< Number of ships player has. */ /* Player global properties. */ -char* player_name = NULL; /* Player name. */ -int player_crating = 0; /* Ze rating. */ -unsigned int player_flags = 0; /* Player flags. */ +char* player_name = NULL; /**< Player name. */ +int player_crating = 0; /**< Player combar rating. */ +unsigned int player_flags = 0; /**< Player flags. */ /* Input.c */ -double player_turn = 0.; /* Turn velocity from input. */ -static double player_acc = 0.; /* Accel velocity from input. */ -unsigned int player_target = PLAYER_ID; /* Targetted pilot. */ +double player_turn = 0.; /**< Turn velocity from input. */ +static double player_acc = 0.; /**< Accel velocity from input. */ +unsigned int player_target = PLAYER_ID; /**< Targetted pilot. */ /* Internal */ -int planet_target = -1; /* Targetted planet. */ -int hyperspace_target = -1; /* Target hyperspace route. */ +int planet_target = -1; /**< Targetted planet. */ +int hyperspace_target = -1; /**< Target hyperspace route. */ /* For death etc. */ -static unsigned int player_timer = 0; -static Vec2 player_cam; +static unsigned int player_timer = 0; /**< For death and such. */ +static Vec2 player_cam; /**< Again, for death etc. */ -static int* missions_done = NULL; /* Saves position. */ -static int missions_mdone = 0; -static int missions_ndone = 0; +static int* missions_done = NULL; /**< Saves position of completed missions. */ +static int missions_mdone = 0; /**< Memory size of completed missions. */ +static int missions_ndone = 0; /**< Number of completed missions. */ /* Pilot stuff for GUI. */ extern Pilot** pilot_stack; @@ -82,17 +88,17 @@ extern StarSystem* systems_stack; /* GUI crap. */ typedef struct Radar_ { - double x,y; /* Position. */ - double w,h; /* Dimensions. */ - RadarShape shape; - double res; /* Resolution. */ + double x,y; /**< Position. */ + double w,h; /**< Dimensions. */ + RadarShape shape; /**< Shape. */ + double res; /**< Resolution. */ } Radar; /* Radar res. */ -#define RADAR_RES_MAX 100. -#define RADAR_RES_MIN 10. -#define RADAR_RES_INTERVAL 10. -#define RADAR_RES_DEFAULT 40. +#define RADAR_RES_MAX 100. /**< Max radar resolution. */ +#define RADAR_RES_MIN 10. /**< Min radar resolution. */ +#define RADAR_RES_INTERVAL 10. /**< Steps used to increase/decrease resolution. */ +#define RADAR_RES_DEFAULT 40. /**< Default resolution. */ typedef struct Rect_ { double x,y; @@ -101,40 +107,41 @@ typedef struct Rect_ { typedef struct GUI_ { /* Graphics. */ - glTexture* gfx_frame; - glTexture* gfx_targetPilot, *gfx_targetPlanet; + glTexture* gfx_frame; /**< Frame of the GUI. */ + glTexture* gfx_targetPilot, *gfx_targetPlanet; /**< Graphics used to target planets. */ - Radar radar; - Rect nav; - Rect shield, armour, energy; - Rect weapon; - Rect target_health, target_name, target_faction; - Rect misc; - Rect msg; + Radar radar; /**< The radar. */ + Rect nav; /**< Navigation computer. */ + Rect shield, armour, energy; /**< Health bars. */ + Rect weapon; /**< Weapon targeting system. */ + Rect target_health, target_name, target_faction; /**< Target stuff. */ + Rect misc; /**< Misc stuff: credits, cargo.. */ + Rect msg; /**< Where messages go. */ /* Positions. */ - Vec2 frame; - Vec2 target; + Vec2 frame; /**< Global frame position. */ + Vec2 target; /**< Global target position. */ } GUI; -GUI gui = { +static GUI gui = { .gfx_frame = NULL, .gfx_targetPilot = NULL, .gfx_targetPlanet = NULL -}; +}; /**< The GUI. */ +/* Needed to render properly. */ double gui_xoff = 0.; double gui_yoff = 0.; /* Messages. */ #define MSG_SIZE_MAX 80 -int msg_timeout = 5000; -int msg_max = 5; /* Max messages on screen. */ +int msg_timeout = 5000; /**< How long it takes for a message to timeout. */ +int msg_max = 5; /**< Max messages on screen. */ typedef struct Msg_ { char str[MSG_SIZE_MAX]; unsigned int t; } Msg; -static Msg* msg_stack; +static Msg* msg_stack; /**< Stack of messages. */ /* External. */ extern void pilot_render(const Pilot* pilot); /* Extern is in Pilot.* */ @@ -172,7 +179,16 @@ void player_think(Pilot* player); void player_brokeHyperspace(void); double player_faceHyperspace(void); -/* Prompt player name. */ +/** + * @fn void player_new(void) + * + * @brief Create a new player. + * + * - Cleans up after old player. + * - Prompts for name. + * + * @sa player_newMake + */ void player_new(void) { int r; /* Let's not seg fault due to a lack of environment. */ @@ -207,7 +223,11 @@ void player_new(void) { player_newMake(); } -/* Create a new player. */ +/** + * @fn static void player_newMake(void) + * + * @brief Actually create a new player. + */ static void player_newMake(void) { Ship* ship; char* sysname; @@ -294,7 +314,14 @@ static void player_newMake(void) { map_clear(); } -/* Create a dialogue to name the new ship. */ +/** + * @fn void player_newShip(Ship* ship, double px, double py, + * double vx, double vy, double dir) + * + * @brief Create a new ship for player. + * + * @sa player_newShipMake + */ void player_newShip(Ship* ship, double px, double py, double vx, double vy, double dir) { @@ -315,7 +342,11 @@ void player_newShip(Ship* ship, double px, double py, free(ship_name); } -/* Change the players ship. */ +/** + * @fn static void player_newShipMake(char* name) + * + * @brief Actually create the new ship. + */ static void player_newShipMake(char* name) { Vec2 vp, vv; @@ -348,7 +379,12 @@ static void player_newShipMake(char* name) { player_credits = 0; } -/* Swaps the current ship with shipname. */ +/** + * @fn void player_swapShip(char* shipname) + * + * @brief Swap players current ship with her ship named 'shipname'. + * @param shipname Ship to change to. + */ void player_swapShip(char* shipname) { int i, j; Pilot* ship; @@ -387,7 +423,11 @@ void player_swapShip(char* shipname) { WARN("Unable to swap player with ship '%s': Ship does not exist!", shipname); } -/* Clean up player stuff like player_stack. */ +/** + * @brief void player_cleanup(void + * + * @brief Clean up player stuff like player_stack. + */ void player_cleanup(void) { int i; @@ -429,8 +469,12 @@ void player_cleanup(void) { } } -/* Initializes the player sound. */ -static int player_soundReserved = 0; +/** + * @fn static void player_initSound(void) + * + * @brief Initialize the player sounds. + */ +static int player_soundReserved = 0; /**< Has the player already reserved sound? */ static void player_initSound(void) { if(player_soundReserved) return; @@ -439,15 +483,32 @@ static void player_initSound(void) { player_soundReserved = 1; } -/* Play a sound. */ +/** + * @fn static void player_playSound(int sound, int once) + * + * @brief Play a sound at the player. + * @param sound ID of the sound to play. + * @param once Play only once? + */ static void player_playSound(int sound, int once) { sound_playGroup(PLAYER_CHANNEL, sound, once); } +/** + * @fn static void player_stopSound(void) + * + * @brief Stop playing player sounds. + */ static void player_stopSound(void) { sound_stopGroup(PLAYER_CHANNEL); } +/** + * @fn void player_message(const char* fmt, ...) + * + * @brief Add a msg to the queue to be displayed on screen. + * @param fmt String with formatting like prinf. + */ void player_message(const char* fmt, ...) { va_list ap; int i; @@ -469,17 +530,35 @@ void player_message(const char* fmt, ...) { msg_stack[0].t = SDL_GetTicks() + msg_timeout; } +/** + * @fn void player_warp(const double x, const double y) + * + * @brief Warp the player to the new position. + * @param x X value of the position to warp to. + * @param y Y value of the position to warp to. + */ void player_warp(const double x, const double y) { vect_cset(&player->solid->pos, x, y); } -/* Clear the targets. */ +/** + * @fn player_clear(void) + * + * @brief Clear the targets. + */ void player_clear(void) { player_target = PLAYER_ID; planet_target = -1; hyperspace_target = -1; } +/** + * @fn const char* player_rating(void) + * + * @brief Get the players combat rating in a human readable string. + * + * @return The players combat rating in a human readable string. + */ static char* player_ratings[] = { "None", "Smallfry", @@ -491,17 +570,23 @@ static char* player_ratings[] = { }; const char* player_rating(void) { - if(player_crating == 0) return player_ratings[0]; - else if(player_crating < 50) return player_ratings[1]; - else if(player_crating < 200) return player_ratings[2]; - else if(player_crating < 500) return player_ratings[3]; - else if(player_crating < 1000) return player_ratings[4]; - else if(player_crating < 2500) return player_ratings[5]; - else if(player_crating < 10000) return player_ratings[6]; - else return player_ratings[7]; + if(player_crating == 0) return player_ratings[0]; + else if(player_crating < 50) return player_ratings[1]; + else if(player_crating < 200) return player_ratings[2]; + else if(player_crating < 500) return player_ratings[3]; + else if(player_crating < 1000) return player_ratings[4]; + else if(player_crating < 2500) return player_ratings[5]; + else if(player_crating < 10000) return player_ratings[6]; + else return player_ratings[7]; } -/* Return amount of outfits the player owns. */ +/** + * @fn int player_outfitOwned(const char* outfitname) + * + * @brief Get how many of the outfits the player owns. + * @param outfitname Outfit to check how many the player owns of. + * @return The number of outfits matching outfitname owned. + */ int player_outfitOwned(const char* outfitname) { int i;