naev 0.11.5
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;
112 /* movement */
113 double accel;
114 double turn;
115 double speed;
117 /* characteristics */
118 int crew;
119 double mass;
120 double cpu;
121 int fuel;
123 double cap_cargo;
124 double dt_default;
126 /* health */
127 double armour;
129 double shield;
131 double energy;
133 double dmg_absorb;
135 /* Graphics */
142 char* gfx_comm;
146 /* Collision polygon */
149 /* Sound */
150 int sound;
153 /* Outfits */
159 /* Mounts */
160 double mangle;
162 /* Statistics. */
167 /* Tags. */
168 char **tags;
170 /* Lua function references. Set to LUA_NOREF if not used. */
171 char *lua_file;
172 nlua_env lua_env;
173 double lua_dt;
179} Ship;
180
181/*
182 * Load/quit
183 */
184int ships_load (void);
185void ships_free (void);
186
187/*
188 * Getters.
189 */
190const Ship* ship_get( const char* name );
191const Ship* ship_getW( const char* name );
192const char *ship_existsCase( const char* name );
193const Ship* ship_getAll (void);
194const char* ship_class( const Ship* s );
195const char* ship_classDisplay( const Ship* s );
196const char *ship_classToString( ShipClass class );
197ShipClass ship_classFromString( const char* str );
198credits_t ship_basePrice( const Ship* s );
199credits_t ship_buyPrice( const Ship* s );
200glTexture* ship_loadCommGFX( const Ship* s );
201int ship_size( const Ship *s );
202
203/*
204 * Misc.
205 */
206int ship_compareTech( const void *arg1, const void *arg2 );
int ship_size(const Ship *s)
Gets the size of the ship.
Definition ship.c:316
ShipClass ship_classFromString(const char *str)
Gets the machine ship class identifier from a human readable string.
Definition ship.c:236
const char * ship_class(const Ship *s)
Gets the ship's class name in human readable form.
Definition ship.c:165
const char * ship_classDisplay(const Ship *s)
Gets the ship's display class in human readable form.
Definition ship.c:176
credits_t ship_basePrice(const Ship *s)
Gets the ship's base price (no outfits).
Definition ship.c:266
credits_t ship_buyPrice(const Ship *s)
The ship buy price, includes default outfits.
Definition ship.c:274
const Ship * ship_getW(const char *name)
Gets a ship based on its name without warning.
Definition ship.c:101
int ships_load(void)
Loads all the ships in the data files.
Definition ship.c:1087
const Ship * ship_getAll(void)
Gets the array (array.h) of all ships.
Definition ship.c:121
void ships_free(void)
Frees all the ships.
Definition ship.c:1205
int ship_compareTech(const void *arg1, const void *arg2)
Comparison function for qsort().
Definition ship.c:129
const char * ship_classToString(ShipClass class)
Gets the ship class name in human readable form.
Definition ship.c:189
glTexture * ship_loadCommGFX(const Ship *s)
Loads the ship's comm graphic.
Definition ship.c:303
const Ship * ship_get(const char *name)
Gets a ship based on its name.
Definition ship.c:87
const char * ship_existsCase(const char *name)
Checks to see if an ship exists matching name (case insensitive).
Definition ship.c:110
Represents a polygon used for collision detection.
Definition collision.h:13
Pilot slot that can contain outfits.
Definition outfit.h:109
A ship outfit, depends radically on the type.
Definition outfit.h:328
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:130
double dt_default
Definition ship.h:124
double cap_cargo
Definition ship.h:123
char * desc_extra
Definition ship.h:110
glTexture * gfx_space
Definition ship.h:138
ShipStats stats_array
Definition ship.h:165
int flags
Definition ship.h:101
char * license
Definition ship.h:105
double gfx_3d_scale
Definition ship.h:137
char * name
Definition ship.h:95
int sound
Definition ship.h:150
int fuel
Definition ship.h:121
char * fabricator
Definition ship.h:108
char * description
Definition ship.h:109
int lua_init
Definition ship.h:174
char * base_type
Definition ship.h:96
char * lua_file
Definition ship.h:171
char * class_display
Definition ship.h:98
credits_t price
Definition ship.h:104
int lua_update
Definition ship.h:176
double energy_regen
Definition ship.h:132
double armour
Definition ship.h:127
int fuel_consumption
Definition ship.h:122
double lua_dt
Definition ship.h:173
double armour_regen
Definition ship.h:128
glTexture * gfx_target
Definition ship.h:140
CollPoly * polygon
Definition ship.h:147
int crew
Definition ship.h:118
ShipStatList * stats
Definition ship.h:164
double dmg_absorb
Definition ship.h:133
double engine_pitch
Definition ship.h:151
char * condstr
Definition ship.h:107
char * cond
Definition ship.h:106
int points
Definition ship.h:99
double cpu
Definition ship.h:120
double mangle
Definition ship.h:160
double speed
Definition ship.h:115
ShipOutfitSlot * outfit_utility
Definition ship.h:155
double turn
Definition ship.h:114
char * desc_stats
Definition ship.h:163
char ** tags
Definition ship.h:168
Outfit const ** outfit_intrinsic
Definition ship.h:157
int rarity
Definition ship.h:100
glTexture * gfx_engine
Definition ship.h:139
double accel
Definition ship.h:113
int lua_cleanup
Definition ship.h:175
ShipOutfitSlot * outfit_weapon
Definition ship.h:156
nlua_env lua_env
Definition ship.h:172
Object * gfx_3d
Definition ship.h:136
glTexture * gfx_store
Definition ship.h:141
double energy
Definition ship.h:131
char * gfx_comm
Definition ship.h:142
ShipTrailEmitter * trail_emitters
Definition ship.h:144
int lua_explode_init
Definition ship.h:177
glTexture ** gfx_overlays
Definition ship.h:143
double shield
Definition ship.h:129
double mass
Definition ship.h:119
ShipOutfitSlot * outfit_structure
Definition ship.h:154
int lua_explode_update
Definition ship.h:178
represents a set of styles for trails.
Definition spfx.h:43
Abstraction for rendering sprite sheets.
Definition opengl_tex.h:36