[Add] Save player variables.
This commit is contained in:
parent
bc935960f8
commit
9c1a094f36
@ -12,6 +12,7 @@
|
|||||||
#include "pilot.h"
|
#include "pilot.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
#include "ltime.h"
|
#include "ltime.h"
|
||||||
|
#include "xml.h"
|
||||||
#include "misn_lua.h"
|
#include "misn_lua.h"
|
||||||
|
|
||||||
#define MISN_DEBUG(str, args...) (fprintf(stdout, "Mission '%s': "str"\n", \
|
#define MISN_DEBUG(str, args...) (fprintf(stdout, "Mission '%s': "str"\n", \
|
||||||
@ -222,6 +223,41 @@ int misn_run(Mission* misn, char* func) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save the mission variables.
|
||||||
|
int var_save(xmlTextWriterPtr writer) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
xmlw_startElem(writer, "vars");
|
||||||
|
|
||||||
|
for(i = 0; i < var_nstack; i++) {
|
||||||
|
xmlw_startElem(writer, "vars");
|
||||||
|
|
||||||
|
xmlw_attr(writer, "name", var_stack[i].name);
|
||||||
|
|
||||||
|
switch(var_stack[i].type) {
|
||||||
|
case MISN_VAR_NIL:
|
||||||
|
xmlw_attr(writer, "type", "nil");
|
||||||
|
break;
|
||||||
|
case MISN_VAR_NUM:
|
||||||
|
xmlw_attr(writer, "type", "num");
|
||||||
|
xmlw_str(writer, "%d", var_stack[i].d.num);
|
||||||
|
break;
|
||||||
|
case MISN_VAR_BOOL:
|
||||||
|
xmlw_attr(writer, "type", "bool");
|
||||||
|
xmlw_str(writer, "%d", var_stack[i].d.b);
|
||||||
|
break;
|
||||||
|
case MISN_VAR_STR:
|
||||||
|
xmlw_attr(writer, "type", "str");
|
||||||
|
xmlw_str(writer, var_stack[i].d.str);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
xmlw_endElem(writer); // var.
|
||||||
|
}
|
||||||
|
xmlw_endElem(writer); // vars.
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// -- Lephisto. --
|
// -- Lephisto. --
|
||||||
static int lephisto_lang(lua_State* L) {
|
static int lephisto_lang(lua_State* L) {
|
||||||
// TODO: multilanguage stuff.
|
// TODO: multilanguage stuff.
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
// Externs.
|
// Externs.
|
||||||
extern int player_save(xmlTextWriterPtr writer);
|
extern int player_save(xmlTextWriterPtr writer);
|
||||||
extern int missions_save(xmlTextWriterPtr writer);
|
extern int missions_save(xmlTextWriterPtr writer);
|
||||||
|
extern int var_save(xmlTextWriterPtr writer); // misn var.
|
||||||
// Static.
|
// Static.
|
||||||
static int save_data(xmlTextWriterPtr writer);
|
static int save_data(xmlTextWriterPtr writer);
|
||||||
|
|
||||||
@ -13,6 +14,7 @@ static int save_data(xmlTextWriterPtr writer) {
|
|||||||
// The data itself.
|
// The data itself.
|
||||||
if(player_save(writer) < 0) return -1;
|
if(player_save(writer) < 0) return -1;
|
||||||
if(missions_save(writer) < 0) return -1;
|
if(missions_save(writer) < 0) return -1;
|
||||||
|
if(var_save(writer) < 0) return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user