[Fix] Mission var stuff.
This commit is contained in:
parent
a6bca29fa1
commit
209e75bda1
@ -31,9 +31,7 @@
|
||||
</mission>
|
||||
<mission name = "Empire Shipping">
|
||||
<lua>es_cargo</lua>
|
||||
<req>
|
||||
<flag>req_esd</flag>
|
||||
</req>
|
||||
<req>es_cargo</req>
|
||||
<avail>
|
||||
<chance>350</chance>
|
||||
<location>Computer</location>
|
||||
|
@ -46,6 +46,8 @@ static int var_mstack = 0;
|
||||
static Mission* cur_mission = NULL;
|
||||
static int misn_delete = 0; // If 1 delete current mission.
|
||||
|
||||
static void var_free(misn_var* var);
|
||||
|
||||
// -- Libraries. --
|
||||
|
||||
// Lephisto.
|
||||
@ -329,18 +331,7 @@ static int var_pop(lua_State* L) {
|
||||
|
||||
for(i = 0; i < var_nstack; i++)
|
||||
if(strcmp(str, var_stack[i].name)==0) {
|
||||
switch(var_stack[i].type) {
|
||||
case MISN_VAR_STR:
|
||||
if(var_stack[i].d.str != NULL) {
|
||||
free(var_stack[i].d.str);
|
||||
var_stack[i].d.str = NULL;
|
||||
}
|
||||
break;
|
||||
case MISN_VAR_NIL:
|
||||
case MISN_VAR_NUM:
|
||||
case MISN_VAR_BOOL:
|
||||
break;
|
||||
}
|
||||
var_free(&var_stack[i]);
|
||||
memmove(&var_stack[i], &var_stack[i+1], sizeof(misn_var)*(var_nstack-i-1));
|
||||
var_stack--;
|
||||
return 0;
|
||||
@ -408,6 +399,37 @@ static int var_push(lua_State* L) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void var_free(misn_var* var) {
|
||||
switch(var->type) {
|
||||
case MISN_VAR_STR:
|
||||
if(var->d.str != NULL) {
|
||||
free(var->d.str);
|
||||
var->d.str = NULL;
|
||||
}
|
||||
break;
|
||||
case MISN_VAR_NIL:
|
||||
case MISN_VAR_NUM:
|
||||
case MISN_VAR_BOOL:
|
||||
break;
|
||||
}
|
||||
if(var->name != NULL) {
|
||||
free(var->name);
|
||||
var->name = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void var_cleanup(void) {
|
||||
int i;
|
||||
for(i = 0; i < var_nstack; i++)
|
||||
var_free(&var_stack[i]);
|
||||
|
||||
if(var_stack != NULL) free(var_stack);
|
||||
var_stack = NULL;
|
||||
var_nstack = 0;
|
||||
var_mstack = 0;
|
||||
}
|
||||
|
||||
// -- Space. --
|
||||
static int space_getPlanet(lua_State* L) {
|
||||
int i;
|
||||
int *factions;
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
// Check if a flag exists on the variable stack.
|
||||
int var_checkflag(char* str);
|
||||
void var_cleanup(void);
|
||||
|
||||
// Load the libraries for a lua state.
|
||||
int misn_loadLibs(lua_State* L);
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "menu.h"
|
||||
#include "toolkit.h"
|
||||
#include "mission.h"
|
||||
#include "misn_lua.h"
|
||||
#include "player.h"
|
||||
|
||||
#define XML_GUI_ID "GUIs" // XML section identifier.
|
||||
@ -152,6 +153,9 @@ void player_new(void) {
|
||||
// Cleanup player stuff if we'll be re-creating.
|
||||
player_cleanup();
|
||||
|
||||
// Cleanup stacks.
|
||||
var_cleanup();
|
||||
|
||||
player_name = dialogue_input("Player Name", 3, 20,
|
||||
"Please tell me your name:");
|
||||
player_newMake();
|
||||
|
Loading…
Reference in New Issue
Block a user