[Fix] Mission timers should save and load properly now.
This commit is contained in:
parent
6ad8d75d2d
commit
4af334e5e4
@ -681,11 +681,27 @@ int missions_saveActive(xmlTextWriterPtr writer) {
|
|||||||
if(player_missions[i].sys_marker != NULL)
|
if(player_missions[i].sys_marker != NULL)
|
||||||
xmlw_elem(writer, "marked", player_missions[i].sys_marker);
|
xmlw_elem(writer, "marked", player_missions[i].sys_marker);
|
||||||
|
|
||||||
|
/* Cargo. */
|
||||||
xmlw_startElem(writer, "cargos");
|
xmlw_startElem(writer, "cargos");
|
||||||
for(j = 0; j < player_missions[i].ncargo; j++)
|
for(j = 0; j < player_missions[i].ncargo; j++)
|
||||||
xmlw_elem(writer, "cargo", "%u", player_missions[i].cargo[j]);
|
xmlw_elem(writer, "cargo", "%u", player_missions[i].cargo[j]);
|
||||||
xmlw_endElem(writer); /* Cargo. */
|
xmlw_endElem(writer); /* Cargo. */
|
||||||
|
|
||||||
|
/* Timers. */
|
||||||
|
xmlw_startElem(writer, "timers");
|
||||||
|
for(j = 0; j < MISSION_TIMER_MAX; j++) {
|
||||||
|
if(player_missions[i].timer[j] > 0.) {
|
||||||
|
xmlw_startElem(writer, "timer");
|
||||||
|
|
||||||
|
xmlw_attr(writer, "id", "%d", j);
|
||||||
|
xmlw_attr(writer, "func", "%s", player_missions[i].tfunc[j]);
|
||||||
|
xmlw_str(writer, "%f", player_missions[i].timer[j]);
|
||||||
|
|
||||||
|
xmlw_endElem(writer); /* "timers". */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xmlw_endElem(writer); /* "timers". */
|
||||||
|
|
||||||
/* Write lua magic. */
|
/* Write lua magic. */
|
||||||
xmlw_startElem(writer, "lua");
|
xmlw_startElem(writer, "lua");
|
||||||
|
|
||||||
@ -719,7 +735,7 @@ int missions_loadActive(xmlNodePtr parent) {
|
|||||||
|
|
||||||
static int missions_parseActive(xmlNodePtr parent) {
|
static int missions_parseActive(xmlNodePtr parent) {
|
||||||
Mission* misn;
|
Mission* misn;
|
||||||
int m;
|
int m, i;
|
||||||
char* buf;
|
char* buf;
|
||||||
|
|
||||||
xmlNodePtr node, cur, nest;
|
xmlNodePtr node, cur, nest;
|
||||||
@ -747,6 +763,7 @@ static int missions_parseActive(xmlNodePtr parent) {
|
|||||||
xmlr_strd(cur, "reward", misn->reward);
|
xmlr_strd(cur, "reward", misn->reward);
|
||||||
xmlr_strd(cur, "marker", misn->sys_marker);
|
xmlr_strd(cur, "marker", misn->sys_marker);
|
||||||
|
|
||||||
|
/* Cargo. */
|
||||||
if(xml_isNode(cur, "cargos")) {
|
if(xml_isNode(cur, "cargos")) {
|
||||||
nest = cur->xmlChildrenNode;
|
nest = cur->xmlChildrenNode;
|
||||||
do {
|
do {
|
||||||
@ -755,6 +772,23 @@ static int missions_parseActive(xmlNodePtr parent) {
|
|||||||
} while(xml_nextNode(nest));
|
} while(xml_nextNode(nest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Timers. */
|
||||||
|
if(xml_isNode(cur, "timers")) {
|
||||||
|
nest = cur->xmlChildrenNode;
|
||||||
|
do {
|
||||||
|
if(xml_isNode(nest, "timer")) {
|
||||||
|
xmlr_attr(nest, "id", buf);
|
||||||
|
i = atoi(buf);
|
||||||
|
free(buf);
|
||||||
|
xmlr_attr(nest, "func", buf);
|
||||||
|
|
||||||
|
/* Set the timer. */
|
||||||
|
misn->timer[i] = xml_getFloat(nest);
|
||||||
|
misn->tfunc[i] = buf;
|
||||||
|
}
|
||||||
|
} while(xml_nextNode(nest));
|
||||||
|
}
|
||||||
|
|
||||||
if(xml_isNode(cur, "lua"))
|
if(xml_isNode(cur, "lua"))
|
||||||
/* Start the unpersist routine. */
|
/* Start the unpersist routine. */
|
||||||
mission_unpersistData(misn->L, cur);
|
mission_unpersistData(misn->L, cur);
|
||||||
|
Loading…
Reference in New Issue
Block a user