From 32adddc8d0f3c816b129c36af7984ebfc9f2e9f4 Mon Sep 17 00:00:00 2001 From: Allanis <allanis@saracraft.net> Date: Sat, 11 May 2013 16:27:35 +0100 Subject: [PATCH] [Add] Save the completed missions. --- src/mission.c | 6 ++++++ src/mission.h | 1 + src/player.c | 8 +++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/mission.c b/src/mission.c index 7b312ed..af0188b 100644 --- a/src/mission.c +++ b/src/mission.c @@ -56,6 +56,12 @@ int mission_getID(MissionData* misn) { return -1; } +// Get a MissionData based on ID. +MissionData* mission_get(int id) { + if((id <= 0) || (mission_nstack < id)) return NULL; + return &mission_stack[id]; +} + // Initialize a mission. static int mission_init(Mission* mission, MissionData* misn) { char* buf; diff --git a/src/mission.h b/src/mission.h index f41073e..02b1454 100644 --- a/src/mission.h +++ b/src/mission.h @@ -69,6 +69,7 @@ void missions_bar(int faction, char* planet, char* system); // Misc. int mission_getID(MissionData* misn); +MissionData* mission_get(int id); // Cargo stuff. void mission_linkCargo(Mission* misn, unsigned int cargo_id); diff --git a/src/player.c b/src/player.c index 928a8d5..c40d1a7 100644 --- a/src/player.c +++ b/src/player.c @@ -1447,10 +1447,16 @@ int player_save(xmlTextWriterPtr writer) { xmlw_startElem(writer, "ships"); for(i = 0; i < player_nstack; i++) player_saveShip(writer, player_stack[i], player_lstack[i]); - xmlw_endElem(writer); // Ships. xmlw_endElem(writer); // Player. + xmlw_startElem(writer, "missions_done"); + + for(i = 0; i < missions_ndone; i++) + xmlw_elem(writer, "done", mission_get(missions_done[i])->name); + + xmlw_endElem(writer); // missions_done. + return 0; }