[Fix] Too many missions without any "active missions".
This commit is contained in:
parent
8f7776217b
commit
e536ab4da3
@ -628,6 +628,7 @@ static void mission_menu_abort(unsigned int wid, char* str) {
|
|||||||
mission_cleanup(misn);
|
mission_cleanup(misn);
|
||||||
memmove(misn, &player_missions[pos+1],
|
memmove(misn, &player_missions[pos+1],
|
||||||
sizeof(Mission) * (MISSION_MAX-pos-1));
|
sizeof(Mission) * (MISSION_MAX-pos-1));
|
||||||
|
memset(&player_missions[MISSION_MAX-1], 0, sizeof(Mission));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Regenerate list. */
|
/* Regenerate list. */
|
||||||
|
@ -297,6 +297,7 @@ static int misn_runTopStack(Mission* misn, char* func) {
|
|||||||
if(cur_mission == &player_missions[i]) {
|
if(cur_mission == &player_missions[i]) {
|
||||||
memmove(&player_missions[i], &player_missions[i+1],
|
memmove(&player_missions[i], &player_missions[i+1],
|
||||||
sizeof(Mission) * (MISSION_MAX-i-1));
|
sizeof(Mission) * (MISSION_MAX-i-1));
|
||||||
|
memset(&player_missions[MISSION_MAX-1], 0, sizeof(Mission));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -296,7 +296,8 @@ void mission_sysMark(void) {
|
|||||||
space_clearMarkers();
|
space_clearMarkers();
|
||||||
|
|
||||||
for(i = 0; i < MISSION_MAX; i++) {
|
for(i = 0; i < MISSION_MAX; i++) {
|
||||||
if(player_missions[i].sys_marker != NULL) {
|
if((player_missions[i].id != 0) &&
|
||||||
|
(player_missions[i].sys_marker != NULL)) {
|
||||||
sys = system_get(player_missions[i].sys_marker);
|
sys = system_get(player_missions[i].sys_marker);
|
||||||
sys_setFlag(sys, SYSTEM_MARKED);
|
sys_setFlag(sys, SYSTEM_MARKED);
|
||||||
}
|
}
|
||||||
@ -384,26 +385,21 @@ void missions_update(const double dt) {
|
|||||||
/* Clean up a mission. */
|
/* Clean up a mission. */
|
||||||
void mission_cleanup(Mission* misn) {
|
void mission_cleanup(Mission* misn) {
|
||||||
int i;
|
int i;
|
||||||
if(misn->id != 0) {
|
if(misn->id != 0)
|
||||||
hook_rmParent(misn->id); /* Remove existing hooks. */
|
hook_rmParent(misn->id); /* Remove existing hooks. */
|
||||||
misn->id = 0;
|
|
||||||
}
|
if(misn->title != NULL)
|
||||||
if(misn->title != NULL) {
|
|
||||||
free(misn->title);
|
free(misn->title);
|
||||||
misn->title = NULL;
|
|
||||||
}
|
if(misn->desc != NULL)
|
||||||
if(misn->desc != NULL) {
|
|
||||||
free(misn->desc);
|
free(misn->desc);
|
||||||
misn->desc = NULL;
|
|
||||||
}
|
if(misn->reward != NULL)
|
||||||
if(misn->reward != NULL) {
|
|
||||||
free(misn->reward);
|
free(misn->reward);
|
||||||
misn->reward = NULL;
|
|
||||||
}
|
if(misn->sys_marker != NULL)
|
||||||
if(misn->sys_marker != NULL) {
|
|
||||||
free(misn->sys_marker);
|
free(misn->sys_marker);
|
||||||
misn->sys_marker = NULL;
|
|
||||||
}
|
|
||||||
if(misn->cargo != NULL) {
|
if(misn->cargo != NULL) {
|
||||||
for(i = 0; i < misn->ncargo; i++) { /* Must unlink all the cargo. */
|
for(i = 0; i < misn->ncargo; i++) { /* Must unlink all the cargo. */
|
||||||
if(player != NULL) /* Only remove if player exists. */
|
if(player != NULL) /* Only remove if player exists. */
|
||||||
@ -411,20 +407,16 @@ void mission_cleanup(Mission* misn) {
|
|||||||
mission_unlinkCargo(misn, misn->cargo[i]);
|
mission_unlinkCargo(misn, misn->cargo[i]);
|
||||||
}
|
}
|
||||||
free(misn->cargo);
|
free(misn->cargo);
|
||||||
misn->cargo = NULL;
|
|
||||||
misn->ncargo = 0;
|
|
||||||
}
|
}
|
||||||
for(i = 0; i < MISSION_TIMER_MAX; i++) {
|
for(i = 0; i < MISSION_TIMER_MAX; i++) {
|
||||||
misn->timer[i] = 0.;
|
if(misn->tfunc[i] != NULL)
|
||||||
if(misn->tfunc[i] != NULL) {
|
|
||||||
free(misn->tfunc[i]);
|
free(misn->tfunc[i]);
|
||||||
misn->tfunc[i] = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(misn->L) {
|
if(misn->L)
|
||||||
lua_close(misn->L);
|
lua_close(misn->L);
|
||||||
misn->L = NULL;
|
|
||||||
}
|
/* Clear the memory. */
|
||||||
|
memset(misn, 0, sizeof(Mission));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free a mission. */
|
/* Free a mission. */
|
||||||
|
Loading…
Reference in New Issue
Block a user