diff options
Diffstat (limited to 'games/naev/files/patch-src_mission.c')
-rw-r--r-- | games/naev/files/patch-src_mission.c | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/games/naev/files/patch-src_mission.c b/games/naev/files/patch-src_mission.c deleted file mode 100644 index 7137946..0000000 --- a/games/naev/files/patch-src_mission.c +++ /dev/null @@ -1,219 +0,0 @@ -# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 -# Subject: Turn player_missions in an array of pointers - ---- src/mission.c.orig 2015-02-16 17:49:03 UTC -+++ src/mission.c -@@ -50,7 +50,7 @@ - * current player missions - */ - static unsigned int mission_id = 0; /**< Mission ID generator. */ --Mission player_missions[MISSION_MAX]; /**< Player's active missions. */ -+Mission *player_missions[MISSION_MAX]; /**< Player's active missions. */ - - - /* -@@ -95,7 +95,7 @@ static unsigned int mission_genID (void) - - /* we save mission ids, so check for collisions with player's missions */ - for (i=0; i<MISSION_MAX; i++) -- if (id == player_missions[i].id) /* mission id was loaded from save */ -+ if (id == player_missions[i]->id) /* mission id was loaded from save */ - return mission_genID(); /* recursively try again */ - return id; - } -@@ -240,7 +240,7 @@ int mission_alreadyRunning( MissionData* - { - int i; - for (i=0; i<MISSION_MAX; i++) -- if (player_missions[i].data==misn) -+ if (player_missions[i]->data == misn) - return 1; - return 0; - } -@@ -416,15 +416,15 @@ void mission_sysMark (void) - - for (i=0; i<MISSION_MAX; i++) { - /* Must be a valid player mission. */ -- if (player_missions[i].id == 0) -+ if (player_missions[i]->id == 0) - continue; - /* Must have markers. */ -- if (player_missions[i].markers == NULL) -+ if (player_missions[i]->markers == NULL) - continue; - -- n = array_size( player_missions[i].markers ); -+ n = array_size( player_missions[i]->markers ); - for (j=0; j<n; j++) { -- m = &player_missions[i].markers[j]; -+ m = &player_missions[i]->markers[j]; - - /* Add the individual markers. */ - space_addMarker( m->sys, m->type ); -@@ -562,6 +562,30 @@ void mission_cleanup( Mission* misn ) - - - /** -+ * @brief Puts the specified mission at the end of the player_missions array. -+ * -+ * @param pos Mission's position within player_missions -+ */ -+void mission_shift( int pos ) -+{ -+ Mission *misn; -+ -+ if (pos >= (MISSION_MAX-1)) -+ return; -+ -+ /* Store specified mission. */ -+ misn = player_missions[pos]; -+ -+ /* Move other missions down. */ -+ memmove( &player_missions[pos], &player_missions[pos+1], -+ sizeof(Mission*) * (MISSION_MAX - pos - 1) ); -+ -+ /* Put the specified mission at the end of the array. */ -+ player_missions[MISSION_MAX - 1] = misn; -+} -+ -+ -+/** - * @brief Frees MissionData. - * - * @param mission MissionData to free. -@@ -622,8 +646,8 @@ void missions_activateClaims (void) - int i; - - for (i=0; i<MISSION_MAX; i++) -- if (player_missions[i].claims != NULL) -- claim_activate( player_missions[i].claims ); -+ if (player_missions[i]->claims != NULL) -+ claim_activate( player_missions[i]->claims ); - } - - -@@ -869,9 +893,14 @@ static int mission_parse( MissionData* t - */ - int missions_load (void) - { -- int m; -+ int i, m; - uint32_t bufsize; -- char *buf = ndata_read( MISSION_DATA_PATH, &bufsize ); -+ char *buf; -+ -+ for (i=0; i<MISSION_MAX; i++) -+ player_missions[i] = calloc(1, sizeof(Mission)); -+ -+ buf = ndata_read( MISSION_DATA_PATH, &bufsize ); - - xmlNodePtr node; - xmlDocPtr doc = xmlParseMemory( buf, bufsize ); -@@ -933,6 +962,10 @@ void missions_free (void) - free( mission_stack ); - mission_stack = NULL; - mission_nstack = 0; -+ -+ /* Free the player mission stack. */ -+ for (i=0; i<MISSION_MAX; i++) -+ free(player_missions[i]); - } - - -@@ -944,7 +977,7 @@ void missions_cleanup (void) - int i; - - for (i=0; i<MISSION_MAX; i++) -- mission_cleanup( &player_missions[i] ); -+ mission_cleanup( player_missions[i] ); - } - - -@@ -963,26 +996,26 @@ int missions_saveActive( xmlTextWriterPt - xmlw_startElem(writer,"missions"); - - for (i=0; i<MISSION_MAX; i++) { -- if (player_missions[i].id != 0) { -+ if (player_missions[i]->id != 0) { - xmlw_startElem(writer,"mission"); - - /* data and id are attributes because they must be loaded first */ -- xmlw_attr(writer,"data","%s",player_missions[i].data->name); -- xmlw_attr(writer,"id","%u",player_missions[i].id); -+ xmlw_attr(writer,"data","%s",player_missions[i]->data->name); -+ xmlw_attr(writer,"id","%u",player_missions[i]->id); - -- xmlw_elem(writer,"title","%s",player_missions[i].title); -- xmlw_elem(writer,"desc","%s",player_missions[i].desc); -- xmlw_elem(writer,"reward","%s",player_missions[i].reward); -+ xmlw_elem(writer,"title","%s",player_missions[i]->title); -+ xmlw_elem(writer,"desc","%s",player_missions[i]->desc); -+ xmlw_elem(writer,"reward","%s",player_missions[i]->reward); - - /* Markers. */ - xmlw_startElem( writer, "markers" ); -- if (player_missions[i].markers != NULL) { -- n = array_size( player_missions[i].markers ); -+ if (player_missions[i]->markers != NULL) { -+ n = array_size( player_missions[i]->markers ); - for (j=0; j<n; j++) { - xmlw_startElem(writer,"marker"); -- xmlw_attr(writer,"id","%d",player_missions[i].markers[j].id); -- xmlw_attr(writer,"type","%d",player_missions[i].markers[j].type); -- xmlw_str(writer,"%s", system_getIndex(player_missions[i].markers[j].sys)->name); -+ xmlw_attr(writer,"id","%d",player_missions[i]->markers[j].id); -+ xmlw_attr(writer,"type","%d",player_missions[i]->markers[j].type); -+ xmlw_str(writer,"%s", system_getIndex(player_missions[i]->markers[j].sys)->name); - xmlw_endElem(writer); /* "marker" */ - } - } -@@ -990,19 +1023,19 @@ int missions_saveActive( xmlTextWriterPt - - /* Cargo */ - xmlw_startElem(writer,"cargos"); -- for (j=0; j<player_missions[i].ncargo; j++) -- xmlw_elem(writer,"cargo","%u", player_missions[i].cargo[j]); -+ for (j=0; j<player_missions[i]->ncargo; j++) -+ xmlw_elem(writer,"cargo","%u", player_missions[i]->cargo[j]); - xmlw_endElem(writer); /* "cargos" */ - - /* OSD. */ -- if (player_missions[i].osd > 0) { -+ if (player_missions[i]->osd > 0) { - xmlw_startElem(writer,"osd"); - - /* Save attributes. */ -- items = osd_getItems(player_missions[i].osd, &nitems); -- xmlw_attr(writer,"title","%s",osd_getTitle(player_missions[i].osd)); -+ items = osd_getItems(player_missions[i]->osd, &nitems); -+ xmlw_attr(writer,"title","%s",osd_getTitle(player_missions[i]->osd)); - xmlw_attr(writer,"nitems","%d",nitems); -- xmlw_attr(writer,"active","%d",osd_getActive(player_missions[i].osd)); -+ xmlw_attr(writer,"active","%d",osd_getActive(player_missions[i]->osd)); - - /* Save messages. */ - for (j=0; j<nitems; j++) -@@ -1013,12 +1046,12 @@ int missions_saveActive( xmlTextWriterPt - - /* Claims. */ - xmlw_startElem(writer,"claims"); -- claim_xmlSave( writer, player_missions[i].claims ); -+ claim_xmlSave( writer, player_missions[i]->claims ); - xmlw_endElem(writer); /* "claims" */ - - /* Write Lua magic */ - xmlw_startElem(writer,"lua"); -- nxml_persistLua( player_missions[i].L, writer ); -+ nxml_persistLua( player_missions[i]->L, writer ); - xmlw_endElem(writer); /* "lua" */ - - xmlw_endElem(writer); /* "mission" */ -@@ -1078,7 +1111,7 @@ static int missions_parseActive( xmlNode - node = parent->xmlChildrenNode; - do { - if (xml_isNode(node,"mission")) { -- misn = &player_missions[m]; -+ misn = player_missions[m]; - - /* process the attributes to create the mission */ - xmlr_attr(node,"data",buf); |