naev 0.12.6
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 "mission_markers.h"
12#include "nlua.h"
13#include "space.h"
14
15/* availability by location */
16typedef enum MissionAvailability_ {
17 MIS_AVAIL_UNSET = -1,
18 MIS_AVAIL_NONE = 0,
19 MIS_AVAIL_COMPUTER,
20 MIS_AVAIL_BAR,
21 MIS_AVAIL_LAND,
22 MIS_AVAIL_ENTER
24} MissionAvailability;
25
26/* flag functions */
27#define mis_isFlag( m, f ) ( ( m )->flags & ( f ) )
28#define mis_setFlag( m, f ) ( ( m )->flags |= ( f ) )
29#define mis_rmFlag( m, f ) ( ( m )->flags &= ~( f ) )
30/* actual flags */
31#define MISSION_UNIQUE ( 1 << 0 )
32
36typedef struct MissionAvail_s {
37 MissionAvailability loc;
38 int chance;
41
42 /* For specific cases */
43 char *spob;
44 char *system;
45 char *chapter;
46 pcre2_code *chapter_re;
47
48 /* For generic cases */
49 int *factions;
50
51 char *cond;
53 char *done;
54
58
64typedef struct MissionData_ {
65 char *name;
66
68
69 unsigned int flags;
70 char *lua;
71 char *sourcefile;
72 int chunk;
73
74 /* Tags. */
75 char **tags;
77
83typedef struct Mission_ {
85 unsigned int
88
89 /* Information displayed to the user. */
90 char *title;
91 char *desc;
92 char *reward;
94
95 /* Npc stuff. */
96 char *npc;
97 char *npc_desc;
98
99 /* Meta-data, used for sorting and the likes. */
100 credits_t reward_value;
101 unsigned int distance;
104
105 /* mission cargo given to the player - need to cleanup */
106 unsigned int *cargo;
107
108 /* Markers. */
110
111 /* OSD. */
112 unsigned int osd;
116
117 /* Claims. */
118 Claim_t *claims;
119
120 nlua_env env;
121} Mission;
122
123/*
124 * current player missions
125 */
126extern Mission **player_missions;
127
128/*
129 * creates missions for a spob and such
130 */
131Mission *missions_genList( int faction, const Spob *pnt, const StarSystem *sys,
132 MissionAvailability loc );
134 Mission *mission ); /* player accepted mission for computer/bar */
135void missions_run( MissionAvailability loc, int faction, const Spob *pnt,
136 const StarSystem *sys );
137int mission_start( const char *name, unsigned int *id );
138int mission_test( const char *name );
139const char *mission_availabilityStr( MissionAvailability loc );
140
141/*
142 * misc
143 */
144int mission_compare( const void *arg1, const void *arg2 );
145const MissionData *mission_list( void );
146int mission_alreadyRunning( const MissionData *misn );
147int mission_getID( const char *name );
148const MissionData *mission_get( int id );
149const MissionData *mission_getFromName( const char *name );
150int mission_addMarker( Mission *misn, int id, int sys, MissionMarkerType type );
151void mission_sysMark( void );
152const StarSystem *mission_sysComputerMark( const Mission *misn );
153const StarSystem *mission_getSystemMarker( const Mission *misn );
154MissionMarkerType mission_markerTypeSpobToSystem( MissionMarkerType t );
155MissionMarkerType mission_markerTypeSystemToSpob( MissionMarkerType t );
156void mission_toLuaTable( lua_State *L, const MissionData *m );
157const char **mission_loadFailed( void );
158void misn_osdSetHide( Mission *misn, int hide );
159int misn_osdGetHide( const Mission *misn );
160void misn_osdSetPriority( Mission *misn, int priority );
161int misn_osdGetPriority( const Mission *misn );
162
163/*
164 * cargo stuff
165 */
166int mission_linkCargo( Mission *misn, unsigned int cargo_id );
167int mission_unlinkCargo( Mission *misn, unsigned int cargo_id );
168
169/*
170 * load/quit
171 */
172int missions_load( void );
173int missions_loadActive( xmlNodePtr parent );
174int missions_loadCommodity( xmlNodePtr parent );
175Commodity *missions_loadTempCommodity( xmlNodePtr parent );
176int missions_saveActive( xmlTextWriterPtr writer );
177int missions_saveTempCommodity( xmlTextWriterPtr writer, const Commodity *c );
178void mission_cleanup( Mission *misn );
179void mission_shift( int pos );
180void missions_free( void );
181void missions_cleanup( void );
182int mission_reload( const char *name );
183
184/*
185 * Actually in nlua_misn.h
186 */
187int misn_tryRun( Mission *misn, const char *func );
188void misn_runStart( Mission *misn, const char *func );
189int misn_runFunc( const Mission *misn, const char *func, int nargs );
190int misn_run( Mission *misn, const char *func );
191
192/*
193 * Claims.
194 */
195void missions_activateClaims( void );
int mission_accept(Mission *mission)
Small wrapper for misn_run.
Definition mission.c:210
int mission_compare(const void *arg1, const void *arg2)
Compares to missions to see which has more priority.
Definition mission.c:921
int missions_saveTempCommodity(xmlTextWriterPtr writer, const Commodity *c)
Saves a temporary commodity's defintion into the current node.
Definition mission.c:1444
Mission ** player_missions
Definition mission.c:45
const StarSystem * mission_getSystemMarker(const Mission *misn)
Gets the first system that has been marked by a mission.
Definition mission.c:695
void mission_cleanup(Mission *misn)
Cleans up a mission.
Definition mission.c:779
Mission * missions_genList(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:954
int mission_addMarker(Mission *misn, int id, int objid, MissionMarkerType type)
Adds a system marker to a mission.
Definition mission.c:586
const StarSystem * mission_sysComputerMark(const Mission *misn)
Marks the system of the computer mission to reflect where it will head to.
Definition mission.c:642
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:1304
int mission_alreadyRunning(const MissionData *misn)
Checks to see if mission is already running.
Definition mission.c:229
int mission_linkCargo(Mission *misn, unsigned int cargo_id)
Links cargo to the mission for posterior cleanup.
Definition mission.c:741
void missions_activateClaims(void)
Activates mission claims.
Definition mission.c:911
void mission_sysMark(void)
Marks all active systems that need marking.
Definition mission.c:616
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:326
int missions_loadActive(xmlNodePtr parent)
Loads the player's active missions from a save.
Definition mission.c:1535
void mission_shift(int pos)
Puts the specified mission at the end of the player_missions array.
Definition mission.c:835
int missions_load(void)
Loads all the mission data.
Definition mission.c:1168
void misn_osdSetHide(Mission *misn, int hide)
Sets the hide state of the mission OSD.
Definition mission.c:521
Commodity * missions_loadTempCommodity(xmlNodePtr cur)
Loads a temporary commodity.
Definition mission.c:1488
int mission_start(const char *name, unsigned int *id)
Starts a mission.
Definition mission.c:365
int mission_getID(const char *name)
Gets id from mission name.
Definition mission.c:99
int missions_saveActive(xmlTextWriterPtr writer)
Saves the player's active missions.
Definition mission.c:1348
int mission_unlinkCargo(Mission *misn, unsigned int cargo_id)
Unlinks cargo from the mission, removes it from the player.
Definition mission.c:756
const MissionData * mission_list(void)
Returns all the missions.
Definition mission.c:218
int missions_loadCommodity(xmlNodePtr parent)
Loads the player's special mission commodities.
Definition mission.c:1459
int mission_test(const char *name)
Tests the conditionals of a mission.
Definition mission.c:398
void missions_cleanup(void)
Cleans up all the player's active missions.
Definition mission.c:1327
const MissionData * mission_get(int id)
Gets a MissionData based on ID.
Definition mission.c:115
static const double c[]
Definition rng.c:256
Represents a commodity.
Definition commodity.h:57
Defines the availability of a mission.
Definition mission.h:36
MissionAvailability loc
Definition mission.h:37
char * chapter
Definition mission.h:45
int * factions
Definition mission.h:49
char * done
Definition mission.h:53
char * spob
Definition mission.h:43
char * system
Definition mission.h:44
pcre2_code * chapter_re
Definition mission.h:46
char * cond
Definition mission.h:51
Static mission data.
Definition mission.h:64
char * name
Definition mission.h:65
MissionAvail_t avail
Definition mission.h:67
char * lua
Definition mission.h:70
char ** tags
Definition mission.h:75
char * sourcefile
Definition mission.h:71
unsigned int flags
Definition mission.h:69
int chunk
Definition mission.h:72
Mission system marker.
Represents an active mission.
Definition mission.h:83
Claim_t * claims
Definition mission.h:118
int osd_hide
Definition mission.h:114
unsigned int osd
Definition mission.h:112
unsigned int distance
Definition mission.h:101
char * npc_desc
Definition mission.h:97
unsigned int * cargo
Definition mission.h:106
unsigned int id
Definition mission.h:86
glTexture * portrait
Definition mission.h:93
int osd_set
Definition mission.h:113
int illegal
Definition mission.h:102
nlua_env env
Definition mission.h:120
char * reward
Definition mission.h:92
char * desc
Definition mission.h:91
MissionMarker * markers
Definition mission.h:109
char * title
Definition mission.h:90
const MissionData * data
Definition mission.h:84
int faction
Definition mission.h:103
credits_t reward_value
Definition mission.h:100
int accepted
Definition mission.h:87
int osd_priority
Definition mission.h:115
char * npc
Definition mission.h:96
Represents a Space Object (SPOB), including and not limited to planets, stations, wormholes,...
Definition space.h:102
Abstraction for rendering sprite sheets.
Definition opengl_tex.h:43