naev 0.11.5
player.h
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
4#pragma once
5
6#include <time.h>
7
8#include "nstring.h"
9#include "pilot.h"
10
12enum {
13 PLAYER_TURN_LEFT,
14 PLAYER_TURN_RIGHT,
15 PLAYER_REVERSE,
16 PLAYER_ACCEL,
17 PLAYER_DESTROYED,
18 PLAYER_FACE,
19 PLAYER_PRIMARY,
20 PLAYER_PRIMARY_L,
21 PLAYER_SECONDARY,
22 PLAYER_SECONDARY_L,
23 PLAYER_LANDACK,
24 PLAYER_CREATING,
25 PLAYER_AUTONAV,
26 PLAYER_NOLAND,
27 PLAYER_CINEMATICS,
28 PLAYER_CINEMATICS_GUI,
29 PLAYER_CINEMATICS_2X,
30 PLAYER_HOOK_LAND,
31 PLAYER_HOOK_JUMPIN,
32 PLAYER_HOOK_HYPER,
33 PLAYER_MFLY,
34 PLAYER_NOSAVE,
35 PLAYER_FLAGS_MAX
36};
37
39enum {
40 PLAYER_LAND_OK,
41 PLAYER_LAND_AGAIN,
42 PLAYER_LAND_DENIED,
43};
44
45typedef char PlayerFlags[ PLAYER_FLAGS_MAX ];
46
47/* flag functions */
48#define player_isFlag(f) (player.flags[f])
49#define player_setFlag(f) (player.flags[f] = 1)
50#define player_rmFlag(f) (player.flags[f] = 0)
51
52/* Control restoration reasons. */
53enum {
54 PINPUT_NULL,
55 PINPUT_MOVEMENT,
56 PINPUT_AUTONAV,
57 PINPUT_BRAKING
58};
59
60#include "player_autonav.h"
61
65typedef struct PlayerOutfit_s {
66 const Outfit *o;
67 int q;
69
73typedef struct PlayerShip_s {
75 PilotWeaponSet weapon_sets[PILOT_WEAPON_SETS];
79 /* Fleet data. */
82 /* Some meta-data. */
83 double time_played;
84 char *acquired;
90 unsigned int ships_destroyed[SHIP_CLASS_TOTAL];
91 unsigned int jumped_times;
92 unsigned int landed_times;
93 unsigned int death_counter;
95
99typedef struct Player_s {
100 /* Player intrinsics. */
103 char *name;
105 /* Player data. */
106 PlayerFlags flags;
108 double mousex;
109 double mousey;
110 double speed;
111 char *chapter;
115 /* Loaded game version. */
118 /* Options that we save. */
119 char *gui;
120 double radar_res;
124 /* Player fleets. */
128 /* Meta-data. */
129 time_t last_played;
130 double time_played;
136 unsigned int ships_destroyed[SHIP_CLASS_TOTAL];
137 unsigned int jumped_times;
138 unsigned int landed_times;
139 unsigned int death_counter;
141 /* Meta-meta-data. */
143} Player_t;
144
145/*
146 * Local player.
147 */
148extern Player_t player;
150/*
151 * Common player sounds.
152 */
153extern int snd_target;
154extern int snd_jump;
155extern int snd_nav;
156extern int snd_hail;
157extern int snd_hypPowUp;
158extern int snd_hypEng;
159extern int snd_hypPowDown;
160extern int snd_hypPowUpJump;
161extern int snd_hypJump;
163/*
164 * creation/cleanup
165 */
166int player_init (void);
167void player_new (void);
168PlayerShip_t* player_newShip( const Ship* ship, const char *def_name,
169 int trade, const char *acquired, int noname );
170void player_cleanup (void);
171
172/*
173 * Hook voodoo.
174 */
175void player_runHooks (void);
176
177/*
178 * Rendering.
179 */
180void player_renderUnderlay( double dt );
181void player_render( double dt );
182
183/*
184 * Message stuff, in gui.c
185 */
186void player_messageToggle( int enable );
187NONNULL( 1 ) PRINTF_FORMAT( 1, 2 ) void player_message( const char *fmt, ... );
188NONNULL( 1 ) void player_messageRaw ( const char *str );
189
190/*
191 * Misc.
192 */
193void player_resetSpeed (void);
194void player_restoreControl( int reason, const char *str );
195void player_checkLandAck (void);
196void player_nolandMsg( const char *str );
197void player_clear (void);
198void player_warp( double x, double y );
199int player_hasCredits( credits_t amount );
200credits_t player_modCredits( credits_t amount );
201void player_hailStart (void);
202/* Sounds. */
203void player_soundPlay( int sound, int once );
204void player_soundPlayGUI( int sound, int once );
205void player_soundStop (void);
206void player_soundPause (void);
207void player_soundResume (void);
208
209/*
210 * Player ships.
211 */
212int player_ships( char** sships, glTexture** tships );
213void player_shipsSort (void);
214const PlayerShip_t* player_getShipStack (void);
215int player_nships (void);
216int player_hasShip( const char *shipname );
217Pilot *player_getShip( const char *shipname );
218PlayerShip_t* player_getPlayerShip( const char *shipname );
219void player_swapShip( const char *shipname, int move_cargo );
220credits_t player_shipPrice( const char *shipname, int count_unique );
221void player_rmShip( const char *shipname );
222void player_rmPlayerShip( PlayerShip_t *ps );
223
224/*
225 * Player outfits.
226 */
227int player_outfitOwned( const Outfit *o );
228int player_outfitOwnedTotal( const Outfit* o );
229const PlayerOutfit_t* player_getOutfits (void);
230int player_getOutfitsFiltered( const Outfit ***outfits,
231 int(*filter)( const Outfit *o ), const char *name );
232int player_numOutfits (void);
233int player_addOutfit( const Outfit *o, int quantity );
234int player_rmOutfit( const Outfit *o, int quantity );
235
236/*
237 * Player missions.
238 */
239void player_missionFinished( int id );
240int player_missionAlreadyDone( int id );
241int* player_missionsDoneList (void); /* Returns array that should not be freed. */
242
243/*
244 * Player events.
245 */
246void player_eventFinished( int id );
247int player_eventAlreadyDone( int id );
248int* player_eventsDoneList (void); /* Returns array that should not be freed. */
249
250/*
251 * Licenses.
252 */
253NONNULL( 1 ) void player_addLicense( const char *license );
254int player_hasLicense( const char *license );
255const char **player_getLicenses (void);
256
257/*
258 * Escorts.
259 */
260int player_addEscorts (void);
261
262/*
263 * Pilot related stuff.
264 */
265void player_dead (void);
266void player_destroyed (void);
267void player_think( Pilot* pplayer, const double dt );
268void player_update( Pilot *pplayer, const double dt );
269void player_updateSpecific( Pilot *pplayer, const double dt );
270void player_brokeHyperspace (void);
271void player_hyperspacePreempt( int );
272int player_getHypPreempt(void);
273double player_dt_default (void);
274
275/*
276 * Targeting.
277 */
278/* Clearing. */
279void player_targetClear (void);
280void player_targetClearAll (void);
281/* Spobs. */
282void player_targetSpobSet( int id );
283void player_targetSpob (void);
284/* Asteroids. */
285void player_targetAsteroidSet( int id_field, int id );
286/* Hyperspace. */
287void player_targetHyperspaceSet( int id, int autonavcont );
288void player_targetHyperspace (void);
289/* Pilots. */
290void player_targetSet( unsigned int id );
291void player_targetHostile (void);
292void player_targetNext( int mode );
293void player_targetPrev( int mode );
294void player_targetNearest (void);
295void player_targetEscort( int prev );
296
297/*
298 * Keybind actions.
299 */
300void player_weapSetPress( int id, double value, int repeat );
301int player_land( int loud );
302void player_approach (void);
303int player_jump (void);
304void player_screenshot (void);
305void player_accel( double acc );
306void player_accelOver (void);
307void player_hail (void);
308void player_hailSpob (void);
309void player_autohail (void);
310void player_toggleMouseFly (void);
311void player_cooldownBrake (void);
312void player_stealth (void);
void player_messageRaw(const char *str)
Adds a mesg to the queue to be displayed on screen.
Definition gui.c:298
void player_messageToggle(int enable)
Toggles if player should receive messages.
Definition gui.c:288
int snd_jump
Definition player.c:98
int snd_nav
Definition player.c:99
void player_runHooks(void)
Runs hooks for the player.
Definition player.c:3077
void player_new(void)
Creates a new player.
Definition player.c:242
int snd_hypJump
Definition player.c:106
int snd_hypEng
Definition player.c:103
void player_render(double dt)
Renders the player.
Definition player.c:983
int snd_hail
Definition player.c:100
void player_cleanup(void)
Cleans up player stuff like player_stack.
Definition player.c:730
int snd_hypPowDown
Definition player.c:104
PlayerShip_t * player_newShip(const Ship *ship, const char *def_name, int trade, const char *acquired, int noname)
Creates a new ship for player.
Definition player.c:410
void player_renderUnderlay(double dt)
Renders the player underlay.
Definition player.c:1021
void player_addLicense(const char *license)
Gives the player a license.
Definition player.c:3055
int snd_hypPowUpJump
Definition player.c:105
int snd_hypPowUp
Definition player.c:102
int snd_target
Definition player.c:97
Player_t player
Definition player.c:74
int player_init(void)
Initializes player stuff.
Definition player.c:185
A ship outfit, depends radically on the type.
Definition outfit.h:328
A weapon set represents a set of weapons that have an action.
Definition pilot.h:164
The representation of an in-game pilot.
Definition pilot.h:217
Wrapper for outfits.
Definition player.h:65
const Outfit * o
Definition player.h:66
Player ship.
Definition player.h:73
time_t acquired_date
Definition player.h:85
double time_played
Definition player.h:83
double dmg_done_armour
Definition player.h:87
unsigned int death_counter
Definition player.h:93
double dmg_taken_armour
Definition player.h:89
int deployed
Definition player.h:80
double dmg_taken_shield
Definition player.h:88
unsigned int landed_times
Definition player.h:92
Pilot * p
Definition player.h:74
int autoweap
Definition player.h:76
char * acquired
Definition player.h:84
unsigned int jumped_times
Definition player.h:91
double dmg_done_shield
Definition player.h:86
int favourite
Definition player.h:77
Pilot * p
Definition player.h:101
double radar_res
Definition player.h:120
double dmg_done_shield
Definition player.h:132
double mousex
Definition player.h:108
int autonav
Definition player.h:107
unsigned int jumped_times
Definition player.h:137
PlayerShip_t ps
Definition player.h:102
char * name
Definition player.h:103
char * loaded_version
Definition player.h:116
double dmg_done_armour
Definition player.h:133
int fleet_used
Definition player.h:125
time_t last_played
Definition player.h:129
double dmg_taken_armour
Definition player.h:135
char * gui
Definition player.h:119
time_t time_since_save
Definition player.h:142
int map_minimal
Definition player.h:122
double time_played
Definition player.h:130
char * chapter
Definition player.h:111
time_t date_created
Definition player.h:131
int fleet_capacity
Definition player.h:126
double dmg_taken_shield
Definition player.h:134
double speed
Definition player.h:110
char * difficulty
Definition player.h:112
double mousey
Definition player.h:109
unsigned int death_counter
Definition player.h:139
PlayerFlags flags
Definition player.h:106
int discover_off
Definition player.h:113
unsigned int landed_times
Definition player.h:138
int eq_outfitMode
Definition player.h:121
Represents a space ship.
Definition ship.h:94
Abstraction for rendering sprite sheets.
Definition opengl_tex.h:36