naev 0.11.5
mission.h
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
4#pragma once
5
6#define PCRE2_CODE_UNIT_WIDTH 8
7#include <pcre2.h>
8
9#include "claim.h"
10#include "commodity.h"
11#include "nlua.h"
12#include "nxml.h"
13#include "opengl.h"
14#include "space.h"
15#include "mission_markers.h"
16
17/* availability by location */
18typedef enum MissionAvailability_ {
19 MIS_AVAIL_UNSET=-1,
20 MIS_AVAIL_NONE=0,
21 MIS_AVAIL_COMPUTER,
22 MIS_AVAIL_BAR,
23 MIS_AVAIL_LAND,
24 MIS_AVAIL_ENTER
25} MissionAvailability;
26
27/* flag functions */
28#define mis_isFlag(m,f) ((m)->flags & (f))
29#define mis_setFlag(m,f) ((m)->flags |= (f))
30#define mis_rmFlag(m,f) ((m)->flags &= ~(f))
31/* actual flags */
32#define MISSION_UNIQUE (1<<0)
37typedef struct MissionAvail_s {
38 MissionAvailability loc;
39 int chance;
41 /* For specific cases */
42 char *spob;
43 char *system;
44 char *chapter;
45 pcre2_code *chapter_re;
47 /* For generic cases */
48 int *factions;
50 char *cond;
52 char *done;
56
62typedef struct MissionData_ {
63 char *name;
67 unsigned int flags;
68 char *lua;
69 char *sourcefile;
70 int chunk;
72 /* Tags. */
73 char **tags;
75
81typedef struct Mission_ {
83 unsigned int id;
86 char *title;
87 char *desc;
88 char *reward;
89 credits_t reward_value;
91 char *npc;
92 char *npc_desc;
94 /* mission cargo given to the player - need to cleanup */
95 unsigned int *cargo;
97 /* Markers. */
100 /* OSD. */
101 unsigned int osd;
104 /* Claims. */
105 Claim_t *claims;
107 nlua_env env;
108} Mission;
109
110/*
111 * current player missions
112 */
113extern Mission **player_missions;
115/*
116 * creates missions for a spob and such
117 */
118Mission* missions_genList( int *n, int faction,
119 const Spob *pnt, const StarSystem *sys, MissionAvailability loc );
120int mission_accept( Mission* mission ); /* player accepted mission for computer/bar */
121void missions_run( MissionAvailability loc, int faction, const Spob *pnt, const StarSystem *sys );
122int mission_start( const char *name, unsigned int *id );
123int mission_test( const char *name );
124const char *mission_availabilityStr( MissionAvailability loc );
125
126/*
127 * misc
128 */
129const MissionData *mission_list (void);
130int mission_alreadyRunning( const MissionData* misn );
131int mission_getID( const char* name );
132const MissionData* mission_get( int id );
133const MissionData* mission_getFromName( const char* name );
134int mission_addMarker( Mission *misn, int id, int sys, MissionMarkerType type );
135void mission_sysMark (void);
136const StarSystem* mission_sysComputerMark( const Mission* misn );
137const StarSystem* mission_getSystemMarker( const Mission* misn );
138MissionMarkerType mission_markerTypeSpobToSystem( MissionMarkerType t );
139MissionMarkerType mission_markerTypeSystemToSpob( MissionMarkerType t );
140void mission_toLuaTable( lua_State *L, const MissionData *m );
141const char **mission_loadFailed (void);
142
143/*
144 * cargo stuff
145 */
146int mission_linkCargo( Mission* misn, unsigned int cargo_id );
147int mission_unlinkCargo( Mission* misn, unsigned int cargo_id );
148
149/*
150 * load/quit
151 */
152int missions_load (void);
153int missions_loadActive( xmlNodePtr parent );
154int missions_loadCommodity( xmlNodePtr parent );
155Commodity* missions_loadTempCommodity( xmlNodePtr parent );
156int missions_saveActive( xmlTextWriterPtr writer );
157int missions_saveTempCommodity( xmlTextWriterPtr writer, const Commodity* c );
158void mission_cleanup( Mission* misn );
159void mission_shift( int pos );
160void missions_free (void);
161void missions_cleanup (void);
162int mission_reload( const char *name );
163
164/*
165 * Actually in nlua_misn.h
166 */
167int misn_tryRun( Mission *misn, const char *func );
168void misn_runStart( Mission *misn, const char *func );
169int misn_runFunc( const Mission *misn, const char *func, int nargs );
170int misn_run( Mission *misn, const char *func );
171
172/*
173 * Claims.
174 */
175void missions_activateClaims (void);
int mission_accept(Mission *mission)
Small wrapper for misn_run.
Definition mission.c:206
int missions_saveTempCommodity(xmlTextWriterPtr writer, const Commodity *c)
Saves a temporary commodity's defintion into the current node.
Definition mission.c:1385
Mission ** player_missions
Definition mission.c:47
const StarSystem * mission_getSystemMarker(const Mission *misn)
Gets the first system that has been marked by a mission.
Definition mission.c:656
Mission * missions_genList(int *n, int faction, const Spob *pnt, const StarSystem *sys, MissionAvailability loc)
Generates a mission list. This runs create() so won't work with all missions.
Definition mission.c:914
void mission_cleanup(Mission *misn)
Cleans up a mission.
Definition mission.c:739
int mission_addMarker(Mission *misn, int id, int objid, MissionMarkerType type)
Adds a system marker to a mission.
Definition mission.c:549
const StarSystem * mission_sysComputerMark(const Mission *misn)
Marks the system of the computer mission to reflect where it will head to.
Definition mission.c:603
const MissionData * mission_getFromName(const char *name)
Gets mission data from a name.
Definition mission.c:125
void missions_free(void)
Frees all the mission data.
Definition mission.c:1245
int mission_alreadyRunning(const MissionData *misn)
Checks to see if mission is already running.
Definition mission.c:225
int mission_linkCargo(Mission *misn, unsigned int cargo_id)
Links cargo to the mission for posterior cleanup.
Definition mission.c:701
void missions_activateClaims(void)
Activates mission claims.
Definition mission.c:867
void mission_sysMark(void)
Marks all active systems that need marking.
Definition mission.c:578
void missions_run(MissionAvailability loc, int faction, const Spob *pnt, const StarSystem *sys)
Runs missions matching location, all Lua side and one-shot.
Definition mission.c:321
int missions_loadActive(xmlNodePtr parent)
Loads the player's active missions from a save.
Definition mission.c:1477
void mission_shift(int pos)
Puts the specified mission at the end of the player_missions array.
Definition mission.c:791
int missions_load(void)
Loads all the mission data.
Definition mission.c:1120
Commodity * missions_loadTempCommodity(xmlNodePtr cur)
Loads a temporary commodity.
Definition mission.c:1430
int mission_start(const char *name, unsigned int *id)
Starts a mission.
Definition mission.c:358
int mission_getID(const char *name)
Gets id from mission name.
Definition mission.c:100
int missions_saveActive(xmlTextWriterPtr writer)
Saves the player's active missions.
Definition mission.c:1287
int mission_unlinkCargo(Mission *misn, unsigned int cargo_id)
Unlinks cargo from the mission, removes it from the player.
Definition mission.c:716
const MissionData * mission_list(void)
Returns all the missions.
Definition mission.c:214
int missions_loadCommodity(xmlNodePtr parent)
Loads the player's special mission commodities.
Definition mission.c:1400
int mission_test(const char *name)
Tests the conditionals of a mission.
Definition mission.c:386
void missions_cleanup(void)
Cleans up all the player's active missions.
Definition mission.c:1268
const MissionData * mission_get(int id)
Gets a MissionData based on ID.
Definition mission.c:116
static const double c[]
Definition rng.c:264
Represents a commodity.
Definition commodity.h:43
Defines the availability of a mission.
Definition mission.h:37
MissionAvailability loc
Definition mission.h:38
char * chapter
Definition mission.h:44
int * factions
Definition mission.h:48
char * done
Definition mission.h:52
char * spob
Definition mission.h:42
char * system
Definition mission.h:43
pcre2_code * chapter_re
Definition mission.h:45
char * cond
Definition mission.h:50
Static mission data.
Definition mission.h:62
char * name
Definition mission.h:63
MissionAvail_t avail
Definition mission.h:65
char * lua
Definition mission.h:68
char ** tags
Definition mission.h:73
char * sourcefile
Definition mission.h:69
unsigned int flags
Definition mission.h:67
int chunk
Definition mission.h:70
Mission system marker.
Represents an active mission.
Definition mission.h:81
Claim_t * claims
Definition mission.h:105
unsigned int osd
Definition mission.h:101
char * npc_desc
Definition mission.h:92
unsigned int * cargo
Definition mission.h:95
unsigned int id
Definition mission.h:83
glTexture * portrait
Definition mission.h:90
int osd_set
Definition mission.h:102
nlua_env env
Definition mission.h:107
char * reward
Definition mission.h:88
char * desc
Definition mission.h:87
MissionMarker * markers
Definition mission.h:98
char * title
Definition mission.h:86
const MissionData * data
Definition mission.h:82
credits_t reward_value
Definition mission.h:89
int accepted
Definition mission.h:84
char * npc
Definition mission.h:91
Represents a Space Object (SPOB), including and not limited to planets, stations, wormholes,...
Definition space.h:89
Abstraction for rendering sprite sheets.
Definition opengl_tex.h:36