[Add] Save player variables.
This commit is contained in:
parent
bc935960f8
commit
9c1a094f36
@ -12,6 +12,7 @@
|
||||
#include "pilot.h"
|
||||
#include "player.h"
|
||||
#include "ltime.h"
|
||||
#include "xml.h"
|
||||
#include "misn_lua.h"
|
||||
|
||||
#define MISN_DEBUG(str, args...) (fprintf(stdout, "Mission '%s': "str"\n", \
|
||||
@ -222,6 +223,41 @@ int misn_run(Mission* misn, char* func) {
|
||||
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. --
|
||||
static int lephisto_lang(lua_State* L) {
|
||||
// TODO: multilanguage stuff.
|
||||
|
@ -6,6 +6,7 @@
|
||||
// Externs.
|
||||
extern int player_save(xmlTextWriterPtr writer);
|
||||
extern int missions_save(xmlTextWriterPtr writer);
|
||||
extern int var_save(xmlTextWriterPtr writer); // misn var.
|
||||
// Static.
|
||||
static int save_data(xmlTextWriterPtr writer);
|
||||
|
||||
@ -13,6 +14,7 @@ static int save_data(xmlTextWriterPtr writer) {
|
||||
// The data itself.
|
||||
if(player_save(writer) < 0) return -1;
|
||||
if(missions_save(writer) < 0) return -1;
|
||||
if(var_save(writer) < 0) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user