[Add] player.c is now partially documented.

This commit is contained in:
Allanis 2013-09-02 17:08:51 +01:00
parent 28f6e07768
commit d3173f2949

View File

@ -1,3 +1,9 @@
/**
* @file player.c
*
* @brief Contains all the player related stuff.
*/
#include <malloc.h>
#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",
@ -501,7 +580,13 @@ const char* player_rating(void) {
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;