[Add] Mission now uses stack.
This commit is contained in:
parent
60e08a9e36
commit
5cbb97b279
@ -13,11 +13,16 @@
|
|||||||
Mission player_missions[MISSION_MAX];
|
Mission player_missions[MISSION_MAX];
|
||||||
|
|
||||||
// Mission stack.
|
// Mission stack.
|
||||||
//static Mission* mission_stack = NULL; // Unmuteable after creation.
|
static Mission* mission_stack = NULL; // Unmuteable after creation.
|
||||||
//static int mission_nstack = 0;
|
static int mission_nstack = 0;
|
||||||
|
|
||||||
|
// Extern.
|
||||||
extern int misn_run(Mission* misn, char* func);
|
extern int misn_run(Mission* misn, char* func);
|
||||||
|
|
||||||
|
// Static.
|
||||||
|
static void mission_cleanup(Mission* misn);
|
||||||
|
static void mission_free(MissionData* mission);
|
||||||
|
|
||||||
// Create a mission.
|
// Create a mission.
|
||||||
int mission_create(MissionData* misn) {
|
int mission_create(MissionData* misn) {
|
||||||
int i;
|
int i;
|
||||||
@ -39,6 +44,36 @@ int mission_create(MissionData* misn) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clean up a mission.
|
||||||
|
static void mission_cleanup(Mission* misn) {
|
||||||
|
misn->data = NULL;
|
||||||
|
if(misn->title) free(misn->title);
|
||||||
|
if(misn->desc) free(misn->desc);
|
||||||
|
if(misn->reward) free(misn->reward);
|
||||||
|
lua_close(misn->L);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Free a mission.
|
||||||
|
static void mission_free(MissionData* mission) {
|
||||||
|
if(mission->name) {
|
||||||
|
free(mission->name);
|
||||||
|
mission->name = NULL;
|
||||||
|
}
|
||||||
|
if(mission->avail.planet) {
|
||||||
|
free(mission->avail.planet);
|
||||||
|
mission->avail.planet = NULL;
|
||||||
|
}
|
||||||
|
if(mission->avail.system) {
|
||||||
|
free(mission->avail.system);
|
||||||
|
mission->avail.system = NULL;
|
||||||
|
}
|
||||||
|
if(mission->avail.factions) {
|
||||||
|
free(mission->avail.factions);
|
||||||
|
mission->avail.factions = NULL;
|
||||||
|
mission->avail.nfactions = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Load/Free.
|
// Load/Free.
|
||||||
int missions_load(void) {
|
int missions_load(void) {
|
||||||
#if 0
|
#if 0
|
||||||
@ -63,6 +98,20 @@ int missions_load(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void missions_free(void) {
|
void missions_free(void) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
// Free the mission data.
|
||||||
|
for(i = 0; i < mission_nstack; i++)
|
||||||
|
mission_free(&mission_stack[i]);
|
||||||
|
free(mission_stack);
|
||||||
|
mission_stack = NULL;
|
||||||
|
mission_nstack = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void missions_cleanup(void) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 0; i < MISSION_MAX; i++)
|
||||||
|
mission_cleanup(&player_missions[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,4 +48,5 @@ extern Mission player_mission[MISSION_MAX];
|
|||||||
// Load/Quit.
|
// Load/Quit.
|
||||||
int missions_load(void);
|
int missions_load(void);
|
||||||
void missions_free(void);
|
void missions_free(void);
|
||||||
|
void missions_cleanup(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user