diff --git a/src/mission.c b/src/mission.c index 02a1c8b..ccfd8ac 100644 --- a/src/mission.c +++ b/src/mission.c @@ -401,3 +401,34 @@ void missions_cleanup(void) { mission_cleanup(&player_missions[i]); } +int missions_save(xmlTextWriterPtr writer) { + int i, j; + + xmlw_startElem(writer, "missions"); + + for(i = 0; i < MISSION_MAX; i++) { + if(player_missions[i].id != 0) { + xmlw_startElem(writer, "mission"); + + xmlw_elem(writer, "data", player_missions[i].data->name); + xmlw_elem(writer, "id", "%u", player_missions[i].id); + + xmlw_elem(writer, "title", player_missions[i].title); + xmlw_elem(writer, "desc", player_missions[i].desc); + xmlw_elem(writer, "reward", player_missions[i].reward); + + xmlw_startElem(writer, "cargos"); + for(j = 0; j < player_missions[i].ncargo; j++) + xmlw_elem(writer, "cargo", "%u", player_missions[i].cargo[j]); + xmlw_endElem(writer); // Cargo. + + // TODO: Save lua data. + + xmlw_endElem(writer); // Mission. + } + } + xmlw_endElem(writer); // Missions. + + return 0; +} + diff --git a/src/save.c b/src/save.c new file mode 100644 index 0000000..cc4bd5d --- /dev/null +++ b/src/save.c @@ -0,0 +1,37 @@ +#include "lephisto.h" +#include "log.h" +#include "xml.h" +#include "save.h" + +// Externs. +extern int player_save(xmlTextWriterPtr writer); +extern int missions_save(xmlTextWriterPtr writer); + +int save_all(void) { + char* file; + xmlDocPtr doc; + xmlTextWriterPtr writer; + + writer = xmlNewTextWriterDoc(&doc, 0); + if(writer == NULL) { + ERR("testXmlwriterDoc: Error creating the xml writer."); + return -1; + } + + xmlw_start(writer); + + // The data itself. + player_save(writer); + missions_save(writer); + + xmlw_done(writer); + + file = "test.xml"; + + xmlFreeTextWriter(writer); + xmlSaveFileEnc(file, doc, "UTF-8"); + xmlFreeDoc(doc); + + return 0; +} + diff --git a/src/save.h b/src/save.h new file mode 100644 index 0000000..5a4d80d --- /dev/null +++ b/src/save.h @@ -0,0 +1,4 @@ +#pragma once + +int save_all(void); +