[Add] player.c is now partially documented.
This commit is contained in:
parent
28f6e07768
commit
d3173f2949
215
src/player.c
215
src/player.c
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user