From owner-svn-ports-head@FreeBSD.ORG Thu Apr 23 20:36:30 2015 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 03B10F1D; Thu, 23 Apr 2015 20:36:30 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E6A8E1FD5; Thu, 23 Apr 2015 20:36:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t3NKaT2D082329; Thu, 23 Apr 2015 20:36:29 GMT (envelope-from amdmi3@FreeBSD.org) Received: (from amdmi3@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t3NKaNDZ082285; Thu, 23 Apr 2015 20:36:23 GMT (envelope-from amdmi3@FreeBSD.org) Message-Id: <201504232036.t3NKaNDZ082285@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: amdmi3 set sender to amdmi3@FreeBSD.org using -f From: Dmitry Marakasov Date: Thu, 23 Apr 2015 20:36:23 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r384609 - in head/games: naev naev-data naev/files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Apr 2015 20:36:30 -0000 Author: amdmi3 Date: Thu Apr 23 20:36:23 2015 New Revision: 384609 URL: https://svnweb.freebsd.org/changeset/ports/384609 Log: - Update to 0.6.0 PR: 198684 Submitted by: lightside@gmx.com Approved by: maintainer timeout Added: head/games/naev/files/patch-src_board.c (contents, props changed) head/games/naev/files/patch-src_equipment.c (contents, props changed) head/games/naev/files/patch-src_hook.c (contents, props changed) head/games/naev/files/patch-src_info.c (contents, props changed) head/games/naev/files/patch-src_land.c (contents, props changed) head/games/naev/files/patch-src_land.h (contents, props changed) head/games/naev/files/patch-src_land__outfits.c (contents, props changed) head/games/naev/files/patch-src_land__shipyard.c (contents, props changed) head/games/naev/files/patch-src_mission.c (contents, props changed) head/games/naev/files/patch-src_mission.h (contents, props changed) head/games/naev/files/patch-src_nlua__hook.c (contents, props changed) head/games/naev/files/patch-src_nlua__misn.c (contents, props changed) head/games/naev/files/patch-src_npc.c (contents, props changed) head/games/naev/files/patch-src_pilot__hook.c (contents, props changed) head/games/naev/files/patch-src_player.c (contents, props changed) head/games/naev/files/patch-src_space.c (contents, props changed) Deleted: head/games/naev/files/pkg-message.in Modified: head/games/naev-data/Makefile head/games/naev-data/distinfo head/games/naev-data/pkg-descr head/games/naev/Makefile head/games/naev/distinfo head/games/naev/pkg-descr Modified: head/games/naev-data/Makefile ============================================================================== --- head/games/naev-data/Makefile Thu Apr 23 20:30:12 2015 (r384608) +++ head/games/naev-data/Makefile Thu Apr 23 20:36:23 2015 (r384609) @@ -2,31 +2,42 @@ # $FreeBSD$ PORTNAME= data -PORTVERSION= 0.5.3 +PORTVERSION= 0.6.0 CATEGORIES= games -MASTER_SITES= SF/${PKGNAMEPREFIX:S/-//}/${PKGNAMEPREFIX}${PORTVERSION} \ - ${MASTER_SITE_GOOGLE_CODE} +MASTER_SITES= SF/${PROJECTHOST}/${PKGNAMEPREFIX}${PORTVERSION}/ PKGNAMEPREFIX= naev- DISTNAME= ${PORTNAME:S/^/n/}-${PORTVERSION} -EXTRACT_SUFX= # -DIST_SUBDIR= ${PKGNAMEPREFIX:S/-//} +EXTRACT_SUFX= .zip +DIST_SUBDIR= ${PROJECTHOST} +EXTRACT_ONLY= # empty MAINTAINER= acm@FreeBSD.org COMMENT= Naev game data file +LICENSE= GPLv2 GPLv3 CCBYv3 CCBYSAv3 PD +LICENSE_COMB= multi +LICENSE_NAME_CCBYv3= Creative Commons Attribution 3.0 Unported license +LICENSE_NAME_CCBYSAv3= Creative Commons Attribution-ShareAlike 3.0 Unported license +LICENSE_NAME_PD= Public Domain license +LICENSE_TEXT_CCBYv3= The license: CCBYv3 (${LICENSE_NAME_CCBYv3}) is standard,\ + please read from the web: http://creativecommons.org/licenses/by/3.0/ +LICENSE_TEXT_CCBYSAv3= The license: CCBYSAv3 (${LICENSE_NAME_CCBYSAv3}) is standard,\ + please read from the web: http://creativecommons.org/licenses/by-sa/3.0/ +LICENSE_TEXT_PD= The license: PD (${LICENSE_NAME_PD}), please read possible explanation on the web:\ + http://www.teachingcopyright.org/handout/public-domain-faq +LICENSE_PERMS_CCBYv3= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept +LICENSE_PERMS_CCBYSAv3= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept +LICENSE_PERMS_PD= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + PROJECTHOST= ${PKGNAMEPREFIX:S/-//} +NO_ARCH= yes NO_BUILD= yes -DATADIR= ${PREFIX}/share/${PKGNAMEPREFIX:S/-//} -PLIST_FILES= share/${PKGNAMEPREFIX:S/-//}/${PORTNAME:S/^/n/}-${PORTVERSION} -PLIST_DIRS= share/${PKGNAMEPREFIX:S/-//} - -do-extract: - @@${MKDIR} ${WRKSRC} - @${CP} ${_DISTDIR}/${DISTFILES} ${WRKSRC} +DATADIR= ${PREFIX}/share/${PROJECTHOST} +PORTDATA= * do-install: @${MKDIR} ${STAGEDIR}${DATADIR} - ${INSTALL_DATA} ${WRKSRC}/${DISTFILES} ${STAGEDIR}${DATADIR} + ${INSTALL_DATA} ${_DISTDIR}/${DISTFILES} ${STAGEDIR}${DATADIR} .include Modified: head/games/naev-data/distinfo ============================================================================== --- head/games/naev-data/distinfo Thu Apr 23 20:30:12 2015 (r384608) +++ head/games/naev-data/distinfo Thu Apr 23 20:36:23 2015 (r384609) @@ -1,2 +1,2 @@ -SHA256 (naev/ndata-0.5.3) = a6f1abb3b173fab7b8cfaf1c4057caa4880235bc5eca489d0ac7d4ae4acf9028 -SIZE (naev/ndata-0.5.3) = 244956464 +SHA256 (naev/ndata-0.6.0.zip) = 07ccb9f50652bceb8064fa1e48cd9df2b4ce0e3c52b60f27398cdfc3186ac52b +SIZE (naev/ndata-0.6.0.zip) = 302646395 Modified: head/games/naev-data/pkg-descr ============================================================================== --- head/games/naev-data/pkg-descr Thu Apr 23 20:30:12 2015 (r384608) +++ head/games/naev-data/pkg-descr Thu Apr 23 20:36:23 2015 (r384609) @@ -1,4 +1,4 @@ NAEV is a 2d action/rpg space game that combines elements from the action, rpg and simulation genres (data file). -WWW: http://code.google.com/p/naev/ +WWW: http://sourceforge.net/projects/naev/ Modified: head/games/naev/Makefile ============================================================================== --- head/games/naev/Makefile Thu Apr 23 20:30:12 2015 (r384608) +++ head/games/naev/Makefile Thu Apr 23 20:36:23 2015 (r384609) @@ -2,56 +2,62 @@ # $FreeBSD$ PORTNAME= naev -PORTVERSION= 0.5.3 -PORTREVISION= 4 +PORTVERSION= 0.6.0 CATEGORIES= games -MASTER_SITES= SF/${PORTNAME}/${PORTNAME}-${PORTVERSION} \ - ${MASTER_SITE_GOOGLE_CODE} +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}-${PORTVERSION}/ DIST_SUBDIR= ${PORTNAME} MAINTAINER= acm@FreeBSD.org COMMENT= 2D action/RPG space game +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + LIB_DEPENDS= libpng.so:${PORTSDIR}/graphics/png \ libfreetype.so:${PORTSDIR}/print/freetype2 \ - libvorbisfile.so:${PORTSDIR}/audio/libvorbis -RUN_DEPENDS= ${LOCALBASE}/share/${PORTNAME}/ndata-${PORTVERSION}:${PORTSDIR}/games/naev-data + libvorbisfile.so:${PORTSDIR}/audio/libvorbis \ + libzip.so:${PORTSDIR}/archivers/libzip \ + libcsparse.so:${PORTSDIR}/math/suitesparse +RUN_DEPENDS= ${DATADIR}/ndata-${PORTVERSION}.zip:${PORTSDIR}/games/naev-data -USES= gmake pkgconfig tar:bzip2 -USE_AUTOTOOLS= automake:env aclocal:env autoconf:env +USES= autoreconf:build gmake pkgconfig tar:bzip2 GNU_CONFIGURE= yes USE_GL= glu USE_GNOME= libxml2 -USE_SDL= sdl image -CONFIGURE_ARGS= --with-ndata-path=${DATADIR}/ndata-${PORTVERSION} +CONFIGURE_ARGS= --with-ndata-path="${DATADIR}/ndata-${PORTVERSION}.zip" \ + --enable-debug=no CPPFLAGS+= -I${LOCALBASE}/include LIBS+= -L${LOCALBASE}/lib -lm -PLIST_FILES= bin/${PORTNAME} man/man6/naev.6.gz -SUB_FILES= pkg-message +PORTDATA= * +PORTDOCS= * + +PLIST_FILES= bin/${PORTNAME} man/man6/naev.6.gz \ + share/applications/${PORTNAME}.desktop \ + share/appdata/${PORTNAME}.appdata.xml \ + share/pixmaps/${PORTNAME}.png + +OPTIONS_DEFINE= DOCS OPENAL SDL2 SDL_MIXER +OPTIONS_DEFAULT= OPENAL SDL2 SDL_MIXER -OPTIONS_DEFINE= OPENAL SDL_MIXER +OPENAL_USES= openal +OPENAL_CONFIGURE_WITH= openal SDL_MIXER_DESC= SDL_mixer sound backend +SDL_MIXER_CONFIGURE_WITH= sdlmixer +SDL2_DESC= Use SDL2 instead of SDL +SDL2_CONFIGURE_WITH= sdl2 +SDL2_USE= SDL=sdl2 +SDL2_USE_OFF= SDL=sdl .include -.if ${PORT_OPTIONS:MOPENAL} -USES+= openal -CONFIGURE_ARGS+= --with-openal=yes -.else -CONFIGURE_ARGS+= --with-openal=no -.endif - .if ${PORT_OPTIONS:MSDL_MIXER} -USE_SDL+= mixer -CONFIGURE_ARGS+= --with-sdlmixer=yes -.else -CONFIGURE_ARGS+= --with-sdlmixer=no +. if ${PORT_OPTIONS:MSDL2} +USE_SDL+= mixer2 +. else +USE_SDL+= mixer +. endif .endif -do-install: - ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin - ${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.6 ${STAGEDIR}${MAN6PREFIX}/man/man6 - .include Modified: head/games/naev/distinfo ============================================================================== --- head/games/naev/distinfo Thu Apr 23 20:30:12 2015 (r384608) +++ head/games/naev/distinfo Thu Apr 23 20:36:23 2015 (r384609) @@ -1,2 +1,2 @@ -SHA256 (naev/naev-0.5.3.tar.bz2) = b2d026abb099bcb884e13a26b1bce4273f094830690340468f752a3b9b64c719 -SIZE (naev/naev-0.5.3.tar.bz2) = 997522 +SHA256 (naev/naev-0.6.0.tar.bz2) = 0f0b498c7642e36dfaa15f284e13b9aa2d20e4aa01ed812fb7854583e7161cac +SIZE (naev/naev-0.6.0.tar.bz2) = 1054649 Added: head/games/naev/files/patch-src_board.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_board.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,38 @@ +# Origin: https://github.com/naev/naev/commit/8b4ceb3c5db7171b65f918f278e2d3a0685bf0f2 +# Subject: Correctly pass boarding ship to pilot board hook +# Origin: https://github.com/naev/naev/commit/0b545ee49f33632e892e242807543d6b386a02af +# Subject: Run pilot board hook for all pilot, not just player + +--- src/board.c.orig 2015-02-16 17:49:03 UTC ++++ src/board.c +@@ -143,7 +143,8 @@ void player_board (void) + hparam[0].u.lp.pilot = p->id; + hparam[1].type = HOOK_PARAM_SENTINEL; + hooks_runParam( "board", hparam ); +- pilot_runHook(p, PILOT_HOOK_BOARD); ++ hparam[0].u.lp.pilot = PLAYER_ID; ++ pilot_runHookParam(p, PILOT_HOOK_BOARD, hparam, 1); + + if (board_stopboard) { + board_boarded = 0; +@@ -526,6 +527,7 @@ static void board_update( unsigned int w + int pilot_board( Pilot *p ) + { + Pilot *target; ++ HookParam hparam[2]; + + /* Make sure target is sane. */ + target = pilot_get(p->target); +@@ -554,6 +556,12 @@ int pilot_board( Pilot *p ) + /* Set time it takes to board. */ + p->ptimer = 3.; + ++ /* Run pilot board hook. */ ++ hparam[0].type = HOOK_PARAM_PILOT; ++ hparam[0].u.lp.pilot = p->id; ++ hparam[1].type = HOOK_PARAM_SENTINEL; ++ pilot_runHookParam(target, PILOT_HOOK_BOARD, hparam, 1); ++ + return 1; + } + Added: head/games/naev/files/patch-src_equipment.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_equipment.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,15 @@ +# Origin: https://github.com/naev/naev/commit/9fd2a7dcb3690bc1befe7f9a05d02e204dcfe8a1 +# Subject: Avoid regenerating the land tabs over top of themselves + +--- src/equipment.c.orig 2015-03-18 02:22:35 UTC ++++ src/equipment.c +@@ -234,6 +234,9 @@ void equipment_open( unsigned int wid ) + GLfloat colour[4*4]; + const char *buf; + ++ /* Mark as generated. */ ++ land_tabGenerate(LAND_WINDOW_EQUIPMENT); ++ + /* Set global WID. */ + equipment_wid = wid; + Added: head/games/naev/files/patch-src_hook.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_hook.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,16 @@ +# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 +# Subject: Turn player_missions in an array of pointers + +--- src/hook.c.orig 2015-02-16 17:49:03 UTC ++++ src/hook.c +@@ -837,8 +837,8 @@ static Mission *hook_getMission( Hook *h + { + int i; + for (i=0; iu.misn.parent) +- return &player_missions[i]; ++ if (player_missions[i]->id == hook->u.misn.parent) ++ return player_missions[i]; + + return NULL; + } Added: head/games/naev/files/patch-src_info.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_info.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,87 @@ +# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 +# Subject: Turn player_missions in an array of pointers + +--- src/info.c.orig 2015-02-16 17:49:03 UTC ++++ src/info.c +@@ -785,8 +785,8 @@ static void cargo_jettison( unsigned int + /* Get the mission. */ + f = 0; + for (i=0; icommodities[pos].id) { ++ for (j=0; jncargo; j++) { ++ if (player_missions[i]->cargo[j] == player.p->commodities[pos].id) { + f = 1; + break; + } +@@ -799,7 +799,7 @@ static void cargo_jettison( unsigned int + player.p->commodities[pos].id); + return; + } +- misn = &player_missions[i]; ++ misn = player_missions[i]; + + /* We run the "abort" function if it's found. */ + ret = misn_tryRun( misn, "abort" ); +@@ -807,9 +807,7 @@ static void cargo_jettison( unsigned int + /* Now clean up mission. */ + if (ret != 2) { + mission_cleanup( misn ); +- memmove( misn, &player_missions[i+1], +- sizeof(Mission) * (MISSION_MAX-i-1) ); +- memset( &player_missions[MISSION_MAX-1], 0, sizeof(Mission) ); ++ mission_shift(pos); + } + + /* Reset markers. */ +@@ -1005,8 +1003,10 @@ static void mission_menu_genList( unsign + misn_names = malloc(sizeof(char*) * MISSION_MAX); + j = 0; + for (i=0; iid != 0) ++ misn_names[j++] = (player_missions[i]->title != NULL) ? ++ strdup(player_missions[i]->title) : NULL; ++ + if (j==0) { /* no missions */ + misn_names[0] = strdup("No Missions"); + j = 1; +@@ -1035,7 +1035,7 @@ static void mission_menu_update( unsigne + } + + /* Modify the text. */ +- misn = &player_missions[ toolkit_getListPos(wid, "lstMission" ) ]; ++ misn = player_missions[ toolkit_getListPos(wid, "lstMission" ) ]; + window_modifyText( wid, "txtReward", misn->reward ); + window_modifyText( wid, "txtDesc", misn->desc ); + window_enableButton( wid, "btnAbortMission" ); +@@ -1052,7 +1052,7 @@ static void mission_menu_abort( unsigned + { + (void)str; + int pos; +- Mission* misn; ++ Mission *misn; + int ret; + + if (dialogue_YesNo( "Abort Mission", +@@ -1060,7 +1060,7 @@ static void mission_menu_abort( unsigned + + /* Get the mission. */ + pos = toolkit_getListPos(wid, "lstMission" ); +- misn = &player_missions[pos]; ++ misn = player_missions[pos]; + + /* We run the "abort" function if it's found. */ + ret = misn_tryRun( misn, "abort" ); +@@ -1068,9 +1068,7 @@ static void mission_menu_abort( unsigned + /* Now clean up mission. */ + if (ret != 2) { + mission_cleanup( misn ); +- memmove( misn, &player_missions[pos+1], +- sizeof(Mission) * (MISSION_MAX-pos-1) ); +- memset( &player_missions[MISSION_MAX-1], 0, sizeof(Mission) ); ++ mission_shift(pos); + } + + /* Reset markers. */ Added: head/games/naev/files/patch-src_land.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_land.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,137 @@ +# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 +# Subject: Turn player_missions in an array of pointers +# Origin: https://github.com/naev/naev/commit/9fd2a7dcb3690bc1befe7f9a05d02e204dcfe8a1 +# Subject: Avoid regenerating the land tabs over top of themselves +# Origin: https://github.com/naev/naev/commit/b9bad809027529c0b0e95d9b8a011cb880229a5d +# Subject: Fixed "buy map" button not showing up until after land hooks. + +--- src/land.c.orig 2015-03-05 22:11:11 UTC ++++ src/land.c +@@ -69,6 +69,8 @@ + #define has_visited(f) (land_visited & (f)) /**< Check if player has visited. */ + static unsigned int land_visited = 0; /**< Contains what the player visited. */ + ++/* Which tabs have been generated by their respective open functions. */ ++unsigned int land_generated = 0; + + /* + * land variables +@@ -187,6 +189,9 @@ static void commodity_exchange_open( uns + char **goods; + int w, h; + ++ /* Mark as generated. */ ++ land_tabGenerate(LAND_WINDOW_COMMODITY); ++ + /* Get window dimensions. */ + window_dimWindow( wid, &w, &h ); + +@@ -566,6 +571,9 @@ static void bar_open( unsigned int wid ) + { + int w, h, iw, ih, bw, bh, dh, th; + ++ /* Mark as generated. */ ++ land_tabGenerate(LAND_WINDOW_BAR); ++ + /* Set window functions. */ + window_onClose( wid, bar_close ); + +@@ -822,6 +830,9 @@ static void misn_open( unsigned int wid + int w, h; + int y; + ++ /* Mark as generated. */ ++ land_tabGenerate(LAND_WINDOW_MISSION); ++ + /* Get window dimensions. */ + window_dimWindow( wid, &w, &h ); + +@@ -900,7 +911,7 @@ static void misn_accept( unsigned int wi + + /* Make sure player can accept the mission. */ + for (i=0; idata == NULL) break; + if (i >= MISSION_MAX) { + dialogue_alert("You have too many active missions."); + return; +@@ -1180,6 +1191,9 @@ void land_genWindows( int load, int chan + if (land_wid > 0) { + land_regen = 2; /* Mark we're regenning. */ + window_destroy(land_wid); ++ ++ /* Mark tabs as not generated. */ ++ land_generated = 0; + } + land_loaded = 0; + +@@ -1255,6 +1269,9 @@ void land_genWindows( int load, int chan + /* 1) Create main tab. */ + land_createMainTab( land_getWid(LAND_WINDOW_MAIN) ); + ++ /* Add local system map button. */ ++ land_checkAddMap(); ++ + /* 2) Set as landed and run hooks. */ + if (!regen) { + landed = 1; +@@ -1274,24 +1291,34 @@ void land_genWindows( int load, int chan + } + + /* 4) Create other tabs. */ ++#define should_open(s, w) \ ++ (planet_hasService(land_planet, s) && (!land_tabGenerated(w))) ++ ++ /* Things get a bit hairy here. Hooks may have triggered a GUI reload via ++ * e.g. player.swapShip, so the land tabs may have been generated already ++ * and we need to check that before regenerating them. ++ */ ++ + /* Basic - bar + missions */ +- if (planet_hasService(land_planet, PLANET_SERVICE_BAR)) ++ if (should_open( PLANET_SERVICE_BAR, LAND_WINDOW_BAR )) + bar_open( land_getWid(LAND_WINDOW_BAR) ); +- if (planet_hasService(land_planet, PLANET_SERVICE_MISSIONS)) ++ if (should_open( PLANET_SERVICE_MISSIONS, LAND_WINDOW_MISSION )) + misn_open( land_getWid(LAND_WINDOW_MISSION) ); + /* Outfits. */ +- if (planet_hasService(land_planet, PLANET_SERVICE_OUTFITS)) ++ if (should_open( PLANET_SERVICE_OUTFITS, LAND_WINDOW_OUTFITS )) + outfits_open( land_getWid(LAND_WINDOW_OUTFITS) ); + /* Shipyard. */ +- if (planet_hasService(land_planet, PLANET_SERVICE_SHIPYARD)) ++ if (should_open( PLANET_SERVICE_SHIPYARD, LAND_WINDOW_SHIPYARD )) + shipyard_open( land_getWid(LAND_WINDOW_SHIPYARD) ); + /* Equipment. */ +- if (planet_hasService(land_planet, PLANET_SERVICE_OUTFITS) || +- planet_hasService(land_planet, PLANET_SERVICE_SHIPYARD)) ++ if ((planet_hasService(land_planet, PLANET_SERVICE_OUTFITS) || ++ planet_hasService(land_planet, PLANET_SERVICE_SHIPYARD)) && ++ !land_tabGenerated( LAND_WINDOW_EQUIPMENT )) + equipment_open( land_getWid(LAND_WINDOW_EQUIPMENT) ); + /* Commodity. */ +- if (planet_hasService(land_planet, PLANET_SERVICE_COMMODITY)) ++ if (should_open( PLANET_SERVICE_COMMODITY, LAND_WINDOW_COMMODITY )) + commodity_exchange_open( land_getWid(LAND_WINDOW_COMMODITY) ); ++#undef should_open + + if (!regen) { + /* Reset markers if needed. */ +@@ -1310,9 +1337,6 @@ void land_genWindows( int load, int chan + if (changetab && land_windowsMap[ last_window ] != -1) + window_tabWinSetActive( land_wid, "tabLand", land_windowsMap[ last_window ] ); + +- /* Add local system map button. */ +- land_checkAddMap(); +- + /* Refuel if necessary. */ + land_refuel(); + +@@ -1689,6 +1713,7 @@ void land_cleanup (void) + land_planet = NULL; + landed = 0; + land_visited = 0; ++ land_generated = 0; + + /* Destroy window. */ + if (land_wid > 0) Added: head/games/naev/files/patch-src_land.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_land.h Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,18 @@ +# Origin: https://github.com/naev/naev/commit/9fd2a7dcb3690bc1befe7f9a05d02e204dcfe8a1 +# Subject: Avoid regenerating the land tabs over top of themselves + +--- src/land.h.orig 2015-03-05 22:11:11 UTC ++++ src/land.h +@@ -46,6 +46,12 @@ extern int landed; + extern Planet* land_planet; + + ++/* Tracking for which tabs have been generated. */ ++#define land_tabGenerate(w) (land_generated |= (1 << w)) /**< Mark tab generated. */ ++#define land_tabGenerated(w) (land_generated & (1 << w)) /**< Check if tab has been generated. */ ++extern unsigned int land_generated; ++ ++ + /* + * Main interface. + */ Added: head/games/naev/files/patch-src_land__outfits.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_land__outfits.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,15 @@ +# Origin: https://github.com/naev/naev/commit/9fd2a7dcb3690bc1befe7f9a05d02e204dcfe8a1 +# Subject: Avoid regenerating the land tabs over top of themselves + +--- src/land_outfits.c.orig 2015-03-05 22:11:11 UTC ++++ src/land_outfits.c +@@ -95,6 +95,9 @@ void outfits_open( unsigned int wid ) + { + int w, h, iw, ih, bw, bh, off; + ++ /* Mark as generated. */ ++ land_tabGenerate(LAND_WINDOW_OUTFITS); ++ + /* Get dimensions. */ + outfits_getSize( wid, &w, &h, &iw, &ih, &bw, &bh ); + Added: head/games/naev/files/patch-src_land__shipyard.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_land__shipyard.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,15 @@ +# Origin: https://github.com/naev/naev/commit/9fd2a7dcb3690bc1befe7f9a05d02e204dcfe8a1 +# Subject: Avoid regenerating the land tabs over top of themselves + +--- src/land_shipyard.c.orig 2015-03-05 22:11:11 UTC ++++ src/land_shipyard.c +@@ -61,6 +61,9 @@ void shipyard_open( unsigned int wid ) + int y; + const char *buf; + ++ /* Mark as generated. */ ++ land_tabGenerate(LAND_WINDOW_SHIPYARD); ++ + /* Init vars. */ + shipyard_selected = NULL; + Added: head/games/naev/files/patch-src_mission.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_mission.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,219 @@ +# 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; iid) /* 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; idata == misn) + return 1; + return 0; + } +@@ -416,15 +416,15 @@ void mission_sysMark (void) + + for (i=0; iid == 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; jmarkers[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; iclaims != 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; iid != 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; jname); ++ 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; jncargo; 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; jclaims ); + 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); Added: head/games/naev/files/patch-src_mission.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_mission.h Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,22 @@ +# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 +# Subject: Turn player_missions in an array of pointers + +--- src/mission.h.orig 2015-02-16 17:49:03 UTC ++++ src/mission.h +@@ -129,7 +129,7 @@ typedef struct Mission_ { + * current player missions + */ + #define MISSION_MAX 12 /**< No sense in allowing the player have infinite missions. */ +-extern Mission player_missions[MISSION_MAX]; /**< Player's active missions. */ ++extern Mission *player_missions[MISSION_MAX]; /**< Player's active missions. */ + + + /* +@@ -165,6 +165,7 @@ int mission_unlinkCargo( Mission* misn, + */ + int missions_load (void); + void mission_cleanup( Mission* misn ); ++void mission_shift( int pos ); + void missions_free (void); + void missions_cleanup (void); + Added: head/games/naev/files/patch-src_nlua__hook.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_nlua__hook.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,14 @@ +# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 +# Subject: Turn player_missions in an array of pointers + +--- src/nlua_hook.c.orig 2015-03-17 16:29:43 UTC ++++ src/nlua_hook.c +@@ -246,7 +246,7 @@ static unsigned int hook_generic( lua_St + if (running_mission != NULL) { + /* make sure mission is a player mission */ + for (i=0; iid) ++ if (player_missions[i]->id == running_mission->id) + break; + if (i>=MISSION_MAX) { + WARN("Mission not in stack trying to hook, forgot to run misn.accept()?"); Added: head/games/naev/files/patch-src_nlua__misn.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_nlua__misn.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,49 @@ +# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 +# Subject: Turn player_missions in an array of pointers +# Origin: https://github.com/naev/naev/commit/155a7fdaf07e1b5549e6314a433425b4187bb33f +# Subject: Don't use a pointer to a pointer + +--- src/nlua_misn.c.orig 2015-02-16 17:49:03 UTC ++++ src/nlua_misn.c +@@ -283,13 +283,13 @@ int misn_runFunc( Mission *misn, const c + if (misn_delete) { + ret = 2; + mission_cleanup( cur_mission ); +- for (i=0; idata == NULL) + break; + + cur_mission = misn_getFromLua(L); +@@ -620,9 +620,9 @@ static int misn_accept( lua_State *L ) + else if (i>=MISSION_MAX) + ret = 1; + else { /* copy it over */ +- memcpy( &player_missions[i], cur_mission, sizeof(Mission) ); ++ memcpy( player_missions[i], cur_mission, sizeof(Mission) ); + memset( cur_mission, 0, sizeof(Mission) ); +- cur_mission = &player_missions[i]; ++ cur_mission = player_missions[i]; + cur_mission->accepted = 1; /* Mark as accepted. */ + + /* Need to change pointer. */ Added: head/games/naev/files/patch-src_npc.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_npc.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,14 @@ +# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 +# Subject: Turn player_missions in an array of pointers + +--- src/npc.c.orig 2015-02-16 17:49:03 UTC ++++ src/npc.c +@@ -559,7 +559,7 @@ static int npc_approach_giver( NPC_t *np + + /* Make sure player can accept the mission. */ + for (i=0; idata == NULL) + break; + if (i >= MISSION_MAX) { + dialogue_alert("You have too many active missions."); Added: head/games/naev/files/patch-src_pilot__hook.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_pilot__hook.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,44 @@ +# Origin: https://github.com/naev/naev/commit/6f4005f921650c1a8930721bbd1c0eab163673f8 +# Subject: * Hook param off by one. +# https://github.com/naev/naev/commit/3ba9cafb369f94115c897717b6f38415348f4c8f +# Subject: * Too many bugs in the code, should fix bugs with pilot hooks when using >1 parameter. + +--- src/pilot_hook.c.orig 2015-02-16 17:49:03 UTC ++++ src/pilot_hook.c +@@ -39,26 +39,26 @@ static int pilot_hookCleanup = 0; /**< A + int pilot_runHookParam( Pilot* p, int hook_type, HookParam* param, int nparam ) + { + int n, i, run, ret; +- HookParam hparam[3], *hdynparam; ++ HookParam hstaparam[5], *hdynparam, *hparam; + + /* Set up hook parameters. */ +- if (nparam <= 1) { +- hparam[0].type = HOOK_PARAM_PILOT; +- hparam[0].u.lp.pilot = p->id; ++ if (nparam <= 3) { ++ hstaparam[0].type = HOOK_PARAM_PILOT; ++ hstaparam[0].u.lp.pilot = p->id; + n = 1; +- if (nparam == 1) { +- memcpy( &hparam[n], param, sizeof(HookParam) ); +- n++; +- } +- hparam[n].type = HOOK_PARAM_SENTINEL; ++ memcpy( &hstaparam[n], param, sizeof(HookParam)*nparam ); ++ n += nparam; ++ hstaparam[n].type = HOOK_PARAM_SENTINEL; + hdynparam = NULL; ++ hparam = hstaparam; + } + else { + hdynparam = malloc( sizeof(HookParam) * (nparam+2) ); + hdynparam[0].type = HOOK_PARAM_PILOT; + hdynparam[0].u.lp.pilot = p->id; + memcpy( &hdynparam[1], param, sizeof(HookParam)*nparam ); +- hdynparam[nparam].type = HOOK_PARAM_SENTINEL; ++ hdynparam[nparam+1].type = HOOK_PARAM_SENTINEL; ++ hparam = hdynparam; + } + + /* Run pilot specific hooks. */ Added: head/games/naev/files/patch-src_player.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_player.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,44 @@ +# Origin: https://github.com/naev/naev/commit/74b9a086a20f80f21ce2f3866b31318e651a6235 +# Subject: Turn player_missions in an array of pointers +# Origin: https://github.com/naev/naev/commit/34651062f0f26b43489214137862148c7cf842c1 +# Subject: Regenerate the player's ship list when removing a ship + +--- src/player.c.orig 2015-03-05 22:11:11 UTC ++++ src/player.c +@@ -665,7 +665,7 @@ credits_t player_shipPrice( char* shipna + */ + void player_rmShip( char* shipname ) + { +- int i; ++ int i, w; + + for (i=0; i 0) { ++ if (player_missions[j]->id > 0) { + /* Now check if it's in the cargo list. */ +- for (k=0; kncargo; k++) { + /* See if it matches a cargo. */ +- if (player_missions[j].cargo[k] == ship->commodities[i].id) { ++ if (player_missions[j]->cargo[k] == ship->commodities[i].id) { + found = 1; + break; + } Added: head/games/naev/files/patch-src_space.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/naev/files/patch-src_space.c Thu Apr 23 20:36:23 2015 (r384609) @@ -0,0 +1,13 @@ +# Origin: https://github.com/naev/naev/commit/173bad4a7bab85903575798a51259ff6f3dd42c8 +# Subject: Memory leak fix + +--- src/space.c.orig 2015-02-16 17:49:03 UTC ++++ src/space.c +@@ -2978,6 +2978,7 @@ void space_exit (void) + free(pnt->land_func); + free(pnt->land_msg); + free(pnt->bribe_msg); ++ free(pnt->bribe_ack_msg); + + /* tech */ + if (pnt->tech != NULL) Modified: head/games/naev/pkg-descr ============================================================================== --- head/games/naev/pkg-descr Thu Apr 23 20:30:12 2015 (r384608) +++ head/games/naev/pkg-descr Thu Apr 23 20:36:23 2015 (r384609) @@ -1,4 +1,4 @@ NAEV is a 2D space game that combines elements from the action, RPG, and simulation genres. -WWW: http://code.google.com/p/naev/ +WWW: http://sourceforge.net/projects/naev/