naev 0.10.4
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;
51 char *done;
55
61typedef struct MissionData_ {
62 char *name;
66 unsigned int flags;
67 char *lua;
68 char *sourcefile;
70 /* Tags. */
71 char **tags;
73
79typedef struct Mission_ {
81 unsigned int id;
84 char *title;
85 char *desc;
86 char *reward;
87 credits_t reward_value;
89 char *npc;
90 char *npc_desc;
92 /* mission cargo given to the player - need to cleanup */
93 unsigned int *cargo;
95 /* Markers. */
98 /* OSD. */
99 unsigned int osd;
102 /* Claims. */
103 Claim_t *claims;
105 nlua_env env;
106} Mission;
107
108/*
109 * current player missions
110 */
111extern Mission **player_missions;
113/*
114 * creates missions for a spob and such
115 */
116Mission* missions_genList( int *n, int faction,
117 const Spob *pnt, const StarSystem *sys, MissionAvailability loc );
118int mission_accept( Mission* mission ); /* player accepted mission for computer/bar */
119void missions_run( MissionAvailability loc, int faction, const Spob *pnt, const StarSystem *sys );
120int mission_start( const char *name, unsigned int *id );
121
122/*
123 * misc
124 */
125int mission_alreadyRunning( const MissionData* misn );
126int mission_getID( const char* name );
127const MissionData* mission_get( int id );
128const MissionData* mission_getFromName( const char* name );
129int mission_addMarker( Mission *misn, int id, int sys, MissionMarkerType type );
130void mission_sysMark (void);
131const StarSystem* mission_sysComputerMark( const Mission* misn );
132const StarSystem* mission_getSystemMarker( const Mission* misn );
133MissionMarkerType mission_markerTypeSpobToSystem( MissionMarkerType t );
134MissionMarkerType mission_markerTypeSystemToSpob( MissionMarkerType t );
135void mission_toLuaTable( lua_State *L, const MissionData *m );
136
137/*
138 * cargo stuff
139 */
140int mission_linkCargo( Mission* misn, unsigned int cargo_id );
141int mission_unlinkCargo( Mission* misn, unsigned int cargo_id );
142
143/*
144 * load/quit
145 */
146int missions_load (void);
147int missions_loadActive( xmlNodePtr parent );
148int missions_loadCommodity( xmlNodePtr parent );
149Commodity* missions_loadTempCommodity( xmlNodePtr parent );
150int missions_saveActive( xmlTextWriterPtr writer );
151int missions_saveTempCommodity( xmlTextWriterPtr writer, const Commodity* c );
152void mission_cleanup( Mission* misn );
153void mission_shift( int pos );
154void missions_free (void);
155void missions_cleanup (void);
156int mission_reload( const char *name );
157
158/*
159 * Actually in nlua_misn.h
160 */
161int misn_tryRun( Mission *misn, const char *func );
162void misn_runStart( Mission *misn, const char *func );
163int misn_runFunc( Mission *misn, const char *func, int nargs );
164int misn_run( Mission *misn, const char *func );
165
166/*
167 * Claims.
168 */
169void missions_activateClaims (void);
int mission_accept(Mission *mission)
Small wrapper for misn_run.
Definition: mission.c:199
int missions_saveTempCommodity(xmlTextWriterPtr writer, const Commodity *c)
Saves a temporary commodity's defintion into the current node.
Definition: mission.c:1284
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:594
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:846
void mission_cleanup(Mission *misn)
Cleans up a mission.
Definition: mission.c:677
int mission_addMarker(Mission *misn, int id, int objid, MissionMarkerType type)
Adds a system marker to a mission.
Definition: mission.c:487
const StarSystem * mission_sysComputerMark(const Mission *misn)
Marks the system of the computer mission to reflect where it will head to.
Definition: mission.c:541
const MissionData * mission_getFromName(const char *name)
Gets mission data from a name.
Definition: mission.c:123
void missions_free(void)
Frees all the mission data.
Definition: mission.c:1160
int mission_alreadyRunning(const MissionData *misn)
Checks to see if mission is already running.
Definition: mission.c:210
int mission_linkCargo(Mission *misn, unsigned int cargo_id)
Links cargo to the mission for posterior cleanup.
Definition: mission.c:639
void missions_activateClaims(void)
Activates mission claims.
Definition: mission.c:799
void mission_sysMark(void)
Marks all active systems that need marking.
Definition: mission.c:516
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:301
int missions_loadActive(xmlNodePtr parent)
Loads the player's active missions from a save.
Definition: mission.c:1376
void mission_shift(int pos)
Puts the specified mission at the end of the player_missions array.
Definition: mission.c:729
int missions_load(void)
Loads all the mission data.
Definition: mission.c:1041
Commodity * missions_loadTempCommodity(xmlNodePtr cur)
Loads a temporary commodity.
Definition: mission.c:1329
int mission_start(const char *name, unsigned int *id)
Starts a mission.
Definition: mission.c:338
int mission_getID(const char *name)
Gets id from mission name.
Definition: mission.c:98
int missions_saveActive(xmlTextWriterPtr writer)
Saves the player's active missions.
Definition: mission.c:1194
int mission_unlinkCargo(Mission *misn, unsigned int cargo_id)
Unlinks cargo from the mission, removes it from the player.
Definition: mission.c:654
int missions_loadCommodity(xmlNodePtr parent)
Loads the player's special mission commodities.
Definition: mission.c:1299
void missions_cleanup(void)
Cleans up all the player's active missions.
Definition: mission.c:1179
const MissionData * mission_get(int id)
Gets a MissionData based on ID.
Definition: mission.c:114
int misn_tryRun(Mission *misn, const char *func)
Tries to run a mission, but doesn't err if it fails.
Definition: nlua_misn.c:148
void misn_runStart(Mission *misn, const char *func)
Sets up the mission to run misn_runFunc.
Definition: nlua_misn.c:195
int misn_runFunc(Mission *misn, const char *func, int nargs)
Runs a mission set up with misn_runStart.
Definition: nlua_misn.c:215
int misn_run(Mission *misn, const char *func)
Runs a mission function.
Definition: nlua_misn.c:169
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
int priority
Definition: mission.h:53
char * done
Definition: mission.h:51
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:61
char * name
Definition: mission.h:62
MissionAvail_t avail
Definition: mission.h:64
char * lua
Definition: mission.h:67
char ** tags
Definition: mission.h:71
char * sourcefile
Definition: mission.h:68
unsigned int flags
Definition: mission.h:66
Mission system marker.
Represents an active mission.
Definition: mission.h:79
Claim_t * claims
Definition: mission.h:103
unsigned int osd
Definition: mission.h:99
char * npc_desc
Definition: mission.h:90
unsigned int * cargo
Definition: mission.h:93
unsigned int id
Definition: mission.h:81
glTexture * portrait
Definition: mission.h:88
int osd_set
Definition: mission.h:100
nlua_env env
Definition: mission.h:105
char * reward
Definition: mission.h:86
char * desc
Definition: mission.h:85
MissionMarker * markers
Definition: mission.h:96
char * title
Definition: mission.h:84
const MissionData * data
Definition: mission.h:80
credits_t reward_value
Definition: mission.h:87
int accepted
Definition: mission.h:82
char * npc
Definition: mission.h:89
Represents a Space Object (SPOB), including and not limited to planets, stations, wormholes,...
Definition: space.h:88
Abstraction for rendering sprite sheets.
Definition: opengl_tex.h:34