naev 0.10.4
ship.h
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
4#pragma once
5
6#include "collision.h"
7#include "commodity.h"
8#include "nxml.h"
9#include "object.h"
10#include "opengl.h"
11#include "outfit.h"
12#include "sound.h"
13#include "spfx.h"
14
15/* Target gfx dimensions */
16/* TODO remove this and handle it all in the GUIs */
17#define SHIP_TARGET_W 128
18#define SHIP_TARGET_H 128
20/* Ship Flags. */
21#define SHIP_NOPLAYER (1<<0)
22#define SHIP_NOESCORT (1<<1)
23#define SHIP_UNIQUE (1<<2)
24#define ship_isFlag(s,f) ((s)->flags & (f))
25#define ship_setFlag(s,f) ((s)->flags |= (f))
26#define ship_rmFlag(s,f) ((s)->flags &= ~(f))
36typedef enum ShipClass_ {
37 SHIP_CLASS_NULL,
38 /* Civilian. */
39 SHIP_CLASS_YACHT,
40 SHIP_CLASS_COURIER,
41 SHIP_CLASS_FREIGHTER,
42 SHIP_CLASS_ARMOURED_TRANSPORT,
43 SHIP_CLASS_BULK_FREIGHTER,
44 /* Military. */
45 SHIP_CLASS_SCOUT,
46 SHIP_CLASS_INTERCEPTOR,
47 SHIP_CLASS_FIGHTER,
48 SHIP_CLASS_BOMBER,
49 SHIP_CLASS_CORVETTE,
50 SHIP_CLASS_DESTROYER,
51 SHIP_CLASS_CRUISER,
52 SHIP_CLASS_BATTLESHIP,
53 SHIP_CLASS_CARRIER,
55 SHIP_CLASS_TOTAL,
56} ShipClass;
57
61typedef struct ShipMount_ {
62 double x;
63 double y;
64 double h;
65} ShipMount;
66
70typedef struct ShipOutfitSlot_ {
72 char *name;
75 int locked;
76 const Outfit *data;
79
83typedef struct ShipTrailEmitter_ {
84 double x_engine;
85 double y_engine;
86 double h_engine;
87 unsigned int always_under;
90
94typedef struct Ship_ {
95 char *name;
96 char *base_type;
97 ShipClass class;
99 int points;
100 int rarity;
101 int flags;
103 /* store stuff */
104 credits_t price;
105 char *license;
106 char *cond;
107 char *condstr;
111 /* movement */
112 double thrust;
113 double turn;
114 double speed;
116 /* characteristics */
117 int crew;
118 double mass;
119 double cpu;
120 int fuel;
122 double cap_cargo;
123 double dt_default;
125 /* health */
126 double armour;
128 double shield;
130 double energy;
132 double dmg_absorb;
134 /* Graphics */
141 char* gfx_comm;
145 /* Collision polygon */
148 /* GUI interface */
149 char* gui;
151 /* Sound */
152 int sound;
155 /* Outfits */
160 /* Mounts */
161 double mangle;
163 /* Statistics. */
168 /* Tags. */
169 char **tags;
170} Ship;
171
172/*
173 * Load/quit
174 */
175int ships_load (void);
176void ships_free (void);
177
178/*
179 * Getters.
180 */
181const Ship* ship_get( const char* name );
182const Ship* ship_getW( const char* name );
183const char *ship_existsCase( const char* name );
184const Ship* ship_getAll (void);
185const char* ship_class( const Ship* s );
186const char* ship_classDisplay( const Ship* s );
187const char *ship_classToString( ShipClass class );
188ShipClass ship_classFromString( const char* str );
189credits_t ship_basePrice( const Ship* s );
190credits_t ship_buyPrice( const Ship* s );
191glTexture* ship_loadCommGFX( const Ship* s );
192int ship_size( const Ship *s );
193
194/*
195 * Misc.
196 */
197int ship_compareTech( const void *arg1, const void *arg2 );
int ship_size(const Ship *s)
Gets the size of the ship.
Definition: ship.c:302
ShipClass ship_classFromString(const char *str)
Gets the machine ship class identifier from a human readable string.
Definition: ship.c:222
const char * ship_class(const Ship *s)
Gets the ship's class name in human readable form.
Definition: ship.c:151
const char * ship_classDisplay(const Ship *s)
Gets the ship's display class in human readable form.
Definition: ship.c:162
credits_t ship_basePrice(const Ship *s)
Gets the ship's base price (no outfits).
Definition: ship.c:252
credits_t ship_buyPrice(const Ship *s)
The ship buy price, includes default outfits.
Definition: ship.c:260
const Ship * ship_getW(const char *name)
Gets a ship based on its name without warning.
Definition: ship.c:87
int ships_load(void)
Loads all the ships in the data files.
Definition: ship.c:1021
const Ship * ship_getAll(void)
Gets the array (array.h) of all ships.
Definition: ship.c:107
void ships_free(void)
Frees all the ships.
Definition: ship.c:1072
int ship_compareTech(const void *arg1, const void *arg2)
Comparison function for qsort().
Definition: ship.c:115
const char * ship_classToString(ShipClass class)
Gets the ship class name in human readable form.
Definition: ship.c:175
glTexture * ship_loadCommGFX(const Ship *s)
Loads the ship's comm graphic.
Definition: ship.c:289
const Ship * ship_get(const char *name)
Gets a ship based on its name.
Definition: ship.c:73
const char * ship_existsCase(const char *name)
Checks to see if an ship exists matching name (case insensitive).
Definition: ship.c:96
Represents a polygon used for collision detection.
Definition: collision.h:13
Definition: object.c:50
Pilot slot that can contain outfits.
Definition: outfit.h:101
A ship outfit, depends radically on the type.
Definition: outfit.h:304
Represents a ship weapon mount point.
Definition: ship.h:61
double x
Definition: ship.h:62
double y
Definition: ship.h:63
double h
Definition: ship.h:64
Ship outfit slot.
Definition: ship.h:70
int exclusive
Definition: ship.h:73
int required
Definition: ship.h:74
const Outfit * data
Definition: ship.h:76
char * name
Definition: ship.h:72
ShipMount mount
Definition: ship.h:77
OutfitSlot slot
Definition: ship.h:71
int locked
Definition: ship.h:75
Represents relative ship statistics as a linked list.
Definition: shipstats.h:167
Represents ship statistics, properties ship can use.
Definition: shipstats.h:198
Ship trail emitter.
Definition: ship.h:83
double y_engine
Definition: ship.h:85
const TrailSpec * trail_spec
Definition: ship.h:88
double h_engine
Definition: ship.h:86
double x_engine
Definition: ship.h:84
unsigned int always_under
Definition: ship.h:87
Represents a space ship.
Definition: ship.h:94
double shield_regen
Definition: ship.h:129
double dt_default
Definition: ship.h:123
double cap_cargo
Definition: ship.h:122
glTexture * gfx_space
Definition: ship.h:137
ShipStats stats_array
Definition: ship.h:166
int flags
Definition: ship.h:101
char * license
Definition: ship.h:105
double gfx_3d_scale
Definition: ship.h:136
char * name
Definition: ship.h:95
double thrust
Definition: ship.h:112
int sound
Definition: ship.h:152
int fuel
Definition: ship.h:120
char * fabricator
Definition: ship.h:108
char * description
Definition: ship.h:109
char * base_type
Definition: ship.h:96
char * class_display
Definition: ship.h:98
credits_t price
Definition: ship.h:104
double energy_regen
Definition: ship.h:131
double armour
Definition: ship.h:126
int fuel_consumption
Definition: ship.h:121
double armour_regen
Definition: ship.h:127
glTexture * gfx_target
Definition: ship.h:139
CollPoly * polygon
Definition: ship.h:146
int crew
Definition: ship.h:117
ShipStatList * stats
Definition: ship.h:165
double dmg_absorb
Definition: ship.h:132
double engine_pitch
Definition: ship.h:153
char * condstr
Definition: ship.h:107
char * cond
Definition: ship.h:106
int points
Definition: ship.h:99
double cpu
Definition: ship.h:119
double mangle
Definition: ship.h:161
double speed
Definition: ship.h:114
ShipOutfitSlot * outfit_utility
Definition: ship.h:157
double turn
Definition: ship.h:113
char * desc_stats
Definition: ship.h:164
char ** tags
Definition: ship.h:169
int rarity
Definition: ship.h:100
glTexture * gfx_engine
Definition: ship.h:138
ShipOutfitSlot * outfit_weapon
Definition: ship.h:158
Object * gfx_3d
Definition: ship.h:135
glTexture * gfx_store
Definition: ship.h:140
double energy
Definition: ship.h:130
char * gfx_comm
Definition: ship.h:141
ShipTrailEmitter * trail_emitters
Definition: ship.h:143
char * gui
Definition: ship.h:149
glTexture ** gfx_overlays
Definition: ship.h:142
double shield
Definition: ship.h:128
double mass
Definition: ship.h:118
ShipOutfitSlot * outfit_structure
Definition: ship.h:156
represents a set of styles for trails.
Definition: spfx.h:43
Abstraction for rendering sprite sheets.
Definition: opengl_tex.h:34