[Fix] Couple bugs with saving.
This commit is contained in:
		
							parent
							
								
									bb48d5ac23
								
							
						
					
					
						commit
						fa7138f907
					
				@ -8,6 +8,7 @@
 | 
			
		||||
#include "hook.h"
 | 
			
		||||
#include "mission.h"
 | 
			
		||||
#include "ltime.h"
 | 
			
		||||
#include "save.h"
 | 
			
		||||
#include "land.h"
 | 
			
		||||
 | 
			
		||||
// Global/main window.
 | 
			
		||||
@ -969,6 +970,7 @@ void land(Planet* p) {
 | 
			
		||||
    // TODO: mission check.
 | 
			
		||||
    visited(VISITED_LAND);
 | 
			
		||||
  }
 | 
			
		||||
  save_all();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Takeoff from the planet.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								src/player.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/player.c
									
									
									
									
									
								
							@ -1467,19 +1467,23 @@ static int player_saveShip(xmlTextWriterPtr writer, Pilot* ship, char* loc) {
 | 
			
		||||
  xmlw_attr(writer, "name", ship->name);
 | 
			
		||||
 | 
			
		||||
  xmlw_elem(writer, "shipname", ship->ship->name);
 | 
			
		||||
  xmlw_elem(writer, "location", loc);
 | 
			
		||||
  if(loc != NULL) xmlw_elem(writer, "location", loc);
 | 
			
		||||
 | 
			
		||||
  // Save the outfits.
 | 
			
		||||
  xmlw_startElem(writer, "outfits");
 | 
			
		||||
  for(i = 0; i < ship->noutfits; i++) {
 | 
			
		||||
    xmlw_elem(writer, "outfit", ship->outfits[i].outfit->name);
 | 
			
		||||
    xmlw_startElem(writer, "outfit");
 | 
			
		||||
 | 
			
		||||
    xmlw_attr(writer, "quantity", "%d", ship->outfits[i].quantity);
 | 
			
		||||
    xmlw_str(writer, ship->outfits[i].outfit->name);
 | 
			
		||||
 | 
			
		||||
    xmlw_endElem(writer); // Outfit.
 | 
			
		||||
  }
 | 
			
		||||
  xmlw_endElem(writer); // Outfits.
 | 
			
		||||
 | 
			
		||||
  // Save the commodities.
 | 
			
		||||
  xmlw_startElem(writer, "commodities");
 | 
			
		||||
  for(i = 0; i < ship->noutfits; i++) {
 | 
			
		||||
  for(i = 0; i < ship->ncommodities; i++) {
 | 
			
		||||
    xmlw_elem(writer, "outfit", ship->commodities[i].commodity->name);
 | 
			
		||||
    xmlw_attr(writer, "quantity", "%d", ship->commodities[i].quantity);
 | 
			
		||||
    if(ship->commodities[i].id > 0)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										23
									
								
								src/save.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								src/save.c
									
									
									
									
									
								
							@ -6,6 +6,16 @@
 | 
			
		||||
// Externs.
 | 
			
		||||
extern int player_save(xmlTextWriterPtr writer);
 | 
			
		||||
extern int missions_save(xmlTextWriterPtr writer);
 | 
			
		||||
// Static.
 | 
			
		||||
static int save_data(xmlTextWriterPtr writer);
 | 
			
		||||
 | 
			
		||||
static int save_data(xmlTextWriterPtr writer) {
 | 
			
		||||
  // The data itself.
 | 
			
		||||
  if(player_save(writer) < 0) return -1;
 | 
			
		||||
  if(missions_save(writer) < 0) return -1;
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int save_all(void) {
 | 
			
		||||
  char* file;
 | 
			
		||||
@ -19,17 +29,22 @@ int save_all(void) {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  xmlw_start(writer);
 | 
			
		||||
  xmlw_startElem(writer, "lephisto_save");
 | 
			
		||||
 | 
			
		||||
  // The data itself.
 | 
			
		||||
  player_save(writer);
 | 
			
		||||
  missions_save(writer);
 | 
			
		||||
  if(save_data(writer) < 0) {
 | 
			
		||||
    ERR("Trying to save game data");
 | 
			
		||||
    xmlFreeTextWriter(writer);
 | 
			
		||||
    xmlFreeDoc(doc);
 | 
			
		||||
    return -1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  xmlw_endElem(writer); // lephisto_save.
 | 
			
		||||
  xmlw_done(writer);
 | 
			
		||||
 | 
			
		||||
  file = "test.xml";
 | 
			
		||||
 | 
			
		||||
  xmlFreeTextWriter(writer);
 | 
			
		||||
  xmlSaveFileEnc(file, doc, "UTF-8");
 | 
			
		||||
  //xmlSaveFileEnc(file, doc, "UTF-8");
 | 
			
		||||
  xmlFreeDoc(doc);
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
 | 
			
		||||
@ -49,6 +49,10 @@
 | 
			
		||||
  if(xmlTextWriterWriteFormatAttribute(w, (xmlChar*)str, ## val) < 0) { \
 | 
			
		||||
    ERR("xmlw: Unable to write element attribute"); return -1; }
 | 
			
		||||
 | 
			
		||||
#define xmlw_str(w, str, val...) \
 | 
			
		||||
  if(xmlTextWriterWriteFormatString(w, str, ## val) < 0) { \
 | 
			
		||||
    ERR("xmlw: Unable to write element data"); return -1; }
 | 
			
		||||
 | 
			
		||||
// Document level.
 | 
			
		||||
#define xmlw_start(w) \
 | 
			
		||||
  if(xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL) < 0) { \
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user