diff options
author | Antoine Brodin <antoine@FreeBSD.org> | 2021-01-01 10:11:34 +0000 |
---|---|---|
committer | Antoine Brodin <antoine@FreeBSD.org> | 2021-01-01 10:11:34 +0000 |
commit | 26b4c8f71f91d22e081b27814782686edde0c90a (patch) | |
tree | 1c321c39372c25d8634e75b5c8e08edc676b296d /games | |
parent | 548f16bd1a2915f08878b716eed92ff3267e6de2 (diff) | |
download | ports-26b4c8f71f91d22e081b27814782686edde0c90a.tar.gz ports-26b4c8f71f91d22e081b27814782686edde0c90a.zip |
Revert r559792 to unbreak INDEX and bulk -a
It seems a lot of reverse dependencies were missed
With hat: portmgr
Notes
Notes:
svn path=/head/; revision=559822
Diffstat (limited to 'games')
77 files changed, 4209 insertions, 0 deletions
diff --git a/games/0ad/Makefile b/games/0ad/Makefile new file mode 100644 index 000000000000..fd1ae3e6da87 --- /dev/null +++ b/games/0ad/Makefile @@ -0,0 +1,92 @@ +# $FreeBSD$ + +PORTNAME= 0ad +PORTVERSION= 0.0.23b +PORTREVISION= 12 +CATEGORIES= games +MASTER_SITES= http://releases.wildfiregames.com/ \ + SF/zero-ad/releases +DISTFILES= ${PORTNAME}-${PORTVERSION}-alpha-unix-build.tar.xz \ + ${PORTNAME}-${PORTVERSION}-alpha-unix-data.tar.xz + +MAINTAINER= madpilot@FreeBSD.org +COMMENT= Real-time strategy (RTS) game of ancient warfare + +DEPRECATED= Uses deprecated version of python +EXPIRATION_DATE= 2020-12-31 + +BUILD_DEPENDS= zip:archivers/zip \ + cmake:devel/cmake +LIB_DEPENDS= libboost_thread.so:devel/boost-libs \ + libicui18n.so:devel/icu \ + libpng.so:graphics/png \ + libogg.so:audio/libogg \ + libvorbis.so:audio/libvorbis \ + libcurl.so:ftp/curl \ + libgloox.so:net-im/gloox \ + libminiupnpc.so:net/miniupnpc \ + libnspr4.so:devel/nspr \ + libenet.so:net/enet \ + libtiff.so:graphics/tiff \ + libsodium.so:security/libsodium + +USES= compiler:c++11-lib desktop-file-utils dos2unix gl gmake gnome \ + iconv jpeg openal:al pkgconfig python:2.7,build sdl tar:xz xorg +USE_GNOME= libxml2 +USE_GL= gl +USE_SDL= sdl2 +USE_XORG= x11 xcursor + +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}-alpha +BUILD_WRKSRC= ${WRKSRC}/build/workspaces/gcc +MAKE_ARGS= config=release verbose=1 +CPPFLAGS+= -DU_USING_ICU_NAMESPACE=1 +BUNDLE_LIBS= yes +DOS2UNIX_REGEX= .*\.([ch]p{0,2}|make) +BINARY_ALIAS= python=${PYTHON_CMD} + +USE_WX= 3.0+ +WX_COMPS= wx:lib +MAKE_ENV+= JOBS=${_MAKE_JOBS} + +BROKEN_aarch64= fails to compile: no member named verifyHeapAccessDisassembly +BROKEN_armv6= fails to link: fatal error: conftest: Unknown error: -1 +BROKEN_armv7= fails to link: fatal error: conftest: Unknown error: -1 +BROKEN_powerpc64= fails to compile: _psutil_bsd.c: error: 'struct xtcpcb' has no member named 'xt_tp' + +PORTDATA= * + +.include <bsd.port.pre.mk> + +post-patch: + @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ + -e 's|%%CC%%|${CC}|' \ + ${WRKSRC}/build/premake/premake5.lua ${WRKSRC}/build/premake/extern_libs5.lua +.if ${ARCH} == i386 && ${CHOSEN_COMPILER_TYPE} == gcc + @${REINPLACE_CMD} -e '1055,1251s/-rdynamic/-lssp_nonshared &/' \ + -e '1441s/"execinfo",/& "ssp_nonshared",/' \ + ${WRKSRC}/build/premake/premake5.lua +.endif + @${REINPLACE_CMD} 's,^\(Exec=\)/usr/local,\1${PREFIX},' \ + ${WRKSRC}/build/resources/0ad.desktop + @${REINPLACE_CMD} 's|%%PREFIX%%|${PREFIX}|' \ + ${WRKSRC}/build/resources/0ad.sh + +pre-build: + (cd ${WRKSRC}/build/workspaces && ${SETENV} ${MAKE_ENV} ./update-workspaces.sh --bindir=${PREFIX}/bin --datadir=${DATADIR} --libdir=${PREFIX}/lib/${PORTNAME}) + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/binaries/system/pyrogenesis ${STAGEDIR}${PREFIX}/bin + ${INSTALL_SCRIPT} ${WRKSRC}/build/resources/0ad.sh ${STAGEDIR}${PREFIX}/bin/0ad + ${INSTALL_PROGRAM} ${WRKSRC}/binaries/system/ActorEditor ${STAGEDIR}${PREFIX}/bin + ${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PORTNAME} + (cd ${WRKSRC}/binaries/system && ${INSTALL_LIB} libAtlasUI.so libCollada.so libmozjs38-ps-release.so libnvcore.so libnvimage.so libnvmath.so libnvtt.so ${STAGEDIR}${PREFIX}/lib/${PORTNAME}) + ${INSTALL_DATA} ${WRKSRC}/build/resources/0ad.desktop ${STAGEDIR}${PREFIX}/share/applications + ${INSTALL_DATA} ${WRKSRC}/build/resources/0ad.png ${STAGEDIR}${PREFIX}/share/pixmaps + ${MKDIR} ${STAGEDIR}${DATADIR} + (cd ${WRKSRC}/binaries/data && ${COPYTREE_SHARE} "config l10n tests tools" ${STAGEDIR}${DATADIR}) + ${MKDIR} ${STAGEDIR}${DATADIR}/mods/public ${STAGEDIR}${DATADIR}/mods/mod + ${TAR} xf ${WRKSRC}/binaries/data/mods/public/public.zip -C ${STAGEDIR}${DATADIR}/mods/public --no-same-permissions + ${TAR} xf ${WRKSRC}/binaries/data/mods/mod/mod.zip -C ${STAGEDIR}${DATADIR}/mods/mod --no-same-permissions + +.include <bsd.port.post.mk> diff --git a/games/0ad/distinfo b/games/0ad/distinfo new file mode 100644 index 000000000000..7aa206213e7b --- /dev/null +++ b/games/0ad/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1545588170 +SHA256 (0ad-0.0.23b-alpha-unix-build.tar.xz) = 01bff7641ee08cac896c54d518d7e4b01752513105558f212e3199d747512a37 +SIZE (0ad-0.0.23b-alpha-unix-build.tar.xz) = 31922812 +SHA256 (0ad-0.0.23b-alpha-unix-data.tar.xz) = e11b4ade7ede954cbbdc1fe6e2e4b25ac6b8d5a644133b640ffc9b099338a713 +SIZE (0ad-0.0.23b-alpha-unix-data.tar.xz) = 691280800 diff --git a/games/0ad/files/patch-build_premake_extern__libs5.lua b/games/0ad/files/patch-build_premake_extern__libs5.lua new file mode 100644 index 000000000000..946c30375b72 --- /dev/null +++ b/games/0ad/files/patch-build_premake_extern__libs5.lua @@ -0,0 +1,21 @@ +--- build/premake/extern_libs5.lua.orig 2018-04-29 15:44:48 UTC ++++ build/premake/extern_libs5.lua +@@ -191,7 +191,7 @@ extern_lib_defs = { + end + -- TODO: This actually applies to most libraries we use on BSDs, make this a global setting. + if os.istarget("bsd") then +- sysincludedirs { "/usr/local/include" } ++ sysincludedirs { "%%LOCALBASE%%/include" } + end + end, + link_settings = function() +@@ -301,9 +301,6 @@ extern_lib_defs = { + elseif os.istarget("macosx") then + add_default_include_paths("iconv") + defines { "LIBICONV_STATIC" } +- elseif os.getversion().description == "FreeBSD" then +- defines { "HAVE_ICONV_CONST" } +- defines { "ICONV_CONST=const" } + end + end, + link_settings = function() diff --git a/games/0ad/files/patch-build_premake_premake5.lua b/games/0ad/files/patch-build_premake_premake5.lua new file mode 100644 index 000000000000..edd965ab45dd --- /dev/null +++ b/games/0ad/files/patch-build_premake_premake5.lua @@ -0,0 +1,17 @@ +--- build/premake/premake5.lua.orig 2018-04-22 18:14:45 UTC ++++ build/premake/premake5.lua +@@ -376,11 +376,11 @@ function project_add_x11_dirs() + sysincludedirs { + "/usr/X11R6/include/X11", + "/usr/X11R6/include", +- "/usr/local/include/X11", +- "/usr/local/include", ++ "%%LOCALBASE%%/include/X11", ++ "%%LOCALBASE%%/include", + "/usr/include/X11" + } +- libdirs { "/usr/X11R6/lib" } ++ libdirs { "%%LOCALBASE%%/lib" } + end + end + diff --git a/games/0ad/files/patch-build_workspaces_update-workspaces.sh b/games/0ad/files/patch-build_workspaces_update-workspaces.sh new file mode 100644 index 000000000000..311f65a0c84f --- /dev/null +++ b/games/0ad/files/patch-build_workspaces_update-workspaces.sh @@ -0,0 +1,13 @@ +--- build/workspaces/update-workspaces.sh.orig 2014-09-20 19:02:24 UTC ++++ build/workspaces/update-workspaces.sh +@@ -1,10 +1,5 @@ + #!/bin/sh + +-if [ "$(id -u)" = "0" ]; then +- echo "Running as root will mess up file permissions. Aborting ..." 1>&2 +- exit 1 +-fi +- + die() + { + echo ERROR: $* diff --git a/games/0ad/files/patch-icu68 b/games/0ad/files/patch-icu68 new file mode 100644 index 000000000000..5e9199d89535 --- /dev/null +++ b/games/0ad/files/patch-icu68 @@ -0,0 +1,17 @@ +Regressed by https://github.com/unicode-org/icu/commit/c3fe7e09d844 + +../../../source/i18n/L10n.cpp:208:82: error: use of undeclared identifier 'TRUE' + currentLocaleIsOriginalGameLocale = (currentLocale == icu::Locale::getUS()) == TRUE; + ^ + +--- source/i18n/L10n.cpp.orig 2018-04-10 18:13:32 UTC ++++ source/i18n/L10n.cpp +@@ -205,7 +205,7 @@ void L10n::ReevaluateCurrentLocaleAndReload() + else + { + GetDictionaryLocale(locale, currentLocale); +- currentLocaleIsOriginalGameLocale = (currentLocale == icu::Locale::getUS()) == TRUE; ++ currentLocaleIsOriginalGameLocale = (currentLocale == icu::Locale::getUS()) == true; + useLongStrings = false; + } + LoadDictionaryForCurrentLocale(); diff --git a/games/0ad/files/patch-libraries_source_fcollada_src_FCollada_FUtils_FUStringBuilder.hpp b/games/0ad/files/patch-libraries_source_fcollada_src_FCollada_FUtils_FUStringBuilder.hpp new file mode 100644 index 000000000000..1e7b881a41fb --- /dev/null +++ b/games/0ad/files/patch-libraries_source_fcollada_src_FCollada_FUtils_FUStringBuilder.hpp @@ -0,0 +1,157 @@ +--- libraries/source/fcollada/src/FCollada/FUtils/FUStringBuilder.hpp.orig 2017-07-28 19:57:27 UTC ++++ libraries/source/fcollada/src/FCollada/FUtils/FUStringBuilder.hpp +@@ -26,63 +26,6 @@ + #define SAFE_DELETE_ARRAY(ptr) if (ptr != NULL) { delete [] ptr; ptr = NULL; } + #endif + +-template <class Char, class FloatType> +-void FloatToString(FloatType f, Char* sz) +-{ +- Char* buffer = sz + 1; +- static const int digitCount = 6; +- int decimal, sign; +- +- // ecvt rounds the string for us: http://www.datafocus.com/docs/man3/ecvt.3.asp +- char* end = ecvt(f, digitCount, &decimal, &sign); +- +- if (sign != 0) (*buffer++) = '-'; +- int count = digitCount; +- if (decimal > digitCount) +- { +- // We use the scientific notation: P.MeX +- (*buffer++) = (*end++); // P is one character. +- (*buffer++) = '.'; +- +- // Mantissa (cleaned for zeroes) +- for (--count; count > 0; --count) if (end[count - 1] != '0') break; +- for (int i = 0; i < count; ++i) (*buffer++) = (*end++); +- if (buffer[-1] == '.') --buffer; +- +- // Exponent +- (*buffer++) = 'e'; +- uint32 exponent = decimal - 1; // X +- if (exponent >= 10) (*buffer++) = (Char) ('0' + (exponent / 10)); +- (*buffer++) = (Char) ('0' + (exponent % 10)); +- (*buffer) = 0; +- return; +- } +- else if (decimal > 0) +- { +- // Simple number: A.B +- for (int i = 0; i < decimal; ++i) (*buffer++) = (*end++); +- if (decimal < digitCount) (*buffer++) = '.'; +- count = digitCount - decimal; +- } +- else if (decimal < -digitCount) +- { +- // What case is this? +- decimal = count = 0; +- } +- else if (decimal < 0 || (decimal == 0 && *end != '0')) +- { +- // Tiny number: 0.Me-X +- (*buffer++) = '0'; (*buffer++) = '.'; +- for (int i = 0; i < -decimal; ++i) (*buffer++) = '0'; +- count = digitCount + decimal; +- } +- for (; count > 0; --count) if (end[count - 1] != '0') break; +- for (int i = 0; i < count; ++i) (*buffer++) = (*end++); +- if (decimal == 0 && count == 0) (*buffer++) = '0'; +- if (buffer[-1] == '.') --buffer; +- (*buffer) = 0; +-} +- + template <class Char> + FUStringBuilderT<Char>::FUStringBuilderT(const String& sz) + { +@@ -234,53 +177,50 @@ void FUStringBuilderT<Char>::append(const FUStringBuil + template <class Char> + void FUStringBuilderT<Char>::append(float f) + { +-#ifdef WIN32 +- // use <float.h> _isnan method to detect the 1.#IND00 NaN. +- if (f != std::numeric_limits<float>::infinity() && f != -std::numeric_limits<float>::infinity() && f != std::numeric_limits<float>::quiet_NaN() && f != std::numeric_limits<float>::signaling_NaN() && !_isnan((double)f)) +-#else +- if (f != std::numeric_limits<float>::infinity() && f != -std::numeric_limits<float>::infinity() && f != std::numeric_limits<float>::quiet_NaN() && f != std::numeric_limits<float>::signaling_NaN()) +-#endif +- { +- if (IsEquivalent(f, 0.0f, std::numeric_limits<float>::epsilon())) append((Char)'0'); +- else +- { +- Char sz[128]; +- FloatToString(f, sz); +- append(sz + 1); +- } +- } +- else if (f == std::numeric_limits<float>::infinity()) +- { append((Char)'I'); append((Char)'N'); append((Char)'F'); } +- else if (f == -std::numeric_limits<float>::infinity()) +- { append((Char)'-'); append((Char)'I'); append((Char)'N'); append((Char)'F'); } +- else +- { append((Char)'N'); append((Char)'a'); append((Char)'N'); } ++ append((double)f); + } + + template <class Char> + void FUStringBuilderT<Char>::append(double f) + { +-#ifdef WIN32 +- // use <float.h> _isnan method to detect the .#IND00 NaN. +- if (f != std::numeric_limits<float>::infinity() && f != -std::numeric_limits<float>::infinity() && f != std::numeric_limits<float>::quiet_NaN() && f != std::numeric_limits<float>::signaling_NaN() && !_isnan(f)) +-#else +- if (f != std::numeric_limits<float>::infinity() && f != -std::numeric_limits<float>::infinity() && f != std::numeric_limits<float>::quiet_NaN() && f != std::numeric_limits<float>::signaling_NaN()) +-#endif +- { +- if (IsEquivalent(f, 0.0, std::numeric_limits<double>::epsilon())) append((Char)'0'); +- else +- { +- Char sz[128]; +- FloatToString(f, sz); +- append(sz + 1); +- } ++ if (f == -std::numeric_limits<double>::infinity()) { ++ append("-INF"); ++ return; ++ } else if (f == std::numeric_limits<double>::infinity()) { ++ append("INF"); ++ return; ++ } else if (f != f) { ++ append("NaN"); ++ return; ++ } else if (-std::numeric_limits<double>::epsilon() < f && f < std::numeric_limits<double>::epsilon()) { ++ append("0.0E0"); ++ return; + } +- else if (f == std::numeric_limits<double>::infinity()) +- { append((Char)'I'); append((Char)'N'); append((Char)'F'); } +- else if (f == -std::numeric_limits<double>::infinity()) +- { append((Char)'-'); append((Char)'I'); append((Char)'N'); append((Char)'F'); } ++ ++ if (f < 0.0) { ++ f = -f; ++ append('-'); ++ } ++ ++ int e = 0; ++// e = floor(log10(f)); ++// f = f / pow(10.0, e); ++ ++ if (f < 1.0) ++ for (; f < 1.0; f *= 10.0) ++ e--; + else +- { append((Char)'N'); append((Char)'a'); append((Char)'N'); } ++ for (; f >= 10.0; f /= 10.0) ++ e++; ++ ++ char tmp[10]; ++ sprintf(tmp, "%.6g", f); ++ append(tmp); ++ if (tmp[1] == 0) // only one digit, add missing part according canonical representation ++ append(".0"); ++ ++ sprintf(tmp, "E%d", e); ++ append(tmp); + } + + template <class Char> diff --git a/games/0ad/files/patch-libraries_source_fcollada_src_Makefile b/games/0ad/files/patch-libraries_source_fcollada_src_Makefile new file mode 100644 index 000000000000..5221789a8bcb --- /dev/null +++ b/games/0ad/files/patch-libraries_source_fcollada_src_Makefile @@ -0,0 +1,11 @@ +--- libraries/source/fcollada/src/Makefile.orig 2019-04-26 13:27:39 UTC ++++ libraries/source/fcollada/src/Makefile +@@ -227,7 +227,7 @@ OBJECTS_ALL = $(OBJECTS_DEBUG) $(OBJECTS_RELEASE) $(OB + all: output/libFColladaSD.a output/libFColladaSR.a install + + output_dirs: +- bash -c 'mkdir -p output/{debug,release,test}/{FCollada/{FCDocument,FMath,FUtils,FColladaTest/{FCTestAssetManagement,FCTestExportImport,FCTestXRef}},FColladaPlugins/FArchiveXML}' ++ for x in debug release test; do for y in FCDocument FMath FUtils FColladaTest; do for z in FCTestAssetManagement FCTestExportImport FCTestXRef; do mkdir -p output/$$x/FCollada/$$y/$$z; done; done; mkdir -p output/$$x/FColladaPlugins/FArchiveXML; done + + test: FCollada/FColladaTest/ output/FColladaTest + ( cd FCollada/FColladaTest/ ; ../../output/FColladaTest ) diff --git a/games/0ad/files/patch-libraries_source_spidermonkey_FixpsutilFreeBSD.diff b/games/0ad/files/patch-libraries_source_spidermonkey_FixpsutilFreeBSD.diff new file mode 100644 index 000000000000..78701a995867 --- /dev/null +++ b/games/0ad/files/patch-libraries_source_spidermonkey_FixpsutilFreeBSD.diff @@ -0,0 +1,168 @@ +--- libraries/source/spidermonkey/FixpsutilFreeBSD.diff.orig 2017-09-13 00:10:27 UTC ++++ libraries/source/spidermonkey/FixpsutilFreeBSD.diff +@@ -1,6 +1,6 @@ +---- python/psutil/psutil/_psutil_bsd.c +-+++ python/psutil/psutil/_psutil_bsd.c +-@@ -957,11 +957,19 @@ psutil_sockaddr_matches(int family, int port, void *pc ++--- ./python/psutil/psutil/_psutil_bsd.c.orig 2015-09-17 22:12:23.000000000 +0200 +++++ ./python/psutil/psutil/_psutil_bsd.c ++@@ -957,11 +957,19 @@ + psutil_sockaddr_addrlen(family)) == 0); + } + +@@ -20,7 +20,7 @@ + struct xinpgen *xig, *oxig; + struct xsocket *so; + +-@@ -969,9 +977,15 @@ psutil_search_tcplist(char *buf, struct kinfo_file *ki ++@@ -969,9 +977,15 @@ + for (xig = (struct xinpgen *)((char *)xig + xig->xig_len); + xig->xig_len > sizeof(struct xinpgen); + xig = (struct xinpgen *)((char *)xig + xig->xig_len)) { +@@ -36,7 +36,44 @@ + + if (so->so_type != kif->kf_sock_type || + so->xso_family != kif->kf_sock_domain || +-@@ -1019,7 +1033,11 @@ psutil_proc_connections(PyObject *self, PyObject *args ++@@ -981,20 +995,36 @@ ++ if (kif->kf_sock_domain == AF_INET) { ++ if (!psutil_sockaddr_matches( ++ AF_INET, inp->inp_lport, &inp->inp_laddr, +++#if __FreeBSD_version < 1200031 ++ &kif->kf_sa_local)) +++#else +++ &kif->kf_un.kf_sock.kf_sa_local)) +++#endif ++ continue; ++ if (!psutil_sockaddr_matches( ++ AF_INET, inp->inp_fport, &inp->inp_faddr, +++#if __FreeBSD_version < 1200031 ++ &kif->kf_sa_peer)) +++#else +++ &kif->kf_un.kf_sock.kf_sa_peer)) +++#endif ++ continue; ++ } else { ++ if (!psutil_sockaddr_matches( ++ AF_INET6, inp->inp_lport, &inp->in6p_laddr, +++#if __FreeBSD_version < 1200031 ++ &kif->kf_sa_local)) +++#else +++ &kif->kf_un.kf_sock.kf_sa_peer)) +++#endif ++ continue; ++ if (!psutil_sockaddr_matches( ++ AF_INET6, inp->inp_fport, &inp->in6p_faddr, +++#if __FreeBSD_version < 1200031 ++ &kif->kf_sa_peer)) +++#else +++ &kif->kf_un.kf_sock.kf_sa_peer)) +++#endif ++ continue; ++ } ++ ++@@ -1019,7 +1049,11 @@ + struct kinfo_file *freep = NULL; + struct kinfo_file *kif; + char *tcplist = NULL; +@@ -48,3 +85,100 @@ + + PyObject *retList = PyList_New(0); + PyObject *tuple = NULL; ++@@ -1094,19 +1128,35 @@ ++ inet_ntop( ++ kif->kf_sock_domain, ++ psutil_sockaddr_addr(kif->kf_sock_domain, +++#if __FreeBSD_version < 1200031 ++ &kif->kf_sa_local), +++#else +++ &kif->kf_un.kf_sock.kf_sa_local), +++#endif ++ lip, ++ sizeof(lip)); ++ inet_ntop( ++ kif->kf_sock_domain, ++ psutil_sockaddr_addr(kif->kf_sock_domain, +++#if __FreeBSD_version < 1200031 ++ &kif->kf_sa_peer), +++#else +++ &kif->kf_un.kf_sock.kf_sa_peer), +++#endif ++ rip, ++ sizeof(rip)); ++ lport = htons(psutil_sockaddr_port(kif->kf_sock_domain, +++#if __FreeBSD_version < 1200031 ++ &kif->kf_sa_local)); +++#else +++ &kif->kf_un.kf_sock.kf_sa_local)); +++#endif ++ rport = htons(psutil_sockaddr_port(kif->kf_sock_domain, +++#if __FreeBSD_version < 1200031 ++ &kif->kf_sa_peer)); +++#else +++ &kif->kf_un.kf_sock.kf_sa_peer)); +++#endif ++ ++ // construct python tuple/list ++ laddr = Py_BuildValue("(si)", lip, lport); ++@@ -1137,7 +1187,11 @@ ++ else if (kif->kf_sock_domain == AF_UNIX) { ++ struct sockaddr_un *sun; ++ +++#if __FreeBSD_version < 1200031 ++ sun = (struct sockaddr_un *)&kif->kf_sa_local; +++#else +++ sun = (struct sockaddr_un *)&kif->kf_un.kf_sock.kf_sa_local; +++#endif ++ snprintf( ++ path, sizeof(path), "%.*s", ++ (sun->sun_len - (sizeof(*sun) - sizeof(sun->sun_path))), ++@@ -1779,7 +1833,11 @@ ++ struct xinpgen *xig, *exig; ++ struct xinpcb *xip; ++ struct xtcpcb *xtp; +++#if __FreeBSD_version >= 1200026 +++ struct xinpcb *inp; +++#else ++ struct inpcb *inp; +++#endif ++ struct xsocket *so; ++ struct sock *sock; ++ const char *varname; ++@@ -1849,13 +1907,21 @@ ++ PyErr_Format(PyExc_RuntimeError, "struct xinpcb size mismatch"); ++ goto error; ++ } +++#if __FreeBSD_version >= 1200026 +++ inp = xip; +++#else ++ inp = &xip->xi_inp; +++#endif ++ so = &xip->xi_socket; ++ break; ++ } ++ ++ inp = &xtp->xt_inp; +++#if __FreeBSD_version >= 1200026 +++ so = &xtp->xt_inp.xi_socket; +++#else ++ so = &xtp->xt_socket; +++#endif ++ char lip[200], rip[200]; ++ int family, lport, rport, pid, status; ++ ++@@ -1863,9 +1929,14 @@ ++ pid = psutil_get_pid_from_sock(hash); ++ if (pid < 0) ++ continue; +++ ++ lport = ntohs(inp->inp_lport); ++ rport = ntohs(inp->inp_fport); +++#if __FreeBSD_version >= 1200026 +++ status = xtp->t_state; +++#else ++ status = xtp->xt_tp.t_state; +++#endif ++ ++ if (inp->inp_vflag & INP_IPV4) { ++ family = AF_INET; diff --git a/games/0ad/files/patch-libraries_source_spidermonkey_build.sh b/games/0ad/files/patch-libraries_source_spidermonkey_build.sh new file mode 100644 index 000000000000..661627fc0407 --- /dev/null +++ b/games/0ad/files/patch-libraries_source_spidermonkey_build.sh @@ -0,0 +1,17 @@ +--- libraries/source/spidermonkey/build.sh.orig 2016-10-04 15:01:34 UTC ++++ libraries/source/spidermonkey/build.sh +@@ -96,6 +96,14 @@ cd js/src + rm -rf build-debug + rm -rf build-release + ++cp jsnativestack.cpp jsnativestack.cpp.orig ++sed 's/# include <pthread_np.h>/#pragma GCC visibility push(default)\ ++#include <pthread_np.h>\ ++#pragma GCC visibility pop/' jsnativestack.cpp.orig >jsnativestack.cpp ++ ++cp configure configure.orig ++sed -e 's/"$ac_cv_have_visibility_class_bug" = "no"; then/"$ac_cv_have_visibility_class_bug" = "no" -a "$OS_ARCH" != "FreeBSD" ; then/' -e 's/-Werror=conversion-null//' configure.orig >configure ++ + # We want separate debug/release versions of the library, so we have to change + # the LIBRARY_NAME for each build. + # (We use perl instead of sed so that it works with MozillaBuild on Windows, diff --git a/games/0ad/files/patch-source_lib_allocators_page__aligned.cpp b/games/0ad/files/patch-source_lib_allocators_page__aligned.cpp new file mode 100644 index 000000000000..87d3081a43e7 --- /dev/null +++ b/games/0ad/files/patch-source_lib_allocators_page__aligned.cpp @@ -0,0 +1,20 @@ +--- source/lib/allocators/page_aligned.cpp.orig 2017-07-28 19:57:26 UTC ++++ source/lib/allocators/page_aligned.cpp +@@ -49,7 +49,7 @@ static const int mmap_flags = MAP_PRIVATE|MAP_ANONYMOU + Status mem_Reserve(size_t size, u8** pp) + { + errno = 0; +- void* ret = mmap(0, size, PROT_NONE, mmap_flags|MAP_NORESERVE, -1, 0); ++ void* ret = mmap(0, size, PROT_NONE, mmap_flags, -1, 0); + *pp = (u8*)ret; + return StatusFromMap(ret); + } +@@ -76,7 +76,7 @@ Status mem_Commit(u8* p, size_t size, int prot) + Status mem_Decommit(u8* p, size_t size) + { + errno = 0; +- void* ret = mmap(p, size, PROT_NONE, mmap_flags|MAP_NORESERVE|MAP_FIXED, -1, 0); ++ void* ret = mmap(p, size, PROT_NONE, mmap_flags|MAP_FIXED, -1, 0); + return StatusFromMap(ret); + } + diff --git a/games/0ad/files/patch-source_lib_sysdep_os_unix_uvm.cpp b/games/0ad/files/patch-source_lib_sysdep_os_unix_uvm.cpp new file mode 100644 index 000000000000..09152b8501de --- /dev/null +++ b/games/0ad/files/patch-source_lib_sysdep_os_unix_uvm.cpp @@ -0,0 +1,20 @@ +--- source/lib/sysdep/os/unix/uvm.cpp.orig 2017-07-28 19:57:26 UTC ++++ source/lib/sysdep/os/unix/uvm.cpp +@@ -40,7 +40,7 @@ namespace vm { + void* ReserveAddressSpace(size_t size, size_t UNUSED(commitSize), PageType UNUSED(pageType), int UNUSED(prot)) + { + errno = 0; +- void* p = mmap(0, size, PROT_NONE, mmap_flags|MAP_NORESERVE, -1, 0); ++ void* p = mmap(0, size, PROT_NONE, mmap_flags, -1, 0); + if(p == MAP_FAILED) + return 0; + return p; +@@ -77,7 +77,7 @@ bool Commit(uintptr_t address, size_t size, PageType U + bool Decommit(uintptr_t address, size_t size) + { + errno = 0; +- if(mmap((void*)address, size, PROT_NONE, mmap_flags|MAP_NORESERVE|MAP_FIXED, -1, 0) == MAP_FAILED) ++ if(mmap((void*)address, size, PROT_NONE, mmap_flags|MAP_FIXED, -1, 0) == MAP_FAILED) + return false; + return true; + } diff --git a/games/0ad/files/patch-source_tools_atlas_AtlasObject_AtlasObjectImpl.cpp b/games/0ad/files/patch-source_tools_atlas_AtlasObject_AtlasObjectImpl.cpp new file mode 100644 index 000000000000..b67f4c71c6e6 --- /dev/null +++ b/games/0ad/files/patch-source_tools_atlas_AtlasObject_AtlasObjectImpl.cpp @@ -0,0 +1,30 @@ +--- source/tools/atlas/AtlasObject/AtlasObjectImpl.cpp.orig 2016-11-23 14:09:58 UTC ++++ source/tools/atlas/AtlasObject/AtlasObjectImpl.cpp +@@ -164,7 +164,12 @@ void AtObj::add(const char* key, AtObj& data) + + void AtObj::add(const char* key, const wxString& value) + { +- add(key, value.wc_str()); ++ const AtNode* o = new AtNode(value.wc_str()); ++ ++ if (!p) ++ p = new AtNode(); ++ ++ p = p->addChild(key, AtNode::Ptr(o)); + } + + void AtObj::add(const char* key, const wchar_t* value) +@@ -187,7 +192,12 @@ void AtObj::set(const char* key, AtObj& data) + + void AtObj::set(const char* key, const wxString& value) + { +- set(key, value.wc_str()); ++ const AtNode* o = new AtNode(value.wc_str()); ++ ++ if (!p) ++ p = new AtNode(); ++ ++ p = p->setChild(key, AtNode::Ptr(o)); + } + + void AtObj::set(const char* key, const wchar_t* value) diff --git a/games/0ad/files/patch-source_tools_atlas_AtlasUI_CustomControls_MapDialog_MapDialog.cpp b/games/0ad/files/patch-source_tools_atlas_AtlasUI_CustomControls_MapDialog_MapDialog.cpp new file mode 100644 index 000000000000..d9653b27468f --- /dev/null +++ b/games/0ad/files/patch-source_tools_atlas_AtlasUI_CustomControls_MapDialog_MapDialog.cpp @@ -0,0 +1,34 @@ +--- source/tools/atlas/AtlasUI/CustomControls/MapDialog/MapDialog.cpp.orig 2018-03-13 20:26:30 UTC ++++ source/tools/atlas/AtlasUI/CustomControls/MapDialog/MapDialog.cpp +@@ -166,11 +166,11 @@ void MapDialog::OnListBox(wxCommandEvent& evt) + else + { + wxString filePath = GetSelectedFilePath(); +- AtlasMessage::qVFSFileExists qry(filePath.wc_str()); ++ AtlasMessage::qVFSFileExists qry(filePath.ToStdWstring()); + qry.Post(); + if (!filePath.IsEmpty() && qry.exists) + { +- AtlasMessage::qVFSFileRealPath qry(filePath.wc_str()); ++ AtlasMessage::qVFSFileRealPath qry(filePath.ToStdWstring()); + qry.Post(); + wxDynamicCast(FindWindow(ID_MapDialogFilename), wxTextCtrl)->ChangeValue(*qry.realPath); + } +@@ -221,7 +221,7 @@ void MapDialog::OpenFile() + if (filePath.empty()) + return; + +- AtlasMessage::qVFSFileExists qry(filePath.wc_str()); ++ AtlasMessage::qVFSFileExists qry(filePath.ToStdWstring()); + qry.Post(); + if (!qry.exists) + return; +@@ -236,7 +236,7 @@ void MapDialog::SaveFile() + return; + + // TODO: this test would work better outside the VFS +- AtlasMessage::qVFSFileExists qry(filePath.wc_str()); ++ AtlasMessage::qVFSFileExists qry(filePath.ToStdWstring()); + qry.Post(); + if (qry.exists) + { diff --git a/games/0ad/files/patch-source_tools_atlas_AtlasUI_ScenarioEditor_ScenarioEditor.cpp b/games/0ad/files/patch-source_tools_atlas_AtlasUI_ScenarioEditor_ScenarioEditor.cpp new file mode 100644 index 000000000000..4b1b88917a8c --- /dev/null +++ b/games/0ad/files/patch-source_tools_atlas_AtlasUI_ScenarioEditor_ScenarioEditor.cpp @@ -0,0 +1,56 @@ +--- source/tools/atlas/AtlasUI/ScenarioEditor/ScenarioEditor.cpp.orig 2018-03-13 20:20:45 UTC ++++ source/tools/atlas/AtlasUI/ScenarioEditor/ScenarioEditor.cpp +@@ -723,7 +723,7 @@ bool ScenarioEditor::OpenFile(const wxString& name, co + wxBusyInfo busy(_("Loading ") + name); + wxBusyCursor busyc; + +- AtlasMessage::qVFSFileExists qry(filename.wc_str()); ++ AtlasMessage::qVFSFileExists qry(filename.ToStdWstring()); + qry.Post(); + if (!qry.exists) + return false; +@@ -733,7 +733,7 @@ bool ScenarioEditor::OpenFile(const wxString& name, co + m_ToolManager.SetCurrentTool(_T("")); + // TODO: clear the undo buffer, etc + +- std::wstring map(filename.wc_str()); ++ std::wstring map(filename.ToStdWstring()); + POST_MESSAGE(LoadMap, (map)); + + SetOpenFilename(name); +@@ -786,7 +786,7 @@ void ScenarioEditor::OnImportHeightmap(wxCommandEvent& + + OpenFile(_T(""), _T("maps/scenarios/_default.xml")); + +- std::wstring image(dlg.GetPath().wc_str()); ++ std::wstring image(dlg.GetPath().ToStdWstring()); + POST_MESSAGE(ImportHeightmap, (image)); + + // TODO: Make this a non-undoable command +@@ -830,7 +830,7 @@ void ScenarioEditor::OnSave(wxCommandEvent& event) + // the preview units.) + m_ToolManager.SetCurrentTool(_T("")); + +- std::wstring map(m_OpenFilename.wc_str()); ++ std::wstring map(m_OpenFilename.ToStdWstring()); + POST_MESSAGE(SaveMap, (map)); + + // Wait for it to finish saving +@@ -852,7 +852,7 @@ void ScenarioEditor::OnSaveAs(wxCommandEvent& WXUNUSED + + m_ToolManager.SetCurrentTool(_T("")); + +- std::wstring map(filePath.wc_str()); ++ std::wstring map(filePath.ToStdWstring()); + POST_MESSAGE(SaveMap, (map)); + + SetOpenFilename(filePath); +@@ -920,7 +920,7 @@ void ScenarioEditor::OnJavaScript(wxCommandEvent& WXUN + wxString cmd = ::wxGetTextFromUser(_T(""), _("JS command"), _T(""), this); + if (cmd.IsEmpty()) + return; +- POST_MESSAGE(JavaScript, ((std::wstring)cmd.wc_str())); ++ POST_MESSAGE(JavaScript, ((std::wstring)cmd.ToStdWstring())); + } + + void ScenarioEditor::OnCameraReset(wxCommandEvent& WXUNUSED(event)) diff --git a/games/0ad/pkg-descr b/games/0ad/pkg-descr new file mode 100644 index 000000000000..948039bd24f9 --- /dev/null +++ b/games/0ad/pkg-descr @@ -0,0 +1,16 @@ +0 A.D. (pronounced "zero ey-dee") is a free, open-source, cross-platform +real-time strategy (RTS) game of ancient warfare. In short, it is +a historically-based war/economy game that allows players to relive +or rewrite the history of Western civilizations, focusing on the +years between 500 B.C. and 500 A.D. The project is highly ambitious, +involving state-of-the-art 3D graphics, detailed artwork, sound, +and a flexible and powerful custom-built game engine. + +The game has been in development by Wildfire Games (WFG), a group +of volunteer, hobbyist game developers, since 2001. The code and +data are available under the GPL license, and the art, sound and +documentation are available under CC-BY-SA. In short, we consider +0 A.D. an educational celebration of game development and ancient +history. + +WWW: https://play0ad.com/ diff --git a/games/0ad/pkg-plist b/games/0ad/pkg-plist new file mode 100644 index 000000000000..75d3e4e5b2c5 --- /dev/null +++ b/games/0ad/pkg-plist @@ -0,0 +1,12 @@ +bin/pyrogenesis +bin/0ad +bin/ActorEditor +lib/0ad/libAtlasUI.so +lib/0ad/libCollada.so +lib/0ad/libmozjs38-ps-release.so +lib/0ad/libnvcore.so +lib/0ad/libnvimage.so +lib/0ad/libnvmath.so +lib/0ad/libnvtt.so +share/applications/0ad.desktop +share/pixmaps/0ad.png diff --git a/games/Makefile b/games/Makefile index 46bb221398c8..f13fa6103bd4 100644 --- a/games/Makefile +++ b/games/Makefile @@ -3,6 +3,7 @@ COMMENT = Games and related software + SUBDIR += 0ad SUBDIR += 0verkill SUBDIR += 2048 SUBDIR += 2048-qt @@ -183,6 +184,7 @@ SUBDIR += d2x SUBDIR += dMagnetic SUBDIR += dangen + SUBDIR += dangerdeep SUBDIR += dangerdeep-data SUBDIR += darkplaces SUBDIR += defendguin @@ -289,6 +291,7 @@ SUBDIR += freeminer SUBDIR += freeminer-default SUBDIR += freeorion + SUBDIR += freera SUBDIR += freesweep SUBDIR += freesynd SUBDIR += freetennis @@ -316,6 +319,7 @@ SUBDIR += glest-data SUBDIR += glightoff SUBDIR += glmaze + SUBDIR += glob2 SUBDIR += glsfcave SUBDIR += gltron SUBDIR += gmastermind @@ -589,6 +593,7 @@ SUBDIR += mancala SUBDIR += mangband SUBDIR += mari0 + SUBDIR += marsnomercy SUBDIR += masterserver SUBDIR += maxr SUBDIR += meandmyshadow @@ -637,6 +642,7 @@ SUBDIR += nethack36 SUBDIR += nethack36-nox11 SUBDIR += netherearth + SUBDIR += netpanzer SUBDIR += netradiant SUBDIR += netrek-BRMH-bin SUBDIR += netrek-client-cow @@ -739,6 +745,7 @@ SUBDIR += phlipple SUBDIR += picmi SUBDIR += pinball + SUBDIR += pingus SUBDIR += pink-pony SUBDIR += pioneer SUBDIR += pioneers @@ -821,6 +828,7 @@ SUBDIR += redorblack SUBDIR += regoth SUBDIR += reminiscence + SUBDIR += renpy SUBDIR += rescue SUBDIR += residualvm SUBDIR += retroarch diff --git a/games/dangerdeep/Makefile b/games/dangerdeep/Makefile new file mode 100644 index 000000000000..b8250b4c9282 --- /dev/null +++ b/games/dangerdeep/Makefile @@ -0,0 +1,56 @@ +# Created by: Jose Alonso Cardenas Marquez <acardenas@bsd.org.pe> +# $FreeBSD$ + +PORTNAME= dangerdeep +PORTVERSION= 0.3.0 +PORTREVISION= 15 +CATEGORIES= games +MASTER_SITES= SF/${PORTNAME}/danger_from_the_deep-src/${PORTVERSION} +DIST_SUBDIR= ${PORTNAME} + +MAINTAINER= ports@FreeBSD.org +COMMENT= Open source World War II German submarine simulation + +LIB_DEPENDS= libfftw3.so:math/fftw3 +RUN_DEPENDS= dangerdeep-data>0:games/dangerdeep-data + +USES= compiler gl scons:python2 sdl +USE_GL= yes +USE_SDL= sdl mixer image net + +CXXFLAGS+= ${CXXFLAGS_${CHOSEN_COMPILER_TYPE}} +CXXFLAGS_clang= -Wno-c++11-narrowing +MAKE_ARGS= installbindir=${PREFIX}/bin installdatadir=${DATADIR} +MAKE_ENV= X11BASE=${LOCALBASE} + +PLIST_FILES= bin/dangerdeep bin/crosssection bin/damagemodel \ + bin/oceantest bin/portal bin/viewmodel \ + man/man6/dangerdeep.6.gz + +PORTDOCS= CREDITS README + +OPTIONS_DEFINE= DOCS + +.include <bsd.port.pre.mk> + +.if defined(PACKAGE_BUILDING) +MAKE_ARGS+= usex86sse=-1 # disable MMX/SSE on the build cluster +.endif + +post-patch: + @${REINPLACE_CMD} -e 's|/usr/share/games/dangerdeep|${DATADIR}|; \ + s|Linux|"Danger from the Deep"|' ${WRKSRC}/doc/man/dangerdeep.6 + @${REINPLACE_CMD} -e 's|/usr/X11BASE|${LOCALBASE}|g' \ + ${WRKSRC}/SConstruct + +do-install: + @cd ${WRKSRC}/build/freebsd && \ + ${INSTALL_PROGRAM} dangerdeep crosssection damagemodel oceantest \ + portal viewmodel ${STAGEDIR}${PREFIX}/bin + + ${INSTALL_MAN} ${WRKSRC}/doc/man/dangerdeep.6 ${STAGEDIR}${PREFIX}/man/man6 + ${GZIP_CMD} ${STAGEDIR}${PREFIX}/man/man6/dangerdeep.6 + ${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.post.mk> diff --git a/games/dangerdeep/distinfo b/games/dangerdeep/distinfo new file mode 100644 index 000000000000..c89dfb7286ee --- /dev/null +++ b/games/dangerdeep/distinfo @@ -0,0 +1,2 @@ +SHA256 (dangerdeep/dangerdeep-0.3.0.tar.gz) = bdab6b9b1c2b5f8e618f5c346965ec1f48c9edc9bff1d4f5ff7c8d235464283f +SIZE (dangerdeep/dangerdeep-0.3.0.tar.gz) = 1100972 diff --git a/games/dangerdeep/files/patch-SConstruct b/games/dangerdeep/files/patch-SConstruct new file mode 100644 index 000000000000..b64410a3f260 --- /dev/null +++ b/games/dangerdeep/files/patch-SConstruct @@ -0,0 +1,104 @@ +--- SConstruct.orig 2007-06-11 18:29:13 UTC ++++ SConstruct +@@ -46,7 +46,7 @@ if sys.platform == 'win32': + env.Append(CPPDEFINES = ['USE_SSE']) + print 'Using x86 SSE/MMX optimizations with GCC intrinsics.' + datadir = './data' # use slashes as separator always. C/C++ want it so. +- build_dir = 'win32' ++ variant_dir = 'win32' + elif sys.platform == 'darwin': + print "Compiling for MacOSX" + env = Environment(ENV = os.environ) +@@ -57,12 +57,12 @@ elif sys.platform == 'darwin': + env.Append(CCFLAGS = '-Wall -g -O2 `sdl-config --cflags`') + env.Append(LINKFLAGS = '-F/System/Library/Frameworks -framework AGL -framework OpenGL -framework GLUT -framework Cocoa -framework SDL -framework SDL_image -framework SDL_mixer -framework SDL_net') + datadir = './data' # use slashes as separator always. C/C++ want it so. +- build_dir = 'macosx' ++ variant_dir = 'macosx' + osspecificsrc = Split("""Mac/SDLMain.m""") + if (debug == 1): + env.Append(CCFLAGS = '-g') + env.Append(CPPDEFINES = ['DEBUG']) +-elif (sys.platform == 'freebsd5') or (sys.platform == 'freebsd6') or (sys.platform == 'freebsd7'): ++elif sys.platform.startswith('freebsd'): + print "Compiling for FreeBSD Environment" + env = Environment(ENV = os.environ) + LOCALBASE = os.environ['LOCALBASE'] +@@ -70,7 +70,7 @@ elif (sys.platform == 'freebsd5') or (sys.platform == + SDL_CONFIG = os.environ['SDL_CONFIG'] + env.Replace(CC = os.environ['CC']) + env.Replace(CXX = os.environ['CXX']) +- env.Append(CPPPATH = [LOCALBASE + '/include', LOCALBASE + '/include/SDL11', X11BASE + '/include', X11BASE + '/include/GL']) ++ env.Append(CPPPATH = [LOCALBASE + '/include', LOCALBASE + '/include/SDL', X11BASE + '/include', X11BASE + '/include/GL']) + libpath = [LOCALBASE + '/lib', X11BASE + '/lib'] + gllibs = ['GL', 'GLU'] + sdllibs = ['SDL_image'] +@@ -79,7 +79,7 @@ elif (sys.platform == 'freebsd5') or (sys.platform == + cpuinfol = cpuinfof.readlines() + mmxsupported = False + ssesupported = False +- for i in cpuinfol: ++ for i in cpuinfol: + if i == '1\n': + mmxsupported = True + ssesupported = True +@@ -91,14 +91,15 @@ elif (sys.platform == 'freebsd5') or (sys.platform == + osspecificsrc += [] + print 'Using x86 SSE/MMX optimizations.' + +- env.Replace(CCFLAGS = os.environ['CFLAGS']) ++ env.Replace(CCFLAGS = os.environ['CFLAGS']) + if (debug == 1): + env.Append(CCFLAGS = '-g') + env.Append(CPPDEFINES = ['DEBUG']) +- env.Replace(CXXFLAGS = os.environ['CXXFLAGS'] + ' `' + SDL_CONFIG + ' --cflags`') +- env.Append(LINKFLAGS = '`' + SDL_CONFIG + ' --libs`') +- datadir = '/usr/local/share/dangerdeep' +- build_dir = 'freebsd' ++ env.Replace(CXXFLAGS = os.environ['CXXFLAGS'] + ' `' + SDL_CONFIG + ' --cflags`') ++ env.Append(LINKFLAGS = '`' + SDL_CONFIG + ' --libs`') ++ env.Append(LIBPATH = [LOCALBASE + '/lib', X11BASE + '/lib']) ++ datadir = '/usr/local/share/dangerdeep' ++ variant_dir = 'freebsd' + + if (os.system('grep glBindProgram ' + X11BASE + '/include/GL/gl*.h > /dev/null') == 0): + gllibdirs = [X11BASE + '/lib/', '/usr/lib/', LOCALBASE + '/lib/'] +@@ -179,7 +180,7 @@ else: + print 'Using x86 SSE/MMX optimizations with GCC intrinsics.' + env.Append(CCFLAGS = ccflags) + datadir = '/usr/local/share/dangerdeep' +- build_dir = 'linux' ++ variant_dir = 'linux' + # check for broken libGL, ignore undefined symbols then + if (os.system('grep glBindProgram /usr/include/GL/gl*.h > /dev/null') == 0): + gllibdirs = ['/usr/X11R6/lib/', '/usr/lib/', '/usr/local/lib/'] +@@ -208,7 +209,7 @@ if ARGUMENTS.get('installbindir', 0): + print 'Install binary path: ' + installbindir + print 'Using data dir: ' + datadir + +-target_dir = '#build' + os.sep + build_dir ++target_dir = '#build' + os.sep + variant_dir + source_base_dir = 'src' + + ################ configure +@@ -273,9 +274,9 @@ f.close() + + Export('env', 'gfxlibs', 'alllibs', 'installbindir', 'datadir', 'version', 'osspecificsrc') + +-SConscript(source_base_dir + os.sep + 'SConscript', build_dir = target_dir, duplicate = 0) ++SConscript(source_base_dir + os.sep + 'SConscript', variant_dir = target_dir, duplicate = 0) + +-BuildDir(target_dir, source_base_dir, duplicate=0) ++VariantDir(target_dir, source_base_dir, duplicate=0) + + ############### Helper functions + def findCVS(basedir): +@@ -304,7 +305,7 @@ def findCVS(basedir): + + ############### option so that "scons tarball" builds a tarball of source + # tar building works only on linux +-if (( build_dir == 'linux' ) or ( build_dir == 'freebsd' )) and (os.path.isdir('./CVS')): ++if (( variant_dir == 'linux' ) or ( variant_dir == 'freebsd' )) and (os.path.isdir('./CVS')): + basetarfilename = 'dangerdeep-' + version + os.system('rm -rf ' + basetarfilename) + os.system('ln -s . ' + basetarfilename) diff --git a/games/dangerdeep/files/patch-src__condvar.h b/games/dangerdeep/files/patch-src__condvar.h new file mode 100644 index 000000000000..06f52b5bea5f --- /dev/null +++ b/games/dangerdeep/files/patch-src__condvar.h @@ -0,0 +1,18 @@ +--- ./src/condvar.h.orig 2007-06-11 11:16:23.000000000 -0400 ++++ ./src/condvar.h 2014-08-11 09:56:15.000000000 -0400 +@@ -43,13 +43,13 @@ + + /// wait on condition + ///@param m - mutex to encapsulate waiting condition +- void wait(mutex& m); ++ void wait(::mutex& m); + + /// wait on condition with timeout + ///@param m - mutex to encapsulate waiting condition + ///@param ms - timeout value in milliseconds + ///@return true when woken up by signal, false on timeout +- bool timed_wait(mutex& m, unsigned ms); ++ bool timed_wait(::mutex& m, unsigned ms); + + /// send signal to threads that are waiting on the condition. + ///@note Note that before sending the signal you must make the condition false that would diff --git a/games/dangerdeep/files/patch-src__faulthandler.h b/games/dangerdeep/files/patch-src__faulthandler.h new file mode 100644 index 000000000000..ee8b4ab008d8 --- /dev/null +++ b/games/dangerdeep/files/patch-src__faulthandler.h @@ -0,0 +1,10 @@ +--- ./src/faulthandler.h.orig 2007-06-11 14:29:30.000000000 -0400 ++++ ./src/faulthandler.h 2014-08-11 10:17:47.000000000 -0400 +@@ -46,6 +46,7 @@ + #include <execinfo.h> + #include <stdio.h> + #include <stdlib.h> ++#include <unistd.h> + #include <cxxabi.h> // Needed for __cxa_demangle + #include <signal.h> + #include <string> diff --git a/games/dangerdeep/files/patch-src__mutex.h b/games/dangerdeep/files/patch-src__mutex.h new file mode 100644 index 000000000000..e769fdb33b8d --- /dev/null +++ b/games/dangerdeep/files/patch-src__mutex.h @@ -0,0 +1,20 @@ +--- ./src/mutex.h.orig 2007-06-11 11:16:23.000000000 -0400 ++++ ./src/mutex.h 2014-08-11 09:59:15.000000000 -0400 +@@ -58,7 +58,7 @@ + class mutex_locker + { + protected: +- mutex& mymutex; ++ ::mutex& mymutex; + private: + mutex_locker(); + mutex_locker(const mutex_locker& ); +@@ -67,7 +67,7 @@ + /// create mutex locker + ///@param mtx - mutex to lock + ///@note will instantly lock the mutex that was given as parameter +- mutex_locker(mutex& mtx) : mymutex(mtx) { mymutex.lock(); } ++ mutex_locker(::mutex& mtx) : mymutex(mtx) { mymutex.lock(); } + + /// destroy mutex locker + ///@note will unlock the mutex that was given to the constructor diff --git a/games/dangerdeep/files/patch-src__subsim.cpp b/games/dangerdeep/files/patch-src__subsim.cpp new file mode 100644 index 000000000000..e8155a51c6a4 --- /dev/null +++ b/games/dangerdeep/files/patch-src__subsim.cpp @@ -0,0 +1,19 @@ +--- src/subsim.cpp.orig 2007-06-11 15:16:23 UTC ++++ src/subsim.cpp +@@ -31,6 +31,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, + #else + #include "oglext/OglExt.h" + #endif ++#include <unistd.h> + #include <glu.h> + #include <SDL.h> + #include <SDL_net.h> +@@ -1735,7 +1736,7 @@ int mymain(list<string>& args) + glEnable(GL_LIGHT0); + + // create and start thread for music handling. +- thread::auto_ptr<music> mmusic(new music(use_sound)); ++ ::thread::auto_ptr<music> mmusic(new music(use_sound)); + mmusic->start(); + + reset_loading_screen(); diff --git a/games/dangerdeep/files/patch-src__thread.h b/games/dangerdeep/files/patch-src__thread.h new file mode 100644 index 000000000000..ece066ec7311 --- /dev/null +++ b/games/dangerdeep/files/patch-src__thread.h @@ -0,0 +1,19 @@ +--- ./src/thread.h.orig 2007-06-11 11:16:23.000000000 -0400 ++++ ./src/thread.h 2014-08-11 10:14:00.000000000 -0400 +@@ -25,6 +25,7 @@ + + #include "condvar.h" + #include <stdexcept> ++#include <string> + #include <stdint.h> + + /// base class for threads. +@@ -47,7 +48,7 @@ + struct SDL_Thread* thread_id; + bool thread_abort_request; + thread_state_t thread_state; +- mutex thread_state_mutex; ++ ::mutex thread_state_mutex; + condvar thread_start_cond; + std::string thread_error_message; // to pass exception texts via thread boundaries + diff --git a/games/dangerdeep/files/patch-src_coastmap.h b/games/dangerdeep/files/patch-src_coastmap.h new file mode 100644 index 000000000000..b71f6a5a6517 --- /dev/null +++ b/games/dangerdeep/files/patch-src_coastmap.h @@ -0,0 +1,20 @@ +--- src/coastmap.h.orig 2020-03-29 09:04:12 UTC ++++ src/coastmap.h +@@ -151,7 +151,7 @@ class coastmap + void process_coastline(int x, int y); + void process_segment(int x, int y); + +- class worker : public thread ++ class worker : public ::thread + { + coastmap& cm; + public: +@@ -163,7 +163,7 @@ class coastmap + } + }; + +- thread::auto_ptr<worker> myworker; ++ ::thread::auto_ptr<worker> myworker; + void construction_threaded(); + + public: diff --git a/games/dangerdeep/files/patch-src_shader.cpp b/games/dangerdeep/files/patch-src_shader.cpp new file mode 100644 index 000000000000..77a90990d7a9 --- /dev/null +++ b/games/dangerdeep/files/patch-src_shader.cpp @@ -0,0 +1,26 @@ +compiling failed, log: +0:2(1): preprocessor error: #version must appear on the first line + +--- src/shader.cpp.orig 2020-03-29 17:02:18 UTC ++++ src/shader.cpp +@@ -74,6 +74,8 @@ glsl_shader::glsl_shader(const string& filename, type + // the program as string + string prg; + ++ prg += "#version 110\n"; ++ + // add defines to top of list for preprocessor + for (defines_list::const_iterator it = dl.begin(); it != dl.end(); ++it) { + prg += string("#define ") + *it + "\n"; +@@ -83,7 +85,10 @@ glsl_shader::glsl_shader(const string& filename, type + while (!ifprg.eof()) { + string s; + getline(ifprg, s); +- prg += s + "\n"; ++ string prefix("#version"); ++ if (0 != s.compare(0, prefix.size(), prefix)) { ++ prg += s + "\n"; ++ } + } + + const char* prg_cstr = prg.c_str(); diff --git a/games/dangerdeep/pkg-descr b/games/dangerdeep/pkg-descr new file mode 100644 index 000000000000..5d14b30a85b7 --- /dev/null +++ b/games/dangerdeep/pkg-descr @@ -0,0 +1,6 @@ +Danger from the deep (aka dangerdeep) is a Free / Open Source World War II +German submarine simulation. It is currently available for FreeBSD, Linux/i386 +and Windows, but since it uses SDL/OpenGL it should be portable to other +operating systems or platforms. + +WWW: http://dangerdeep.sourceforge.net/ diff --git a/games/freera/Makefile b/games/freera/Makefile new file mode 100644 index 000000000000..1d5b5a62a984 --- /dev/null +++ b/games/freera/Makefile @@ -0,0 +1,41 @@ +# Created by: Dmitry Marakasov <amdmi3@amdmi3.ru> +# $FreeBSD$ + +PORTNAME= freera +PORTVERSION= 080203 +PORTREVISION= 8 +CATEGORIES= games +MASTER_SITES= SF/${PORTNAME}/${PORTVERSION}%20${PORTNAME}%2B%2B/0.47%20beta +DISTNAME= ${PORTVERSION}_freera++_src + +MAINTAINER= amdmi3@FreeBSD.org +COMMENT= Westwood red alert game engine + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/doc/gpl.txt + +USES= compiler:c++11-lang scons:python2 sdl +USE_SDL= sdl mixer + +WRKSRC= ${WRKDIR}/freera++ + +SUB_FILES= pkg-message + +PLIST_FILES= bin/${PORTNAME} +PORTDATA= * +PLIST_DIRS= %%DATADIR%%/mix + +post-patch: + @${MV} ${WRKSRC}/SConstruct ${WRKSRC}/SConstruct.orig + @${CP} ${FILESDIR}/SConstruct ${WRKSRC}/ + @${REINPLACE_CMD} -e 's|data/|${DATADIR}/|' ${WRKSRC}/src/video/renderer.cpp \ + ${WRKSRC}/src/video/graphicsengine.cpp ${WRKSRC}/src/vfs/vfs.cpp \ + ${WRKSRC}/data/settings/files.ini + @${RM} ${WRKSRC}/data/settings/files.ini.bak + @${RM} -r ${WRKSRC}/data/settings/ra/.svn ${WRKSRC}/data/settings/td/.svn + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/freera ${STAGEDIR}${PREFIX}/bin/ + @cd ${WRKSRC}/data && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}/ + +.include <bsd.port.mk> diff --git a/games/freera/distinfo b/games/freera/distinfo new file mode 100644 index 000000000000..3f5358bd54f8 --- /dev/null +++ b/games/freera/distinfo @@ -0,0 +1,2 @@ +SHA256 (080203_freera++_src.tar.gz) = dc75ebcf58398170614a21fa01f09d08f7ef86758473e1c815a680c713c9645e +SIZE (080203_freera++_src.tar.gz) = 492205 diff --git a/games/freera/files/SConstruct b/games/freera/files/SConstruct new file mode 100644 index 000000000000..38790806b03e --- /dev/null +++ b/games/freera/files/SConstruct @@ -0,0 +1,27 @@ +#!/usr/bin/scons + +from os import environ +from glob import glob + +# Source files +source = ["src/freera.cpp"] +source += glob("src/*/*.cpp") +source += glob("src/*/*/*.cpp") +source += glob("src/lua/*.c") +# This is blatent overkill +exclude = ["src/misc/fibheap.cpp"] +source = filter(lambda x: x not in exclude, source) + +env = Environment( CPPPATH = ["#/src/include", "#/src/include/lua"], + LIBS = [ "SDL_mixer"], ENV = environ ) + +for key in [ 'CC', 'CCFLAGS', 'CXX', 'CXXFLAGS' ]: + if environ.has_key(key): + env.Replace( **{key: environ[key].split(' ')} ) + +env.Append( CCFLAGS = [ "-Wall", "-Wconversion", "-Wno-unused-parameter" ], + CXXFLAGS = [ "-Wall", "-Wconversion", "-Wno-unused-parameter" ] ) + +env.ParseConfig(environ["SDL_CONFIG"] + " --cflags --libs") + +env.Program(target = "freera", source = source) diff --git a/games/freera/files/patch-src-freera.cpp b/games/freera/files/patch-src-freera.cpp new file mode 100644 index 000000000000..3ce38d29bb3f --- /dev/null +++ b/games/freera/files/patch-src-freera.cpp @@ -0,0 +1,13 @@ +--- src/freera.cpp.orig 2007-04-20 00:35:26.000000000 +0400 ++++ src/freera.cpp 2008-02-05 02:42:33.000000000 +0300 +@@ -58,8 +58,8 @@ + } + + const string& binpath = determineBinaryLocation(argv[0]); +- string lf(binpath); +- lf += "/freera.log"; ++ string lf(getenv("HOME")); ++ lf += "/.freera.log"; + + VFS_PreInit(binpath.c_str()); + // Log level is so that only errors are shown on stdout by default diff --git a/games/freera/files/patch-src_game_loadmap.cpp b/games/freera/files/patch-src_game_loadmap.cpp new file mode 100644 index 000000000000..c5366d63581b --- /dev/null +++ b/games/freera/files/patch-src_game_loadmap.cpp @@ -0,0 +1,11 @@ +--- src/game/loadmap.cpp.orig 2008-01-30 22:37:44 UTC ++++ src/game/loadmap.cpp +@@ -63,7 +63,7 @@ std::ostringstream TempString; + throw LoadMapError(); + } + +- if (missionData.player != '\0') ++ if (missionData.player != nullptr) + printf ("%s line %i: Player = %s\n", __FILE__, __LINE__, missionData.player); + + if (gamemode == GAME_MODE_SINGLE_PLAYER){ diff --git a/games/freera/files/pkg-message.in b/games/freera/files/pkg-message.in new file mode 100644 index 000000000000..92960a8aa224 --- /dev/null +++ b/games/freera/files/pkg-message.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +FreeRA requires original .mix files from Red Alert. Copy those files from +Red Alert CD's to %%DATADIR%%/mix/ directory: + + main.mix + redalert.mix + +PS. Both files can be found on either Red Alert CD. Both CDs have the + maps for both campaigns but only the videos for one. +EOM +} +] diff --git a/games/freera/pkg-descr b/games/freera/pkg-descr new file mode 100644 index 000000000000..f12fb4807b7f --- /dev/null +++ b/games/freera/pkg-descr @@ -0,0 +1,6 @@ +This is a rebuild of the (westwood) red alert game engine (based +on FreeCNC). It is a real time strategy game. To play the game with +this engine you need the original game (mix files). The only game +supported is red alert 1 ;) + +WWW: http://freera.sourceforge.net/ diff --git a/games/glob2/Makefile b/games/glob2/Makefile new file mode 100644 index 000000000000..0cd514a64b7e --- /dev/null +++ b/games/glob2/Makefile @@ -0,0 +1,80 @@ +# Created by: thierry@pompo.net +# $FreeBSD$ + +PORTNAME= glob2 +PORTVERSION= 0.9.4.4 +PORTREVISION= 29 +CATEGORIES= games +MASTER_SITES= SAVANNAH/${PORTNAME}/${PORTVERSION:R}/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Globulation 2, free and innovative strategy game + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libvorbis.so:audio/libvorbis \ + libspeex.so:audio/speex \ + libfribidi.so:converters/fribidi \ + libboost_thread.so:devel/boost-libs \ + libfreetype.so:print/freetype2 + +OPTIONS_DEFINE= DOCS PORTAUDIO + +USES= compiler:c++11-lang gl gnome pkgconfig scons:python2 sdl +USE_SDL= image net sdl ttf +USE_GL= gl glu +MAKE_ARGS= CCFLAGS="${CFLAGS}" \ + LINKFLAGS="${LDFLAGS}" \ + BINDIR="${STAGEDIR}${PREFIX}/bin" \ + INSTALLDIR="${STAGEDIR}${PREFIX}/share" \ + DATADIR="${DATADIR}" +INSTALLS_ICONS= yes + +CFLAGS+= -I${LOCALBASE}/include -Wno-return-type +LDFLAGS+= -lpthread -L${LOCALBASE}/lib + +PORTDOCS= README +SUB_FILES= pkg-message + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MPORTAUDIO} +LIB_DEPENDS+= libportaudio.so:audio/portaudio +MAKE_ARGS+= --portaudio=true +.else +MAKE_ARGS+= --portaudio=false +.endif + +pre-configure: + ${REINPLACE_CMD} -e \ + 's|"-g"|""|' \ + ${WRKSRC}/SConstruct + ${REINPLACE_CMD} -e \ + '/^Icon/s|=.*|=${PORTNAME}|' \ + ${WRKSRC}/data/${PORTNAME}.desktop + ${REINPLACE_CMD} -e \ + '/(PACKAGE_SOURCE_DIR)/s|^|//|' \ + ${WRKSRC}/libgag/src/FileManager.cpp + +manual-regression-test: +# Don't enable these tests on pointyhat, they take too long. +.if defined(MAINTAINER_MODE) + (cd ${WRKSRC}/src && ./glob2 -test-games) +.else + (cd ${WRKSRC}/src && ./glob2 -test-games-nox) +.endif + +post-install: +.for s in 16 24 32 48 64 128 + ${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/${s}x${s}/apps + (cd ${WRKSRC}/data/icons && ${INSTALL_DATA} glob2-icon-${s}x${s}.png \ + ${STAGEDIR}${PREFIX}/share/icons/hicolor/${s}x${s}/apps/${PORTNAME}.png) +.endfor + ${RLN} ${STAGEDIR}${PREFIX}/share/icons/hicolor/48x48/apps/${PORTNAME}.png \ + ${STAGEDIR}${PREFIX}/share/pixmaps + ${MKDIR} ${STAGEDIR}${DOCSDIR} + (cd ${WRKSRC} && ${INSTALL_DATA} README ${STAGEDIR}${DOCSDIR}) + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/glob2 + +.include <bsd.port.mk> diff --git a/games/glob2/distinfo b/games/glob2/distinfo new file mode 100644 index 000000000000..aad6c9c01af7 --- /dev/null +++ b/games/glob2/distinfo @@ -0,0 +1,2 @@ +SHA256 (glob2-0.9.4.4.tar.gz) = 0f4d898ec6b05ce27b4a12ef242cc26571304b90d2509932a4743c71311314b8 +SIZE (glob2-0.9.4.4.tar.gz) = 11338986 diff --git a/games/glob2/files/patch-SConstruct b/games/glob2/files/patch-SConstruct new file mode 100644 index 000000000000..4e8789ee9234 --- /dev/null +++ b/games/glob2/files/patch-SConstruct @@ -0,0 +1,84 @@ +--- SConstruct.orig 2009-08-30 19:23:30 UTC ++++ SConstruct +@@ -12,9 +12,11 @@ isLinuxPlatform = sys.platform=='linux2' + isDarwinPlatform = sys.platform=='darwin' + + +-def establish_options(env): +- opts = Options('options_cache.py') ++def establish_variables(env): ++ opts = Variables('variables_cache.py') ++ opts.Add("CCFLAGS", "Manually add to the CCFLAGS", "") + opts.Add("CXXFLAGS", "Manually add to the CXXFLAGS", "-g") ++ opts.Add("LIBPATH", "Manually add to the LIBPATH", "") + opts.Add("LINKFLAGS", "Manually add to the LINKFLAGS", "-g") + if isDarwinPlatform: + opts.Add(PathOption("INSTALLDIR", "Installation Directory", "./")) +@@ -22,14 +24,14 @@ def establish_options(env): + opts.Add("INSTALLDIR", "Installation Directory", "/usr/local/share") + opts.Add("BINDIR", "Binary Installation Directory", "/usr/local/bin") + opts.Add("DATADIR", "Directory where data will be put, set to the same as INSTALLDIR", "/usr/local/share") +- opts.Add(BoolOption("release", "Build for release", 0)) +- opts.Add(BoolOption("profile", "Build with profiling on", 0)) +- opts.Add(BoolOption("mingw", "Build with mingw enabled if not auto-detected", 0)) +- opts.Add(BoolOption("server", "Build only the YOG server, excluding the game and any GUI/sound components", 0)) ++ opts.Add(BoolVariable("release", "Build for release", 0)) ++ opts.Add(BoolVariable("profile", "Build with profiling on", 0)) ++ opts.Add(BoolVariable("mingw", "Build with mingw enabled if not auto-detected", 0)) ++ opts.Add(BoolVariable("server", "Build only the YOG server, excluding the game and any GUI/sound components", 0)) + opts.Add("font", "Build the game using an alternative font placed in the data/font folder", "sans.ttf") + Help(opts.GenerateHelpText(env)) + opts.Update(env) +- opts.Save("options_cache.py", env) ++ opts.Save("variables_cache.py", env) + + + class Configuration: +@@ -111,14 +113,17 @@ def configure(env): + missing.append("zlib") + + boost_thread = '' ++ boost_system = '' + if conf.CheckLib("boost_thread") and conf.CheckCXXHeader("boost/thread/thread.hpp"): + boost_thread="boost_thread" ++ boost_system="boost_system" + elif conf.CheckLib("boost_thread-mt") and conf.CheckCXXHeader("boost/thread/thread.hpp"): + boost_thread="boost_thread-mt" + else: + print "Could not find libboost_thread or libboost_thread-mt or boost/thread/thread.hpp" + missing.append("libboost_thread") + env.Append(LIBS=[boost_thread]) ++ env.Append(LIBS=[boost_system]) + + boost_date_time = '' + if conf.CheckLib("boost_date_time") and conf.CheckCXXHeader("boost/date_time/posix_time/posix_time.hpp"): +@@ -186,7 +191,7 @@ def configure(env): + env.Append(LIBS=['fribidi']) + + #Do checks for portaudio +- if conf.CheckLib('portaudio') and conf.CheckCXXHeader('portaudio.h'): ++ if conf.CheckLib('portaudio2') and conf.CheckCXXHeader('portaudio.h'): + if env['mingw'] or isWindowsPlatform: + print "--------" + print "NOTE: It appears you are compiling under Windows. At this stage, PortAudio crashes Globulation 2 when voice chat is used." +@@ -194,9 +199,9 @@ def configure(env): + print "--------" + else: + if GetOption('portaudio'): +- print "trying to use portaudio" ++ print "trying to use portaudio2" + configfile.add("HAVE_PORTAUDIO ", "Defined when Port Audio support is present and compiled") +- env.Append(LIBS=['portaudio']) ++ env.Append(LIBS=['portaudio2']) + else: + print " no portaudio" + print " no portaudio - although portaudio was found to be installed, you have " +@@ -236,7 +241,7 @@ def main(): + Exit(1) + + env["VERSION"] = "0.9.4.4" +- establish_options(env) ++ establish_variables(env) + #Add the paths to important mingw libraries + if env['mingw'] or isWindowsPlatform: + env.Append(LIBPATH=["C:/msys/1.0/local/lib", "C:/msys/1.0/lib"]) diff --git a/games/glob2/files/patch-boost-1.69 b/games/glob2/files/patch-boost-1.69 new file mode 100644 index 000000000000..2b12ddb3dbac --- /dev/null +++ b/games/glob2/files/patch-boost-1.69 @@ -0,0 +1,17 @@ +After https://github.com/boostorg/logic/commit/23cd89d4c80f build fails: + +src/AIEcho.cpp:4390:9: error: no viable conversion from returned value of type 'boost::logic::tribool' to function return type 'bool' + return is_end!=rhs.is_end || team!=rhs.team || building_type!=rhs.building_type || level!=rhs.level || construction_site!=rhs.construction_site; + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +--- src/AIEcho.cpp.orig 2009-08-29 20:39:05 UTC ++++ src/AIEcho.cpp +@@ -4387,7 +4387,7 @@ bool enemy_building_iterator::operator!=(const enemy_b + { + if(is_end && rhs.is_end) + return false; +- return is_end!=rhs.is_end || team!=rhs.team || building_type!=rhs.building_type || level!=rhs.level || construction_site!=rhs.construction_site; ++ return bool(is_end!=rhs.is_end || team!=rhs.team || building_type!=rhs.building_type || level!=rhs.level || construction_site!=rhs.construction_site); + } + + diff --git a/games/glob2/files/patch-data__SConscript b/games/glob2/files/patch-data__SConscript new file mode 100644 index 000000000000..3959d9adf2c6 --- /dev/null +++ b/games/glob2/files/patch-data__SConscript @@ -0,0 +1,9 @@ +--- ./data/SConscript.orig 2009-06-14 12:11:30.000000000 +0200 ++++ ./data/SConscript 2013-10-28 01:26:26.000000000 +0100 +@@ -19,6 +19,5 @@ + SConscript("fonts/SConscript") + SConscript("gfx/SConscript") + SConscript("gui/SConscript") +-SConscript("icons/SConscript") + SConscript("zik/SConscript") + diff --git a/games/glob2/files/patch-src_EditorMainMenu.cpp b/games/glob2/files/patch-src_EditorMainMenu.cpp new file mode 100644 index 000000000000..da8b9a3ba5a0 --- /dev/null +++ b/games/glob2/files/patch-src_EditorMainMenu.cpp @@ -0,0 +1,11 @@ +--- src/EditorMainMenu.cpp.orig 2018-08-26 04:04:18 UTC ++++ src/EditorMainMenu.cpp +@@ -90,7 +90,7 @@ void EditorMainMenu::onAction(Widget *source, Action a + } + else if (par1==LOADMAP) + { +- ChooseMapScreen chooseMapScreen("maps", "map", false, "games", "game", false); ++ ChooseMapScreen chooseMapScreen("maps", "map", false, "games", "game", NULL); + int rc=chooseMapScreen.execute(globalContainer->gfx, 40); + if (rc==ChooseMapScreen::OK) + { diff --git a/games/glob2/files/patch-src_LANMenuScreen.cpp b/games/glob2/files/patch-src_LANMenuScreen.cpp new file mode 100644 index 000000000000..95e4513fe79b --- /dev/null +++ b/games/glob2/files/patch-src_LANMenuScreen.cpp @@ -0,0 +1,11 @@ +--- src/LANMenuScreen.cpp.orig 2018-08-26 04:11:03 UTC ++++ src/LANMenuScreen.cpp +@@ -62,7 +62,7 @@ void LANMenuScreen::onAction(Widget *source, Action ac + } + else if(par1 == HOST) + { +- ChooseMapScreen cms("maps", "map", false, "games", "game", false); ++ ChooseMapScreen cms("maps", "map", false, "games", "game", NULL); + int rc = cms.execute(globalContainer->gfx, 40); + if(rc == ChooseMapScreen::OK) + { diff --git a/games/glob2/files/patch-src_YOGClientLobbyScreen.cpp b/games/glob2/files/patch-src_YOGClientLobbyScreen.cpp new file mode 100644 index 000000000000..9d03f470e21f --- /dev/null +++ b/games/glob2/files/patch-src_YOGClientLobbyScreen.cpp @@ -0,0 +1,11 @@ +--- src/YOGClientLobbyScreen.cpp.orig 2018-08-26 04:08:24 UTC ++++ src/YOGClientLobbyScreen.cpp +@@ -326,7 +326,7 @@ void YOGClientLobbyScreen::playerListUpdated() + + void YOGClientLobbyScreen::hostGame() + { +- ChooseMapScreen cms("maps", "map", false, "games", "game", false); ++ ChooseMapScreen cms("maps", "map", false, "games", "game", NULL); + int rc = cms.execute(globalContainer->gfx, 40); + if(rc == ChooseMapScreen::OK) + { diff --git a/games/glob2/files/patch-src__ConfigFiles.h b/games/glob2/files/patch-src__ConfigFiles.h new file mode 100644 index 000000000000..8f1c30ca2069 --- /dev/null +++ b/games/glob2/files/patch-src__ConfigFiles.h @@ -0,0 +1,15 @@ +--- ./src/ConfigFiles.h.orig 2009-06-14 12:11:34.000000000 +0200 ++++ ./src/ConfigFiles.h 2013-10-28 01:26:26.000000000 +0100 +@@ -178,7 +178,11 @@ + else + { + std::cerr << "ConfigVector::get(" << static_cast<unsigned int>(id) << ") : warning : id is not valid, returning default" << std::endl; +- assert(false); ++ // FreeBSD: patch impoted from glob2's CVS ++ // assert(false); ++ // I commented the assert because it crashed glob2 ++ // sometimes, when a building was repaired. ++ // This has to be really fixed! + return &defaultEntry; + } + } diff --git a/games/glob2/files/patch-src__Game.h b/games/glob2/files/patch-src__Game.h new file mode 100644 index 000000000000..ed710bb7bad6 --- /dev/null +++ b/games/glob2/files/patch-src__Game.h @@ -0,0 +1,36 @@ +--- src/Game.h.orig ++++ src/Game.h +@@ -82,6 +82,16 @@ + DRAW_OVERLAY = 0x100, + }; + ++ struct BuildProject ++ { ++ int posX; ++ int posY; ++ int teamNumber; ++ int typeNum; ++ int unitWorking; ++ int unitWorkingFuture; ++ }; ++ + /// This method will prepare the game with this mapHeader + void setMapHeader(const MapHeader& mapHeader); + +@@ -149,16 +159,6 @@ + BOTTOM_TO_TOP + }; + +- struct BuildProject +- { +- int posX; +- int posY; +- int teamNumber; +- int typeNum; +- int unitWorking; +- int unitWorkingFuture; +- }; +- + ///Initiates Game + void init(GameGUI *gui, MapEdit* edit); + diff --git a/games/glob2/files/pkg-message.in b/games/glob2/files/pkg-message.in new file mode 100644 index 000000000000..95b6f098faac --- /dev/null +++ b/games/glob2/files/pkg-message.in @@ -0,0 +1,20 @@ +[ +{ type: install + message: <<EOM +Globulation 2 has been installed. + +You can try to launch it typing + + glob2 + +Anyway, it will not always work, so it is suggested that you type + + glob2 --help + +and read about command lines arguments. + +Try to use -G option if you have problems with dri and glx (OpenGL), +or -m if you have problems with sound, or -C to disable custom cursor. +EOM +} +] diff --git a/games/glob2/pkg-descr b/games/glob2/pkg-descr new file mode 100644 index 000000000000..371eb74a2c24 --- /dev/null +++ b/games/glob2/pkg-descr @@ -0,0 +1,12 @@ +Globulation 2 is an innovative high quality Real-Time Strategy [RTS], +which minimizes micro-management by automatically assigning tasks to +the units. The player has to choose the number of units he wants for +the different tasks, and the units will do their best to satisfy the +requests. This allows to manage more units and to focus on the strategy. + +It can be played alone, through your Local Area Network [LAN], or through +Internet thanks to Ysagoon Online Game [YOG], a meta-server. It also +features a scripting language for versatile gameplay or tutorials and an +integrated map editor. + +WWW: http://globulation2.org/ diff --git a/games/glob2/pkg-plist b/games/glob2/pkg-plist new file mode 100644 index 000000000000..f3772c10391d --- /dev/null +++ b/games/glob2/pkg-plist @@ -0,0 +1,1746 @@ +bin/glob2 +share/applications/glob2.desktop +%%DATADIR%%/campaigns/Tutorial_Campaign.txt +%%DATADIR%%/campaigns/tutorial-part1.map +%%DATADIR%%/campaigns/tutorial-part2.map +%%DATADIR%%/campaigns/tutorial-part3.map +%%DATADIR%%/campaigns/tutorial-part4.map +%%DATADIR%%/data/authors.txt +%%DATADIR%%/data/buildings.default.txt +%%DATADIR%%/data/buildings.txt +%%DATADIR%%/data/fonts/sans.ttf +%%DATADIR%%/data/gfx/IntroMN.png +%%DATADIR%%/data/gfx/area0.png +%%DATADIR%%/data/gfx/area1.png +%%DATADIR%%/data/gfx/area10.png +%%DATADIR%%/data/gfx/area11.png +%%DATADIR%%/data/gfx/area12.png +%%DATADIR%%/data/gfx/area13.png +%%DATADIR%%/data/gfx/area14.png +%%DATADIR%%/data/gfx/area15.png +%%DATADIR%%/data/gfx/area16.png +%%DATADIR%%/data/gfx/area17.png +%%DATADIR%%/data/gfx/area18.png +%%DATADIR%%/data/gfx/area19.png +%%DATADIR%%/data/gfx/area2.png +%%DATADIR%%/data/gfx/area20.png +%%DATADIR%%/data/gfx/area21.png +%%DATADIR%%/data/gfx/area22.png +%%DATADIR%%/data/gfx/area23.png +%%DATADIR%%/data/gfx/area3.png +%%DATADIR%%/data/gfx/area4.png +%%DATADIR%%/data/gfx/area5.png +%%DATADIR%%/data/gfx/area6.png +%%DATADIR%%/data/gfx/area7.png +%%DATADIR%%/data/gfx/area8.png +%%DATADIR%%/data/gfx/area9.png +%%DATADIR%%/data/gfx/barracks0b0.png +%%DATADIR%%/data/gfx/barracks0b0r.png +%%DATADIR%%/data/gfx/barracks1b0.png +%%DATADIR%%/data/gfx/barracks1b0r.png +%%DATADIR%%/data/gfx/barracks2b0.png +%%DATADIR%%/data/gfx/barracks2b0r.png +%%DATADIR%%/data/gfx/black0.png +%%DATADIR%%/data/gfx/black1.png +%%DATADIR%%/data/gfx/black10.png +%%DATADIR%%/data/gfx/black11.png +%%DATADIR%%/data/gfx/black12.png +%%DATADIR%%/data/gfx/black13.png +%%DATADIR%%/data/gfx/black14.png +%%DATADIR%%/data/gfx/black15.png +%%DATADIR%%/data/gfx/black2.png +%%DATADIR%%/data/gfx/black3.png +%%DATADIR%%/data/gfx/black4.png +%%DATADIR%%/data/gfx/black5.png +%%DATADIR%%/data/gfx/black6.png +%%DATADIR%%/data/gfx/black7.png +%%DATADIR%%/data/gfx/black8.png +%%DATADIR%%/data/gfx/black9.png +%%DATADIR%%/data/gfx/brush0.png +%%DATADIR%%/data/gfx/brush1.png +%%DATADIR%%/data/gfx/brush2.png +%%DATADIR%%/data/gfx/brush3.png +%%DATADIR%%/data/gfx/brush4.png +%%DATADIR%%/data/gfx/brush5.png +%%DATADIR%%/data/gfx/brush6.png +%%DATADIR%%/data/gfx/brush7.png +%%DATADIR%%/data/gfx/brush8.png +%%DATADIR%%/data/gfx/brush9.png +%%DATADIR%%/data/gfx/buildingsite0.png +%%DATADIR%%/data/gfx/buildingsite1.png +%%DATADIR%%/data/gfx/buildingsite2.png +%%DATADIR%%/data/gfx/buildingsite3.png +%%DATADIR%%/data/gfx/buildingsite4.png +%%DATADIR%%/data/gfx/buildingsite5.png +%%DATADIR%%/data/gfx/bullet0.png +%%DATADIR%%/data/gfx/bullet1.png +%%DATADIR%%/data/gfx/clearingflag0r.png +%%DATADIR%%/data/gfx/cloud0.png +%%DATADIR%%/data/gfx/cursor/click0r.png +%%DATADIR%%/data/gfx/cursor/click1r.png +%%DATADIR%%/data/gfx/cursor/click2r.png +%%DATADIR%%/data/gfx/cursor/click3r.png +%%DATADIR%%/data/gfx/cursor/click4r.png +%%DATADIR%%/data/gfx/cursor/click5r.png +%%DATADIR%%/data/gfx/cursor/click6r.png +%%DATADIR%%/data/gfx/cursor/click7r.png +%%DATADIR%%/data/gfx/cursor/click8r.png +%%DATADIR%%/data/gfx/cursor/click9r.png +%%DATADIR%%/data/gfx/cursor/direction_d0r.png +%%DATADIR%%/data/gfx/cursor/direction_d10r.png +%%DATADIR%%/data/gfx/cursor/direction_d11r.png +%%DATADIR%%/data/gfx/cursor/direction_d12r.png +%%DATADIR%%/data/gfx/cursor/direction_d13r.png +%%DATADIR%%/data/gfx/cursor/direction_d14r.png +%%DATADIR%%/data/gfx/cursor/direction_d15r.png +%%DATADIR%%/data/gfx/cursor/direction_d16r.png +%%DATADIR%%/data/gfx/cursor/direction_d17r.png +%%DATADIR%%/data/gfx/cursor/direction_d18r.png +%%DATADIR%%/data/gfx/cursor/direction_d19r.png +%%DATADIR%%/data/gfx/cursor/direction_d1r.png +%%DATADIR%%/data/gfx/cursor/direction_d2r.png +%%DATADIR%%/data/gfx/cursor/direction_d3r.png +%%DATADIR%%/data/gfx/cursor/direction_d4r.png +%%DATADIR%%/data/gfx/cursor/direction_d5r.png +%%DATADIR%%/data/gfx/cursor/direction_d6r.png +%%DATADIR%%/data/gfx/cursor/direction_d7r.png +%%DATADIR%%/data/gfx/cursor/direction_d8r.png +%%DATADIR%%/data/gfx/cursor/direction_d9r.png +%%DATADIR%%/data/gfx/cursor/direction_l0r.png +%%DATADIR%%/data/gfx/cursor/direction_l10r.png +%%DATADIR%%/data/gfx/cursor/direction_l11r.png +%%DATADIR%%/data/gfx/cursor/direction_l12r.png +%%DATADIR%%/data/gfx/cursor/direction_l13r.png +%%DATADIR%%/data/gfx/cursor/direction_l14r.png +%%DATADIR%%/data/gfx/cursor/direction_l15r.png +%%DATADIR%%/data/gfx/cursor/direction_l16r.png +%%DATADIR%%/data/gfx/cursor/direction_l17r.png +%%DATADIR%%/data/gfx/cursor/direction_l18r.png +%%DATADIR%%/data/gfx/cursor/direction_l19r.png +%%DATADIR%%/data/gfx/cursor/direction_l1r.png +%%DATADIR%%/data/gfx/cursor/direction_l2r.png +%%DATADIR%%/data/gfx/cursor/direction_l3r.png +%%DATADIR%%/data/gfx/cursor/direction_l4r.png +%%DATADIR%%/data/gfx/cursor/direction_l5r.png +%%DATADIR%%/data/gfx/cursor/direction_l6r.png +%%DATADIR%%/data/gfx/cursor/direction_l7r.png +%%DATADIR%%/data/gfx/cursor/direction_l8r.png +%%DATADIR%%/data/gfx/cursor/direction_l9r.png +%%DATADIR%%/data/gfx/cursor/direction_ld0r.png +%%DATADIR%%/data/gfx/cursor/direction_ld1r.png +%%DATADIR%%/data/gfx/cursor/direction_ld2r.png +%%DATADIR%%/data/gfx/cursor/direction_ld3r.png +%%DATADIR%%/data/gfx/cursor/direction_ld4r.png +%%DATADIR%%/data/gfx/cursor/direction_ld5r.png +%%DATADIR%%/data/gfx/cursor/direction_ld6r.png +%%DATADIR%%/data/gfx/cursor/direction_ld7r.png +%%DATADIR%%/data/gfx/cursor/direction_ld8r.png +%%DATADIR%%/data/gfx/cursor/direction_ld9r.png +%%DATADIR%%/data/gfx/cursor/direction_lu0r.png +%%DATADIR%%/data/gfx/cursor/direction_lu1r.png +%%DATADIR%%/data/gfx/cursor/direction_lu2r.png +%%DATADIR%%/data/gfx/cursor/direction_lu3r.png +%%DATADIR%%/data/gfx/cursor/direction_lu4r.png +%%DATADIR%%/data/gfx/cursor/direction_lu5r.png +%%DATADIR%%/data/gfx/cursor/direction_lu6r.png +%%DATADIR%%/data/gfx/cursor/direction_lu7r.png +%%DATADIR%%/data/gfx/cursor/direction_lu8r.png +%%DATADIR%%/data/gfx/cursor/direction_lu9r.png +%%DATADIR%%/data/gfx/cursor/direction_r0r.png +%%DATADIR%%/data/gfx/cursor/direction_r10r.png +%%DATADIR%%/data/gfx/cursor/direction_r11r.png +%%DATADIR%%/data/gfx/cursor/direction_r12r.png +%%DATADIR%%/data/gfx/cursor/direction_r13r.png +%%DATADIR%%/data/gfx/cursor/direction_r14r.png +%%DATADIR%%/data/gfx/cursor/direction_r15r.png +%%DATADIR%%/data/gfx/cursor/direction_r16r.png +%%DATADIR%%/data/gfx/cursor/direction_r17r.png +%%DATADIR%%/data/gfx/cursor/direction_r18r.png +%%DATADIR%%/data/gfx/cursor/direction_r19r.png +%%DATADIR%%/data/gfx/cursor/direction_r1r.png +%%DATADIR%%/data/gfx/cursor/direction_r2r.png +%%DATADIR%%/data/gfx/cursor/direction_r3r.png +%%DATADIR%%/data/gfx/cursor/direction_r4r.png +%%DATADIR%%/data/gfx/cursor/direction_r5r.png +%%DATADIR%%/data/gfx/cursor/direction_r6r.png +%%DATADIR%%/data/gfx/cursor/direction_r7r.png +%%DATADIR%%/data/gfx/cursor/direction_r8r.png +%%DATADIR%%/data/gfx/cursor/direction_r9r.png +%%DATADIR%%/data/gfx/cursor/direction_rd0r.png +%%DATADIR%%/data/gfx/cursor/direction_rd1r.png +%%DATADIR%%/data/gfx/cursor/direction_rd2r.png +%%DATADIR%%/data/gfx/cursor/direction_rd3r.png +%%DATADIR%%/data/gfx/cursor/direction_rd4r.png +%%DATADIR%%/data/gfx/cursor/direction_rd5r.png +%%DATADIR%%/data/gfx/cursor/direction_rd6r.png +%%DATADIR%%/data/gfx/cursor/direction_rd7r.png +%%DATADIR%%/data/gfx/cursor/direction_rd8r.png +%%DATADIR%%/data/gfx/cursor/direction_rd9r.png +%%DATADIR%%/data/gfx/cursor/direction_ru0r.png +%%DATADIR%%/data/gfx/cursor/direction_ru1r.png +%%DATADIR%%/data/gfx/cursor/direction_ru2r.png +%%DATADIR%%/data/gfx/cursor/direction_ru3r.png +%%DATADIR%%/data/gfx/cursor/direction_ru4r.png +%%DATADIR%%/data/gfx/cursor/direction_ru5r.png +%%DATADIR%%/data/gfx/cursor/direction_ru6r.png +%%DATADIR%%/data/gfx/cursor/direction_ru7r.png +%%DATADIR%%/data/gfx/cursor/direction_ru8r.png +%%DATADIR%%/data/gfx/cursor/direction_ru9r.png +%%DATADIR%%/data/gfx/cursor/direction_u0r.png +%%DATADIR%%/data/gfx/cursor/direction_u10r.png +%%DATADIR%%/data/gfx/cursor/direction_u11r.png +%%DATADIR%%/data/gfx/cursor/direction_u12r.png +%%DATADIR%%/data/gfx/cursor/direction_u13r.png +%%DATADIR%%/data/gfx/cursor/direction_u14r.png +%%DATADIR%%/data/gfx/cursor/direction_u15r.png +%%DATADIR%%/data/gfx/cursor/direction_u16r.png +%%DATADIR%%/data/gfx/cursor/direction_u17r.png +%%DATADIR%%/data/gfx/cursor/direction_u18r.png +%%DATADIR%%/data/gfx/cursor/direction_u19r.png +%%DATADIR%%/data/gfx/cursor/direction_u1r.png +%%DATADIR%%/data/gfx/cursor/direction_u2r.png +%%DATADIR%%/data/gfx/cursor/direction_u3r.png +%%DATADIR%%/data/gfx/cursor/direction_u4r.png +%%DATADIR%%/data/gfx/cursor/direction_u5r.png +%%DATADIR%%/data/gfx/cursor/direction_u6r.png +%%DATADIR%%/data/gfx/cursor/direction_u7r.png +%%DATADIR%%/data/gfx/cursor/direction_u8r.png +%%DATADIR%%/data/gfx/cursor/direction_u9r.png +%%DATADIR%%/data/gfx/cursor/mark0r.png +%%DATADIR%%/data/gfx/cursor/mark10r.png +%%DATADIR%%/data/gfx/cursor/mark11r.png +%%DATADIR%%/data/gfx/cursor/mark12r.png +%%DATADIR%%/data/gfx/cursor/mark13r.png +%%DATADIR%%/data/gfx/cursor/mark14r.png +%%DATADIR%%/data/gfx/cursor/mark15r.png +%%DATADIR%%/data/gfx/cursor/mark16r.png +%%DATADIR%%/data/gfx/cursor/mark17r.png +%%DATADIR%%/data/gfx/cursor/mark18r.png +%%DATADIR%%/data/gfx/cursor/mark19r.png +%%DATADIR%%/data/gfx/cursor/mark1r.png +%%DATADIR%%/data/gfx/cursor/mark2r.png +%%DATADIR%%/data/gfx/cursor/mark3r.png +%%DATADIR%%/data/gfx/cursor/mark4r.png +%%DATADIR%%/data/gfx/cursor/mark5r.png +%%DATADIR%%/data/gfx/cursor/mark6r.png +%%DATADIR%%/data/gfx/cursor/mark7r.png +%%DATADIR%%/data/gfx/cursor/mark8r.png +%%DATADIR%%/data/gfx/cursor/mark9r.png +%%DATADIR%%/data/gfx/cursor/normal0r.png +%%DATADIR%%/data/gfx/cursor/normal10r.png +%%DATADIR%%/data/gfx/cursor/normal11r.png +%%DATADIR%%/data/gfx/cursor/normal12r.png +%%DATADIR%%/data/gfx/cursor/normal13r.png +%%DATADIR%%/data/gfx/cursor/normal14r.png +%%DATADIR%%/data/gfx/cursor/normal15r.png +%%DATADIR%%/data/gfx/cursor/normal16r.png +%%DATADIR%%/data/gfx/cursor/normal17r.png +%%DATADIR%%/data/gfx/cursor/normal18r.png +%%DATADIR%%/data/gfx/cursor/normal19r.png +%%DATADIR%%/data/gfx/cursor/normal1r.png +%%DATADIR%%/data/gfx/cursor/normal2r.png +%%DATADIR%%/data/gfx/cursor/normal3r.png +%%DATADIR%%/data/gfx/cursor/normal4r.png +%%DATADIR%%/data/gfx/cursor/normal5r.png +%%DATADIR%%/data/gfx/cursor/normal6r.png +%%DATADIR%%/data/gfx/cursor/normal7r.png +%%DATADIR%%/data/gfx/cursor/normal8r.png +%%DATADIR%%/data/gfx/cursor/normal9r.png +%%DATADIR%%/data/gfx/cursor/wait0r.png +%%DATADIR%%/data/gfx/cursor/wait10r.png +%%DATADIR%%/data/gfx/cursor/wait11r.png +%%DATADIR%%/data/gfx/cursor/wait12r.png +%%DATADIR%%/data/gfx/cursor/wait13r.png +%%DATADIR%%/data/gfx/cursor/wait14r.png +%%DATADIR%%/data/gfx/cursor/wait15r.png +%%DATADIR%%/data/gfx/cursor/wait16r.png +%%DATADIR%%/data/gfx/cursor/wait17r.png +%%DATADIR%%/data/gfx/cursor/wait18r.png +%%DATADIR%%/data/gfx/cursor/wait19r.png +%%DATADIR%%/data/gfx/cursor/wait1r.png +%%DATADIR%%/data/gfx/cursor/wait2r.png +%%DATADIR%%/data/gfx/cursor/wait3r.png +%%DATADIR%%/data/gfx/cursor/wait4r.png +%%DATADIR%%/data/gfx/cursor/wait5r.png +%%DATADIR%%/data/gfx/cursor/wait6r.png +%%DATADIR%%/data/gfx/cursor/wait7r.png +%%DATADIR%%/data/gfx/cursor/wait8r.png +%%DATADIR%%/data/gfx/cursor/wait9r.png +%%DATADIR%%/data/gfx/death0r.png +%%DATADIR%%/data/gfx/death1r.png +%%DATADIR%%/data/gfx/death2r.png +%%DATADIR%%/data/gfx/death3r.png +%%DATADIR%%/data/gfx/death4r.png +%%DATADIR%%/data/gfx/death5r.png +%%DATADIR%%/data/gfx/death6r.png +%%DATADIR%%/data/gfx/death7r.png +%%DATADIR%%/data/gfx/death8r.png +%%DATADIR%%/data/gfx/death9r.png +%%DATADIR%%/data/gfx/defencetower0b0.png +%%DATADIR%%/data/gfx/defencetower0b0r.png +%%DATADIR%%/data/gfx/defencetower1b0.png +%%DATADIR%%/data/gfx/defencetower1b0r.png +%%DATADIR%%/data/gfx/defencetower1b1.png +%%DATADIR%%/data/gfx/defencetower1b1r.png +%%DATADIR%%/data/gfx/defencetower1b2.png +%%DATADIR%%/data/gfx/defencetower1b2r.png +%%DATADIR%%/data/gfx/defencetower2b0.png +%%DATADIR%%/data/gfx/defencetower2b0r.png +%%DATADIR%%/data/gfx/explorationflag0r.png +%%DATADIR%%/data/gfx/explosion0.png +%%DATADIR%%/data/gfx/explosion1.png +%%DATADIR%%/data/gfx/explosion2.png +%%DATADIR%%/data/gfx/explosion3.png +%%DATADIR%%/data/gfx/explosion4.png +%%DATADIR%%/data/gfx/explosion5.png +%%DATADIR%%/data/gfx/gamegui0.png +%%DATADIR%%/data/gfx/gamegui1.png +%%DATADIR%%/data/gfx/gamegui10.png +%%DATADIR%%/data/gfx/gamegui11.png +%%DATADIR%%/data/gfx/gamegui12.png +%%DATADIR%%/data/gfx/gamegui13.png +%%DATADIR%%/data/gfx/gamegui14.png +%%DATADIR%%/data/gfx/gamegui15.png +%%DATADIR%%/data/gfx/gamegui16.png +%%DATADIR%%/data/gfx/gamegui17.png +%%DATADIR%%/data/gfx/gamegui18.png +%%DATADIR%%/data/gfx/gamegui19.png +%%DATADIR%%/data/gfx/gamegui2.png +%%DATADIR%%/data/gfx/gamegui20.png +%%DATADIR%%/data/gfx/gamegui21.png +%%DATADIR%%/data/gfx/gamegui22.png +%%DATADIR%%/data/gfx/gamegui23.png +%%DATADIR%%/data/gfx/gamegui24.png +%%DATADIR%%/data/gfx/gamegui25.png +%%DATADIR%%/data/gfx/gamegui26.png +%%DATADIR%%/data/gfx/gamegui27.png +%%DATADIR%%/data/gfx/gamegui28.png +%%DATADIR%%/data/gfx/gamegui29.png +%%DATADIR%%/data/gfx/gamegui3.png +%%DATADIR%%/data/gfx/gamegui30r.png +%%DATADIR%%/data/gfx/gamegui31.png +%%DATADIR%%/data/gfx/gamegui32.png +%%DATADIR%%/data/gfx/gamegui33.png +%%DATADIR%%/data/gfx/gamegui34.png +%%DATADIR%%/data/gfx/gamegui35.png +%%DATADIR%%/data/gfx/gamegui36.png +%%DATADIR%%/data/gfx/gamegui37.png +%%DATADIR%%/data/gfx/gamegui38.png +%%DATADIR%%/data/gfx/gamegui39.png +%%DATADIR%%/data/gfx/gamegui4.png +%%DATADIR%%/data/gfx/gamegui40.png +%%DATADIR%%/data/gfx/gamegui41.png +%%DATADIR%%/data/gfx/gamegui42.png +%%DATADIR%%/data/gfx/gamegui43.png +%%DATADIR%%/data/gfx/gamegui5.png +%%DATADIR%%/data/gfx/gamegui6.png +%%DATADIR%%/data/gfx/gamegui7.png +%%DATADIR%%/data/gfx/gamegui8.png +%%DATADIR%%/data/gfx/gamegui9.png +%%DATADIR%%/data/gfx/guitheme0.png +%%DATADIR%%/data/gfx/guitheme1.png +%%DATADIR%%/data/gfx/guitheme10.png +%%DATADIR%%/data/gfx/guitheme11.png +%%DATADIR%%/data/gfx/guitheme12.png +%%DATADIR%%/data/gfx/guitheme13.png +%%DATADIR%%/data/gfx/guitheme14.png +%%DATADIR%%/data/gfx/guitheme15.png +%%DATADIR%%/data/gfx/guitheme16.png +%%DATADIR%%/data/gfx/guitheme17.png +%%DATADIR%%/data/gfx/guitheme18.png +%%DATADIR%%/data/gfx/guitheme19.png +%%DATADIR%%/data/gfx/guitheme2.png +%%DATADIR%%/data/gfx/guitheme20.png +%%DATADIR%%/data/gfx/guitheme21.png +%%DATADIR%%/data/gfx/guitheme22.png +%%DATADIR%%/data/gfx/guitheme23.png +%%DATADIR%%/data/gfx/guitheme24.png +%%DATADIR%%/data/gfx/guitheme3.png +%%DATADIR%%/data/gfx/guitheme4.png +%%DATADIR%%/data/gfx/guitheme5.png +%%DATADIR%%/data/gfx/guitheme6.png +%%DATADIR%%/data/gfx/guitheme7.png +%%DATADIR%%/data/gfx/guitheme8.png +%%DATADIR%%/data/gfx/guitheme9.png +%%DATADIR%%/data/gfx/hosp0b0.png +%%DATADIR%%/data/gfx/hosp0b0r.png +%%DATADIR%%/data/gfx/hosp0b1.png +%%DATADIR%%/data/gfx/hosp0c0.png +%%DATADIR%%/data/gfx/hosp1b0.png +%%DATADIR%%/data/gfx/hosp1b0r.png +%%DATADIR%%/data/gfx/hosp1c0.png +%%DATADIR%%/data/gfx/hosp2b0.png +%%DATADIR%%/data/gfx/hosp2b0r.png +%%DATADIR%%/data/gfx/hosp2c0.png +%%DATADIR%%/data/gfx/image.png +%%DATADIR%%/data/gfx/inn0b0.png +%%DATADIR%%/data/gfx/inn0b0r.png +%%DATADIR%%/data/gfx/inn0b1.png +%%DATADIR%%/data/gfx/inn0c0.png +%%DATADIR%%/data/gfx/inn1b0.png +%%DATADIR%%/data/gfx/inn1b0r.png +%%DATADIR%%/data/gfx/inn1b1.png +%%DATADIR%%/data/gfx/inn1b1r.png +%%DATADIR%%/data/gfx/inn1c0.png +%%DATADIR%%/data/gfx/inn2b0.png +%%DATADIR%%/data/gfx/inn2b0r.png +%%DATADIR%%/data/gfx/inn2c0.png +%%DATADIR%%/data/gfx/inn3c0.png +%%DATADIR%%/data/gfx/magiceffect0.png +%%DATADIR%%/data/gfx/magiceffect0r.png +%%DATADIR%%/data/gfx/market0b0.png +%%DATADIR%%/data/gfx/market0b0r.png +%%DATADIR%%/data/gfx/minibarracks0b0.png +%%DATADIR%%/data/gfx/minibarracks0b0r.png +%%DATADIR%%/data/gfx/minibarracks1b0.png +%%DATADIR%%/data/gfx/minibarracks1b0r.png +%%DATADIR%%/data/gfx/minibarracks2b0.png +%%DATADIR%%/data/gfx/minibarracks2b0r.png +%%DATADIR%%/data/gfx/minibuildingsite0.png +%%DATADIR%%/data/gfx/minibuildingsite1.png +%%DATADIR%%/data/gfx/minibuildingsite2.png +%%DATADIR%%/data/gfx/minibuildingsite3.png +%%DATADIR%%/data/gfx/minibuildingsite4.png +%%DATADIR%%/data/gfx/minibuildingsite5.png +%%DATADIR%%/data/gfx/minidefencetower0b0.png +%%DATADIR%%/data/gfx/minidefencetower0b0r.png +%%DATADIR%%/data/gfx/minidefencetower1b0.png +%%DATADIR%%/data/gfx/minidefencetower1b0r.png +%%DATADIR%%/data/gfx/minidefencetower2b0.png +%%DATADIR%%/data/gfx/minidefencetower2b0r.png +%%DATADIR%%/data/gfx/minihosp0b0.png +%%DATADIR%%/data/gfx/minihosp0b0r.png +%%DATADIR%%/data/gfx/minihosp0c0.png +%%DATADIR%%/data/gfx/minihosp1b0.png +%%DATADIR%%/data/gfx/minihosp1b0r.png +%%DATADIR%%/data/gfx/minihosp1c0.png +%%DATADIR%%/data/gfx/minihosp2b0.png +%%DATADIR%%/data/gfx/minihosp2b0r.png +%%DATADIR%%/data/gfx/minihosp2c0.png +%%DATADIR%%/data/gfx/miniinn0b0.png +%%DATADIR%%/data/gfx/miniinn0b0r.png +%%DATADIR%%/data/gfx/miniinn0c0.png +%%DATADIR%%/data/gfx/miniinn1b0.png +%%DATADIR%%/data/gfx/miniinn1b0r.png +%%DATADIR%%/data/gfx/miniinn1c0.png +%%DATADIR%%/data/gfx/miniinn2b0.png +%%DATADIR%%/data/gfx/miniinn2b0r.png +%%DATADIR%%/data/gfx/miniinn2c0.png +%%DATADIR%%/data/gfx/minimarket0b0.png +%%DATADIR%%/data/gfx/minimarket0b0r.png +%%DATADIR%%/data/gfx/minipool0b0.png +%%DATADIR%%/data/gfx/minipool0b0r.png +%%DATADIR%%/data/gfx/minipool0c0.png +%%DATADIR%%/data/gfx/minipool1b0.png +%%DATADIR%%/data/gfx/minipool1b0r.png +%%DATADIR%%/data/gfx/minipool2b0.png +%%DATADIR%%/data/gfx/minipool2b0r.png +%%DATADIR%%/data/gfx/miniracetrack0b0.png +%%DATADIR%%/data/gfx/miniracetrack0b0r.png +%%DATADIR%%/data/gfx/miniracetrack0c0.png +%%DATADIR%%/data/gfx/miniracetrack0c0r.png +%%DATADIR%%/data/gfx/miniracetrack1b0.png +%%DATADIR%%/data/gfx/miniracetrack1b0r.png +%%DATADIR%%/data/gfx/miniracetrack2b0.png +%%DATADIR%%/data/gfx/miniracetrack2b0r.png +%%DATADIR%%/data/gfx/minischool0b0.png +%%DATADIR%%/data/gfx/minischool1b0.png +%%DATADIR%%/data/gfx/minischool1b0r.png +%%DATADIR%%/data/gfx/minischool1c0.png +%%DATADIR%%/data/gfx/minischool1c0r.png +%%DATADIR%%/data/gfx/minischool2b0.png +%%DATADIR%%/data/gfx/minischool2b0r.png +%%DATADIR%%/data/gfx/miniswarm0b0.png +%%DATADIR%%/data/gfx/miniswarm0b0r.png +%%DATADIR%%/data/gfx/miniswarm0c0r.png +%%DATADIR%%/data/gfx/out.png +%%DATADIR%%/data/gfx/particle0.png +%%DATADIR%%/data/gfx/particle0r.png +%%DATADIR%%/data/gfx/particle1.png +%%DATADIR%%/data/gfx/particle1r.png +%%DATADIR%%/data/gfx/particle2.png +%%DATADIR%%/data/gfx/particle2r.png +%%DATADIR%%/data/gfx/particle3.png +%%DATADIR%%/data/gfx/pool0b0.png +%%DATADIR%%/data/gfx/pool0b0r.png +%%DATADIR%%/data/gfx/pool0b1.png +%%DATADIR%%/data/gfx/pool0b1r.png +%%DATADIR%%/data/gfx/pool0c0.png +%%DATADIR%%/data/gfx/pool1b0.png +%%DATADIR%%/data/gfx/pool1b0r.png +%%DATADIR%%/data/gfx/pool2b0.png +%%DATADIR%%/data/gfx/pool2b0r.png +%%DATADIR%%/data/gfx/racetrack0b0.png +%%DATADIR%%/data/gfx/racetrack0b0r.png +%%DATADIR%%/data/gfx/racetrack0b1.png +%%DATADIR%%/data/gfx/racetrack0b1r.png +%%DATADIR%%/data/gfx/racetrack0b2.png +%%DATADIR%%/data/gfx/racetrack0b2r.png +%%DATADIR%%/data/gfx/racetrack0c0.png +%%DATADIR%%/data/gfx/racetrack0c0r.png +%%DATADIR%%/data/gfx/racetrack1b0.png +%%DATADIR%%/data/gfx/racetrack1b0r.png +%%DATADIR%%/data/gfx/racetrack1b1.png +%%DATADIR%%/data/gfx/racetrack1b1r.png +%%DATADIR%%/data/gfx/racetrack1b2.png +%%DATADIR%%/data/gfx/racetrack1b2r.png +%%DATADIR%%/data/gfx/racetrack2b0.png +%%DATADIR%%/data/gfx/racetrack2b0r.png +%%DATADIR%%/data/gfx/ressource0.png +%%DATADIR%%/data/gfx/ressource1.png +%%DATADIR%%/data/gfx/ressource10.png +%%DATADIR%%/data/gfx/ressource11.png +%%DATADIR%%/data/gfx/ressource12.png +%%DATADIR%%/data/gfx/ressource13.png +%%DATADIR%%/data/gfx/ressource14.png +%%DATADIR%%/data/gfx/ressource15.png +%%DATADIR%%/data/gfx/ressource16.png +%%DATADIR%%/data/gfx/ressource17.png +%%DATADIR%%/data/gfx/ressource18.png +%%DATADIR%%/data/gfx/ressource19.png +%%DATADIR%%/data/gfx/ressource2.png +%%DATADIR%%/data/gfx/ressource20.png +%%DATADIR%%/data/gfx/ressource21.png +%%DATADIR%%/data/gfx/ressource22.png +%%DATADIR%%/data/gfx/ressource23.png +%%DATADIR%%/data/gfx/ressource24.png +%%DATADIR%%/data/gfx/ressource25.png +%%DATADIR%%/data/gfx/ressource26.png +%%DATADIR%%/data/gfx/ressource27.png +%%DATADIR%%/data/gfx/ressource28.png +%%DATADIR%%/data/gfx/ressource29.png +%%DATADIR%%/data/gfx/ressource3.png +%%DATADIR%%/data/gfx/ressource30.png +%%DATADIR%%/data/gfx/ressource31.png +%%DATADIR%%/data/gfx/ressource32.png +%%DATADIR%%/data/gfx/ressource33.png +%%DATADIR%%/data/gfx/ressource34.png +%%DATADIR%%/data/gfx/ressource35.png +%%DATADIR%%/data/gfx/ressource36.png +%%DATADIR%%/data/gfx/ressource37.png +%%DATADIR%%/data/gfx/ressource38.png +%%DATADIR%%/data/gfx/ressource39.png +%%DATADIR%%/data/gfx/ressource4.png +%%DATADIR%%/data/gfx/ressource40.png +%%DATADIR%%/data/gfx/ressource41.png +%%DATADIR%%/data/gfx/ressource42.png +%%DATADIR%%/data/gfx/ressource43.png +%%DATADIR%%/data/gfx/ressource44.png +%%DATADIR%%/data/gfx/ressource45.png +%%DATADIR%%/data/gfx/ressource46.png +%%DATADIR%%/data/gfx/ressource47.png +%%DATADIR%%/data/gfx/ressource48.png +%%DATADIR%%/data/gfx/ressource49.png +%%DATADIR%%/data/gfx/ressource5.png +%%DATADIR%%/data/gfx/ressource50.png +%%DATADIR%%/data/gfx/ressource51.png +%%DATADIR%%/data/gfx/ressource52.png +%%DATADIR%%/data/gfx/ressource53.png +%%DATADIR%%/data/gfx/ressource54.png +%%DATADIR%%/data/gfx/ressource55.png +%%DATADIR%%/data/gfx/ressource56.png +%%DATADIR%%/data/gfx/ressource57.png +%%DATADIR%%/data/gfx/ressource58.png +%%DATADIR%%/data/gfx/ressource59.png +%%DATADIR%%/data/gfx/ressource6.png +%%DATADIR%%/data/gfx/ressource60.png +%%DATADIR%%/data/gfx/ressource61.png +%%DATADIR%%/data/gfx/ressource62.png +%%DATADIR%%/data/gfx/ressource63.png +%%DATADIR%%/data/gfx/ressource64.png +%%DATADIR%%/data/gfx/ressource7.png +%%DATADIR%%/data/gfx/ressource8.png +%%DATADIR%%/data/gfx/ressource9.png +%%DATADIR%%/data/gfx/ressourcemini0.png +%%DATADIR%%/data/gfx/ressourcemini1.png +%%DATADIR%%/data/gfx/ressourcemini2.png +%%DATADIR%%/data/gfx/ressourcemini3.png +%%DATADIR%%/data/gfx/ressourcemini4.png +%%DATADIR%%/data/gfx/ressourcemini5.png +%%DATADIR%%/data/gfx/ressourcemini6.png +%%DATADIR%%/data/gfx/ressourcemini7.png +%%DATADIR%%/data/gfx/rotatingEarth0.png +%%DATADIR%%/data/gfx/rotatingEarth1.png +%%DATADIR%%/data/gfx/rotatingEarth10.png +%%DATADIR%%/data/gfx/rotatingEarth11.png +%%DATADIR%%/data/gfx/rotatingEarth12.png +%%DATADIR%%/data/gfx/rotatingEarth13.png +%%DATADIR%%/data/gfx/rotatingEarth14.png +%%DATADIR%%/data/gfx/rotatingEarth15.png +%%DATADIR%%/data/gfx/rotatingEarth16.png +%%DATADIR%%/data/gfx/rotatingEarth17.png +%%DATADIR%%/data/gfx/rotatingEarth18.png +%%DATADIR%%/data/gfx/rotatingEarth19.png +%%DATADIR%%/data/gfx/rotatingEarth2.png +%%DATADIR%%/data/gfx/rotatingEarth3.png +%%DATADIR%%/data/gfx/rotatingEarth4.png +%%DATADIR%%/data/gfx/rotatingEarth5.png +%%DATADIR%%/data/gfx/rotatingEarth6.png +%%DATADIR%%/data/gfx/rotatingEarth7.png +%%DATADIR%%/data/gfx/rotatingEarth8.png +%%DATADIR%%/data/gfx/rotatingEarth9.png +%%DATADIR%%/data/gfx/rotatingEarthi.png +%%DATADIR%%/data/gfx/school0b0.png +%%DATADIR%%/data/gfx/school0b1.png +%%DATADIR%%/data/gfx/school1b0.png +%%DATADIR%%/data/gfx/school1b0r.png +%%DATADIR%%/data/gfx/school1b1.png +%%DATADIR%%/data/gfx/school1b1r.png +%%DATADIR%%/data/gfx/school1b2.png +%%DATADIR%%/data/gfx/school1b2r.png +%%DATADIR%%/data/gfx/school1c0.png +%%DATADIR%%/data/gfx/school1c0r.png +%%DATADIR%%/data/gfx/school2b0.png +%%DATADIR%%/data/gfx/school2b0r.png +%%DATADIR%%/data/gfx/shade0.png +%%DATADIR%%/data/gfx/shade1.png +%%DATADIR%%/data/gfx/shade10.png +%%DATADIR%%/data/gfx/shade11.png +%%DATADIR%%/data/gfx/shade12.png +%%DATADIR%%/data/gfx/shade13.png +%%DATADIR%%/data/gfx/shade14.png +%%DATADIR%%/data/gfx/shade15.png +%%DATADIR%%/data/gfx/shade16.png +%%DATADIR%%/data/gfx/shade17.png +%%DATADIR%%/data/gfx/shade18.png +%%DATADIR%%/data/gfx/shade19.png +%%DATADIR%%/data/gfx/shade2.png +%%DATADIR%%/data/gfx/shade20.png +%%DATADIR%%/data/gfx/shade3.png +%%DATADIR%%/data/gfx/shade4.png +%%DATADIR%%/data/gfx/shade5.png +%%DATADIR%%/data/gfx/shade6.png +%%DATADIR%%/data/gfx/shade7.png +%%DATADIR%%/data/gfx/shade8.png +%%DATADIR%%/data/gfx/shade9.png +%%DATADIR%%/data/gfx/swarm0b0.png +%%DATADIR%%/data/gfx/swarm0b0r.png +%%DATADIR%%/data/gfx/swarm0c0r.png +%%DATADIR%%/data/gfx/terrain0.png +%%DATADIR%%/data/gfx/terrain1.png +%%DATADIR%%/data/gfx/terrain10.png +%%DATADIR%%/data/gfx/terrain100.png +%%DATADIR%%/data/gfx/terrain101.png +%%DATADIR%%/data/gfx/terrain102.png +%%DATADIR%%/data/gfx/terrain103.png +%%DATADIR%%/data/gfx/terrain104.png +%%DATADIR%%/data/gfx/terrain105.png +%%DATADIR%%/data/gfx/terrain106.png +%%DATADIR%%/data/gfx/terrain107.png +%%DATADIR%%/data/gfx/terrain108.png +%%DATADIR%%/data/gfx/terrain109.png +%%DATADIR%%/data/gfx/terrain11.png +%%DATADIR%%/data/gfx/terrain110.png +%%DATADIR%%/data/gfx/terrain111.png +%%DATADIR%%/data/gfx/terrain112.png +%%DATADIR%%/data/gfx/terrain113.png +%%DATADIR%%/data/gfx/terrain114.png +%%DATADIR%%/data/gfx/terrain115.png +%%DATADIR%%/data/gfx/terrain116.png +%%DATADIR%%/data/gfx/terrain117.png +%%DATADIR%%/data/gfx/terrain118.png +%%DATADIR%%/data/gfx/terrain119.png +%%DATADIR%%/data/gfx/terrain12.png +%%DATADIR%%/data/gfx/terrain120.png +%%DATADIR%%/data/gfx/terrain121.png +%%DATADIR%%/data/gfx/terrain122.png +%%DATADIR%%/data/gfx/terrain123.png +%%DATADIR%%/data/gfx/terrain124.png +%%DATADIR%%/data/gfx/terrain125.png +%%DATADIR%%/data/gfx/terrain126.png +%%DATADIR%%/data/gfx/terrain127.png +%%DATADIR%%/data/gfx/terrain128.png +%%DATADIR%%/data/gfx/terrain129.png +%%DATADIR%%/data/gfx/terrain13.png +%%DATADIR%%/data/gfx/terrain130.png +%%DATADIR%%/data/gfx/terrain131.png +%%DATADIR%%/data/gfx/terrain132.png +%%DATADIR%%/data/gfx/terrain133.png +%%DATADIR%%/data/gfx/terrain134.png +%%DATADIR%%/data/gfx/terrain135.png +%%DATADIR%%/data/gfx/terrain136.png +%%DATADIR%%/data/gfx/terrain137.png +%%DATADIR%%/data/gfx/terrain138.png +%%DATADIR%%/data/gfx/terrain139.png +%%DATADIR%%/data/gfx/terrain14.png +%%DATADIR%%/data/gfx/terrain140.png +%%DATADIR%%/data/gfx/terrain141.png +%%DATADIR%%/data/gfx/terrain142.png +%%DATADIR%%/data/gfx/terrain143.png +%%DATADIR%%/data/gfx/terrain144.png +%%DATADIR%%/data/gfx/terrain145.png +%%DATADIR%%/data/gfx/terrain146.png +%%DATADIR%%/data/gfx/terrain147.png +%%DATADIR%%/data/gfx/terrain148.png +%%DATADIR%%/data/gfx/terrain149.png +%%DATADIR%%/data/gfx/terrain15.png +%%DATADIR%%/data/gfx/terrain150.png +%%DATADIR%%/data/gfx/terrain151.png +%%DATADIR%%/data/gfx/terrain152.png +%%DATADIR%%/data/gfx/terrain153.png +%%DATADIR%%/data/gfx/terrain154.png +%%DATADIR%%/data/gfx/terrain155.png +%%DATADIR%%/data/gfx/terrain156.png +%%DATADIR%%/data/gfx/terrain157.png +%%DATADIR%%/data/gfx/terrain158.png +%%DATADIR%%/data/gfx/terrain159.png +%%DATADIR%%/data/gfx/terrain16.png +%%DATADIR%%/data/gfx/terrain160.png +%%DATADIR%%/data/gfx/terrain161.png +%%DATADIR%%/data/gfx/terrain162.png +%%DATADIR%%/data/gfx/terrain163.png +%%DATADIR%%/data/gfx/terrain164.png +%%DATADIR%%/data/gfx/terrain165.png +%%DATADIR%%/data/gfx/terrain166.png +%%DATADIR%%/data/gfx/terrain167.png +%%DATADIR%%/data/gfx/terrain168.png +%%DATADIR%%/data/gfx/terrain169.png +%%DATADIR%%/data/gfx/terrain17.png +%%DATADIR%%/data/gfx/terrain170.png +%%DATADIR%%/data/gfx/terrain171.png +%%DATADIR%%/data/gfx/terrain172.png +%%DATADIR%%/data/gfx/terrain173.png +%%DATADIR%%/data/gfx/terrain174.png +%%DATADIR%%/data/gfx/terrain175.png +%%DATADIR%%/data/gfx/terrain176.png +%%DATADIR%%/data/gfx/terrain177.png +%%DATADIR%%/data/gfx/terrain178.png +%%DATADIR%%/data/gfx/terrain179.png +%%DATADIR%%/data/gfx/terrain18.png +%%DATADIR%%/data/gfx/terrain180.png +%%DATADIR%%/data/gfx/terrain181.png +%%DATADIR%%/data/gfx/terrain182.png +%%DATADIR%%/data/gfx/terrain183.png +%%DATADIR%%/data/gfx/terrain184.png +%%DATADIR%%/data/gfx/terrain185.png +%%DATADIR%%/data/gfx/terrain186.png +%%DATADIR%%/data/gfx/terrain187.png +%%DATADIR%%/data/gfx/terrain188.png +%%DATADIR%%/data/gfx/terrain189.png +%%DATADIR%%/data/gfx/terrain19.png +%%DATADIR%%/data/gfx/terrain190.png +%%DATADIR%%/data/gfx/terrain191.png +%%DATADIR%%/data/gfx/terrain192.png +%%DATADIR%%/data/gfx/terrain193.png +%%DATADIR%%/data/gfx/terrain194.png +%%DATADIR%%/data/gfx/terrain195.png +%%DATADIR%%/data/gfx/terrain196.png +%%DATADIR%%/data/gfx/terrain197.png +%%DATADIR%%/data/gfx/terrain198.png +%%DATADIR%%/data/gfx/terrain199.png +%%DATADIR%%/data/gfx/terrain2.png +%%DATADIR%%/data/gfx/terrain20.png +%%DATADIR%%/data/gfx/terrain200.png +%%DATADIR%%/data/gfx/terrain201.png +%%DATADIR%%/data/gfx/terrain202.png +%%DATADIR%%/data/gfx/terrain203.png +%%DATADIR%%/data/gfx/terrain204.png +%%DATADIR%%/data/gfx/terrain205.png +%%DATADIR%%/data/gfx/terrain206.png +%%DATADIR%%/data/gfx/terrain207.png +%%DATADIR%%/data/gfx/terrain208.png +%%DATADIR%%/data/gfx/terrain209.png +%%DATADIR%%/data/gfx/terrain21.png +%%DATADIR%%/data/gfx/terrain210.png +%%DATADIR%%/data/gfx/terrain211.png +%%DATADIR%%/data/gfx/terrain212.png +%%DATADIR%%/data/gfx/terrain213.png +%%DATADIR%%/data/gfx/terrain214.png +%%DATADIR%%/data/gfx/terrain215.png +%%DATADIR%%/data/gfx/terrain216.png +%%DATADIR%%/data/gfx/terrain217.png +%%DATADIR%%/data/gfx/terrain218.png +%%DATADIR%%/data/gfx/terrain219.png +%%DATADIR%%/data/gfx/terrain22.png +%%DATADIR%%/data/gfx/terrain220.png +%%DATADIR%%/data/gfx/terrain221.png +%%DATADIR%%/data/gfx/terrain222.png +%%DATADIR%%/data/gfx/terrain223.png +%%DATADIR%%/data/gfx/terrain224.png +%%DATADIR%%/data/gfx/terrain225.png +%%DATADIR%%/data/gfx/terrain226.png +%%DATADIR%%/data/gfx/terrain227.png +%%DATADIR%%/data/gfx/terrain228.png +%%DATADIR%%/data/gfx/terrain229.png +%%DATADIR%%/data/gfx/terrain23.png +%%DATADIR%%/data/gfx/terrain230.png +%%DATADIR%%/data/gfx/terrain231.png +%%DATADIR%%/data/gfx/terrain232.png +%%DATADIR%%/data/gfx/terrain233.png +%%DATADIR%%/data/gfx/terrain234.png +%%DATADIR%%/data/gfx/terrain235.png +%%DATADIR%%/data/gfx/terrain236.png +%%DATADIR%%/data/gfx/terrain237.png +%%DATADIR%%/data/gfx/terrain238.png +%%DATADIR%%/data/gfx/terrain239.png +%%DATADIR%%/data/gfx/terrain24.png +%%DATADIR%%/data/gfx/terrain240.png +%%DATADIR%%/data/gfx/terrain241.png +%%DATADIR%%/data/gfx/terrain242.png +%%DATADIR%%/data/gfx/terrain243.png +%%DATADIR%%/data/gfx/terrain244.png +%%DATADIR%%/data/gfx/terrain245.png +%%DATADIR%%/data/gfx/terrain246.png +%%DATADIR%%/data/gfx/terrain247.png +%%DATADIR%%/data/gfx/terrain248.png +%%DATADIR%%/data/gfx/terrain249.png +%%DATADIR%%/data/gfx/terrain25.png +%%DATADIR%%/data/gfx/terrain250.png +%%DATADIR%%/data/gfx/terrain251.png +%%DATADIR%%/data/gfx/terrain252.png +%%DATADIR%%/data/gfx/terrain253.png +%%DATADIR%%/data/gfx/terrain254.png +%%DATADIR%%/data/gfx/terrain255.png +%%DATADIR%%/data/gfx/terrain256.png +%%DATADIR%%/data/gfx/terrain257.png +%%DATADIR%%/data/gfx/terrain258.png +%%DATADIR%%/data/gfx/terrain259.png +%%DATADIR%%/data/gfx/terrain26.png +%%DATADIR%%/data/gfx/terrain260.png +%%DATADIR%%/data/gfx/terrain261.png +%%DATADIR%%/data/gfx/terrain262.png +%%DATADIR%%/data/gfx/terrain263.png +%%DATADIR%%/data/gfx/terrain264.png +%%DATADIR%%/data/gfx/terrain265.png +%%DATADIR%%/data/gfx/terrain266.png +%%DATADIR%%/data/gfx/terrain267.png +%%DATADIR%%/data/gfx/terrain268.png +%%DATADIR%%/data/gfx/terrain269.png +%%DATADIR%%/data/gfx/terrain27.png +%%DATADIR%%/data/gfx/terrain270.png +%%DATADIR%%/data/gfx/terrain271.png +%%DATADIR%%/data/gfx/terrain28.png +%%DATADIR%%/data/gfx/terrain29.png +%%DATADIR%%/data/gfx/terrain3.png +%%DATADIR%%/data/gfx/terrain30.png +%%DATADIR%%/data/gfx/terrain31.png +%%DATADIR%%/data/gfx/terrain32.png +%%DATADIR%%/data/gfx/terrain33.png +%%DATADIR%%/data/gfx/terrain34.png +%%DATADIR%%/data/gfx/terrain35.png +%%DATADIR%%/data/gfx/terrain36.png +%%DATADIR%%/data/gfx/terrain37.png +%%DATADIR%%/data/gfx/terrain38.png +%%DATADIR%%/data/gfx/terrain39.png +%%DATADIR%%/data/gfx/terrain4.png +%%DATADIR%%/data/gfx/terrain40.png +%%DATADIR%%/data/gfx/terrain41.png +%%DATADIR%%/data/gfx/terrain42.png +%%DATADIR%%/data/gfx/terrain43.png +%%DATADIR%%/data/gfx/terrain44.png +%%DATADIR%%/data/gfx/terrain45.png +%%DATADIR%%/data/gfx/terrain46.png +%%DATADIR%%/data/gfx/terrain47.png +%%DATADIR%%/data/gfx/terrain48.png +%%DATADIR%%/data/gfx/terrain49.png +%%DATADIR%%/data/gfx/terrain5.png +%%DATADIR%%/data/gfx/terrain50.png +%%DATADIR%%/data/gfx/terrain51.png +%%DATADIR%%/data/gfx/terrain52.png +%%DATADIR%%/data/gfx/terrain53.png +%%DATADIR%%/data/gfx/terrain54.png +%%DATADIR%%/data/gfx/terrain55.png +%%DATADIR%%/data/gfx/terrain56.png +%%DATADIR%%/data/gfx/terrain57.png +%%DATADIR%%/data/gfx/terrain58.png +%%DATADIR%%/data/gfx/terrain59.png +%%DATADIR%%/data/gfx/terrain6.png +%%DATADIR%%/data/gfx/terrain60.png +%%DATADIR%%/data/gfx/terrain61.png +%%DATADIR%%/data/gfx/terrain62.png +%%DATADIR%%/data/gfx/terrain63.png +%%DATADIR%%/data/gfx/terrain64.png +%%DATADIR%%/data/gfx/terrain65.png +%%DATADIR%%/data/gfx/terrain66.png +%%DATADIR%%/data/gfx/terrain67.png +%%DATADIR%%/data/gfx/terrain68.png +%%DATADIR%%/data/gfx/terrain69.png +%%DATADIR%%/data/gfx/terrain7.png +%%DATADIR%%/data/gfx/terrain70.png +%%DATADIR%%/data/gfx/terrain71.png +%%DATADIR%%/data/gfx/terrain72.png +%%DATADIR%%/data/gfx/terrain73.png +%%DATADIR%%/data/gfx/terrain74.png +%%DATADIR%%/data/gfx/terrain75.png +%%DATADIR%%/data/gfx/terrain76.png +%%DATADIR%%/data/gfx/terrain77.png +%%DATADIR%%/data/gfx/terrain78.png +%%DATADIR%%/data/gfx/terrain79.png +%%DATADIR%%/data/gfx/terrain8.png +%%DATADIR%%/data/gfx/terrain80.png +%%DATADIR%%/data/gfx/terrain81.png +%%DATADIR%%/data/gfx/terrain82.png +%%DATADIR%%/data/gfx/terrain83.png +%%DATADIR%%/data/gfx/terrain84.png +%%DATADIR%%/data/gfx/terrain85.png +%%DATADIR%%/data/gfx/terrain86.png +%%DATADIR%%/data/gfx/terrain87.png +%%DATADIR%%/data/gfx/terrain88.png +%%DATADIR%%/data/gfx/terrain89.png +%%DATADIR%%/data/gfx/terrain9.png +%%DATADIR%%/data/gfx/terrain90.png +%%DATADIR%%/data/gfx/terrain91.png +%%DATADIR%%/data/gfx/terrain92.png +%%DATADIR%%/data/gfx/terrain93.png +%%DATADIR%%/data/gfx/terrain94.png +%%DATADIR%%/data/gfx/terrain95.png +%%DATADIR%%/data/gfx/terrain96.png +%%DATADIR%%/data/gfx/terrain97.png +%%DATADIR%%/data/gfx/terrain98.png +%%DATADIR%%/data/gfx/terrain99.png +%%DATADIR%%/data/gfx/title.png +%%DATADIR%%/data/gfx/unit0r.png +%%DATADIR%%/data/gfx/unit100.png +%%DATADIR%%/data/gfx/unit100r.png +%%DATADIR%%/data/gfx/unit101.png +%%DATADIR%%/data/gfx/unit101r.png +%%DATADIR%%/data/gfx/unit102.png +%%DATADIR%%/data/gfx/unit102r.png +%%DATADIR%%/data/gfx/unit103.png +%%DATADIR%%/data/gfx/unit103r.png +%%DATADIR%%/data/gfx/unit104.png +%%DATADIR%%/data/gfx/unit104r.png +%%DATADIR%%/data/gfx/unit105.png +%%DATADIR%%/data/gfx/unit105r.png +%%DATADIR%%/data/gfx/unit106.png +%%DATADIR%%/data/gfx/unit106r.png +%%DATADIR%%/data/gfx/unit107.png +%%DATADIR%%/data/gfx/unit107r.png +%%DATADIR%%/data/gfx/unit108.png +%%DATADIR%%/data/gfx/unit108r.png +%%DATADIR%%/data/gfx/unit109.png +%%DATADIR%%/data/gfx/unit109r.png +%%DATADIR%%/data/gfx/unit10r.png +%%DATADIR%%/data/gfx/unit110.png +%%DATADIR%%/data/gfx/unit110r.png +%%DATADIR%%/data/gfx/unit111.png +%%DATADIR%%/data/gfx/unit111r.png +%%DATADIR%%/data/gfx/unit112.png +%%DATADIR%%/data/gfx/unit112r.png +%%DATADIR%%/data/gfx/unit113.png +%%DATADIR%%/data/gfx/unit113r.png +%%DATADIR%%/data/gfx/unit114.png +%%DATADIR%%/data/gfx/unit114r.png +%%DATADIR%%/data/gfx/unit115.png +%%DATADIR%%/data/gfx/unit115r.png +%%DATADIR%%/data/gfx/unit116.png +%%DATADIR%%/data/gfx/unit116r.png +%%DATADIR%%/data/gfx/unit117.png +%%DATADIR%%/data/gfx/unit117r.png +%%DATADIR%%/data/gfx/unit118.png +%%DATADIR%%/data/gfx/unit118r.png +%%DATADIR%%/data/gfx/unit119.png +%%DATADIR%%/data/gfx/unit119r.png +%%DATADIR%%/data/gfx/unit11r.png +%%DATADIR%%/data/gfx/unit120.png +%%DATADIR%%/data/gfx/unit120r.png +%%DATADIR%%/data/gfx/unit121.png +%%DATADIR%%/data/gfx/unit121r.png +%%DATADIR%%/data/gfx/unit122.png +%%DATADIR%%/data/gfx/unit122r.png +%%DATADIR%%/data/gfx/unit123.png +%%DATADIR%%/data/gfx/unit123r.png +%%DATADIR%%/data/gfx/unit124.png +%%DATADIR%%/data/gfx/unit124r.png +%%DATADIR%%/data/gfx/unit125.png +%%DATADIR%%/data/gfx/unit125r.png +%%DATADIR%%/data/gfx/unit126.png +%%DATADIR%%/data/gfx/unit126r.png +%%DATADIR%%/data/gfx/unit127.png +%%DATADIR%%/data/gfx/unit127r.png +%%DATADIR%%/data/gfx/unit128r.png +%%DATADIR%%/data/gfx/unit129r.png +%%DATADIR%%/data/gfx/unit12r.png +%%DATADIR%%/data/gfx/unit130r.png +%%DATADIR%%/data/gfx/unit131r.png +%%DATADIR%%/data/gfx/unit132r.png +%%DATADIR%%/data/gfx/unit133r.png +%%DATADIR%%/data/gfx/unit134r.png +%%DATADIR%%/data/gfx/unit135r.png +%%DATADIR%%/data/gfx/unit136r.png +%%DATADIR%%/data/gfx/unit137r.png +%%DATADIR%%/data/gfx/unit138r.png +%%DATADIR%%/data/gfx/unit139r.png +%%DATADIR%%/data/gfx/unit13r.png +%%DATADIR%%/data/gfx/unit140r.png +%%DATADIR%%/data/gfx/unit141r.png +%%DATADIR%%/data/gfx/unit142r.png +%%DATADIR%%/data/gfx/unit143r.png +%%DATADIR%%/data/gfx/unit144r.png +%%DATADIR%%/data/gfx/unit145r.png +%%DATADIR%%/data/gfx/unit146r.png +%%DATADIR%%/data/gfx/unit147r.png +%%DATADIR%%/data/gfx/unit148r.png +%%DATADIR%%/data/gfx/unit149r.png +%%DATADIR%%/data/gfx/unit14r.png +%%DATADIR%%/data/gfx/unit150r.png +%%DATADIR%%/data/gfx/unit151r.png +%%DATADIR%%/data/gfx/unit152r.png +%%DATADIR%%/data/gfx/unit153r.png +%%DATADIR%%/data/gfx/unit154r.png +%%DATADIR%%/data/gfx/unit155r.png +%%DATADIR%%/data/gfx/unit156r.png +%%DATADIR%%/data/gfx/unit157r.png +%%DATADIR%%/data/gfx/unit158r.png +%%DATADIR%%/data/gfx/unit159r.png +%%DATADIR%%/data/gfx/unit15r.png +%%DATADIR%%/data/gfx/unit160r.png +%%DATADIR%%/data/gfx/unit161r.png +%%DATADIR%%/data/gfx/unit162r.png +%%DATADIR%%/data/gfx/unit163r.png +%%DATADIR%%/data/gfx/unit164r.png +%%DATADIR%%/data/gfx/unit165r.png +%%DATADIR%%/data/gfx/unit166r.png +%%DATADIR%%/data/gfx/unit167r.png +%%DATADIR%%/data/gfx/unit168r.png +%%DATADIR%%/data/gfx/unit169r.png +%%DATADIR%%/data/gfx/unit16r.png +%%DATADIR%%/data/gfx/unit170r.png +%%DATADIR%%/data/gfx/unit171r.png +%%DATADIR%%/data/gfx/unit172r.png +%%DATADIR%%/data/gfx/unit173r.png +%%DATADIR%%/data/gfx/unit174r.png +%%DATADIR%%/data/gfx/unit175r.png +%%DATADIR%%/data/gfx/unit176r.png +%%DATADIR%%/data/gfx/unit177r.png +%%DATADIR%%/data/gfx/unit178r.png +%%DATADIR%%/data/gfx/unit179r.png +%%DATADIR%%/data/gfx/unit17r.png +%%DATADIR%%/data/gfx/unit180r.png +%%DATADIR%%/data/gfx/unit181r.png +%%DATADIR%%/data/gfx/unit182r.png +%%DATADIR%%/data/gfx/unit183r.png +%%DATADIR%%/data/gfx/unit184r.png +%%DATADIR%%/data/gfx/unit185r.png +%%DATADIR%%/data/gfx/unit186r.png +%%DATADIR%%/data/gfx/unit187r.png +%%DATADIR%%/data/gfx/unit188r.png +%%DATADIR%%/data/gfx/unit189r.png +%%DATADIR%%/data/gfx/unit18r.png +%%DATADIR%%/data/gfx/unit190r.png +%%DATADIR%%/data/gfx/unit191r.png +%%DATADIR%%/data/gfx/unit192.png +%%DATADIR%%/data/gfx/unit192r.png +%%DATADIR%%/data/gfx/unit193.png +%%DATADIR%%/data/gfx/unit193r.png +%%DATADIR%%/data/gfx/unit194.png +%%DATADIR%%/data/gfx/unit194r.png +%%DATADIR%%/data/gfx/unit195.png +%%DATADIR%%/data/gfx/unit195r.png +%%DATADIR%%/data/gfx/unit196.png +%%DATADIR%%/data/gfx/unit196r.png +%%DATADIR%%/data/gfx/unit197.png +%%DATADIR%%/data/gfx/unit197r.png +%%DATADIR%%/data/gfx/unit198.png +%%DATADIR%%/data/gfx/unit198r.png +%%DATADIR%%/data/gfx/unit199.png +%%DATADIR%%/data/gfx/unit199r.png +%%DATADIR%%/data/gfx/unit19r.png +%%DATADIR%%/data/gfx/unit1r.png +%%DATADIR%%/data/gfx/unit200.png +%%DATADIR%%/data/gfx/unit200r.png +%%DATADIR%%/data/gfx/unit201.png +%%DATADIR%%/data/gfx/unit201r.png +%%DATADIR%%/data/gfx/unit202.png +%%DATADIR%%/data/gfx/unit202r.png +%%DATADIR%%/data/gfx/unit203.png +%%DATADIR%%/data/gfx/unit203r.png +%%DATADIR%%/data/gfx/unit204.png +%%DATADIR%%/data/gfx/unit204r.png +%%DATADIR%%/data/gfx/unit205.png +%%DATADIR%%/data/gfx/unit205r.png +%%DATADIR%%/data/gfx/unit206.png +%%DATADIR%%/data/gfx/unit206r.png +%%DATADIR%%/data/gfx/unit207.png +%%DATADIR%%/data/gfx/unit207r.png +%%DATADIR%%/data/gfx/unit208.png +%%DATADIR%%/data/gfx/unit208r.png +%%DATADIR%%/data/gfx/unit209.png +%%DATADIR%%/data/gfx/unit209r.png +%%DATADIR%%/data/gfx/unit20r.png +%%DATADIR%%/data/gfx/unit210.png +%%DATADIR%%/data/gfx/unit210r.png +%%DATADIR%%/data/gfx/unit211.png +%%DATADIR%%/data/gfx/unit211r.png +%%DATADIR%%/data/gfx/unit212.png +%%DATADIR%%/data/gfx/unit212r.png +%%DATADIR%%/data/gfx/unit213.png +%%DATADIR%%/data/gfx/unit213r.png +%%DATADIR%%/data/gfx/unit214.png +%%DATADIR%%/data/gfx/unit214r.png +%%DATADIR%%/data/gfx/unit215.png +%%DATADIR%%/data/gfx/unit215r.png +%%DATADIR%%/data/gfx/unit216.png +%%DATADIR%%/data/gfx/unit216r.png +%%DATADIR%%/data/gfx/unit217.png +%%DATADIR%%/data/gfx/unit217r.png +%%DATADIR%%/data/gfx/unit218.png +%%DATADIR%%/data/gfx/unit218r.png +%%DATADIR%%/data/gfx/unit219.png +%%DATADIR%%/data/gfx/unit219r.png +%%DATADIR%%/data/gfx/unit21r.png +%%DATADIR%%/data/gfx/unit220.png +%%DATADIR%%/data/gfx/unit220r.png +%%DATADIR%%/data/gfx/unit221.png +%%DATADIR%%/data/gfx/unit221r.png +%%DATADIR%%/data/gfx/unit222.png +%%DATADIR%%/data/gfx/unit222r.png +%%DATADIR%%/data/gfx/unit223.png +%%DATADIR%%/data/gfx/unit223r.png +%%DATADIR%%/data/gfx/unit224.png +%%DATADIR%%/data/gfx/unit224r.png +%%DATADIR%%/data/gfx/unit225.png +%%DATADIR%%/data/gfx/unit225r.png +%%DATADIR%%/data/gfx/unit226.png +%%DATADIR%%/data/gfx/unit226r.png +%%DATADIR%%/data/gfx/unit227.png +%%DATADIR%%/data/gfx/unit227r.png +%%DATADIR%%/data/gfx/unit228.png +%%DATADIR%%/data/gfx/unit228r.png +%%DATADIR%%/data/gfx/unit229.png +%%DATADIR%%/data/gfx/unit229r.png +%%DATADIR%%/data/gfx/unit22r.png +%%DATADIR%%/data/gfx/unit230.png +%%DATADIR%%/data/gfx/unit230r.png +%%DATADIR%%/data/gfx/unit231.png +%%DATADIR%%/data/gfx/unit231r.png +%%DATADIR%%/data/gfx/unit232.png +%%DATADIR%%/data/gfx/unit232r.png +%%DATADIR%%/data/gfx/unit233.png +%%DATADIR%%/data/gfx/unit233r.png +%%DATADIR%%/data/gfx/unit234.png +%%DATADIR%%/data/gfx/unit234r.png +%%DATADIR%%/data/gfx/unit235.png +%%DATADIR%%/data/gfx/unit235r.png +%%DATADIR%%/data/gfx/unit236.png +%%DATADIR%%/data/gfx/unit236r.png +%%DATADIR%%/data/gfx/unit237.png +%%DATADIR%%/data/gfx/unit237r.png +%%DATADIR%%/data/gfx/unit238.png +%%DATADIR%%/data/gfx/unit238r.png +%%DATADIR%%/data/gfx/unit239.png +%%DATADIR%%/data/gfx/unit239r.png +%%DATADIR%%/data/gfx/unit23r.png +%%DATADIR%%/data/gfx/unit240.png +%%DATADIR%%/data/gfx/unit240r.png +%%DATADIR%%/data/gfx/unit241.png +%%DATADIR%%/data/gfx/unit241r.png +%%DATADIR%%/data/gfx/unit242.png +%%DATADIR%%/data/gfx/unit242r.png +%%DATADIR%%/data/gfx/unit243.png +%%DATADIR%%/data/gfx/unit243r.png +%%DATADIR%%/data/gfx/unit244.png +%%DATADIR%%/data/gfx/unit244r.png +%%DATADIR%%/data/gfx/unit245.png +%%DATADIR%%/data/gfx/unit245r.png +%%DATADIR%%/data/gfx/unit246.png +%%DATADIR%%/data/gfx/unit246r.png +%%DATADIR%%/data/gfx/unit247.png +%%DATADIR%%/data/gfx/unit247r.png +%%DATADIR%%/data/gfx/unit248.png +%%DATADIR%%/data/gfx/unit248r.png +%%DATADIR%%/data/gfx/unit249.png +%%DATADIR%%/data/gfx/unit249r.png +%%DATADIR%%/data/gfx/unit24r.png +%%DATADIR%%/data/gfx/unit250.png +%%DATADIR%%/data/gfx/unit250r.png +%%DATADIR%%/data/gfx/unit251.png +%%DATADIR%%/data/gfx/unit251r.png +%%DATADIR%%/data/gfx/unit252.png +%%DATADIR%%/data/gfx/unit252r.png +%%DATADIR%%/data/gfx/unit253.png +%%DATADIR%%/data/gfx/unit253r.png +%%DATADIR%%/data/gfx/unit254.png +%%DATADIR%%/data/gfx/unit254r.png +%%DATADIR%%/data/gfx/unit255.png +%%DATADIR%%/data/gfx/unit255r.png +%%DATADIR%%/data/gfx/unit256.png +%%DATADIR%%/data/gfx/unit256r.png +%%DATADIR%%/data/gfx/unit257.png +%%DATADIR%%/data/gfx/unit257r.png +%%DATADIR%%/data/gfx/unit258.png +%%DATADIR%%/data/gfx/unit258r.png +%%DATADIR%%/data/gfx/unit259.png +%%DATADIR%%/data/gfx/unit259r.png +%%DATADIR%%/data/gfx/unit25r.png +%%DATADIR%%/data/gfx/unit260.png +%%DATADIR%%/data/gfx/unit260r.png +%%DATADIR%%/data/gfx/unit261.png +%%DATADIR%%/data/gfx/unit261r.png +%%DATADIR%%/data/gfx/unit262.png +%%DATADIR%%/data/gfx/unit262r.png +%%DATADIR%%/data/gfx/unit263.png +%%DATADIR%%/data/gfx/unit263r.png +%%DATADIR%%/data/gfx/unit264.png +%%DATADIR%%/data/gfx/unit264r.png +%%DATADIR%%/data/gfx/unit265.png +%%DATADIR%%/data/gfx/unit265r.png +%%DATADIR%%/data/gfx/unit266.png +%%DATADIR%%/data/gfx/unit266r.png +%%DATADIR%%/data/gfx/unit267.png +%%DATADIR%%/data/gfx/unit267r.png +%%DATADIR%%/data/gfx/unit268.png +%%DATADIR%%/data/gfx/unit268r.png +%%DATADIR%%/data/gfx/unit269.png +%%DATADIR%%/data/gfx/unit269r.png +%%DATADIR%%/data/gfx/unit26r.png +%%DATADIR%%/data/gfx/unit270.png +%%DATADIR%%/data/gfx/unit270r.png +%%DATADIR%%/data/gfx/unit271.png +%%DATADIR%%/data/gfx/unit271r.png +%%DATADIR%%/data/gfx/unit272.png +%%DATADIR%%/data/gfx/unit272r.png +%%DATADIR%%/data/gfx/unit273.png +%%DATADIR%%/data/gfx/unit273r.png +%%DATADIR%%/data/gfx/unit274.png +%%DATADIR%%/data/gfx/unit274r.png +%%DATADIR%%/data/gfx/unit275.png +%%DATADIR%%/data/gfx/unit275r.png +%%DATADIR%%/data/gfx/unit276.png +%%DATADIR%%/data/gfx/unit276r.png +%%DATADIR%%/data/gfx/unit277.png +%%DATADIR%%/data/gfx/unit277r.png +%%DATADIR%%/data/gfx/unit278.png +%%DATADIR%%/data/gfx/unit278r.png +%%DATADIR%%/data/gfx/unit279.png +%%DATADIR%%/data/gfx/unit279r.png +%%DATADIR%%/data/gfx/unit27r.png +%%DATADIR%%/data/gfx/unit280.png +%%DATADIR%%/data/gfx/unit280r.png +%%DATADIR%%/data/gfx/unit281.png +%%DATADIR%%/data/gfx/unit281r.png +%%DATADIR%%/data/gfx/unit282.png +%%DATADIR%%/data/gfx/unit282r.png +%%DATADIR%%/data/gfx/unit283.png +%%DATADIR%%/data/gfx/unit283r.png +%%DATADIR%%/data/gfx/unit284.png +%%DATADIR%%/data/gfx/unit284r.png +%%DATADIR%%/data/gfx/unit285.png +%%DATADIR%%/data/gfx/unit285r.png +%%DATADIR%%/data/gfx/unit286.png +%%DATADIR%%/data/gfx/unit286r.png +%%DATADIR%%/data/gfx/unit287.png +%%DATADIR%%/data/gfx/unit287r.png +%%DATADIR%%/data/gfx/unit288.png +%%DATADIR%%/data/gfx/unit288r.png +%%DATADIR%%/data/gfx/unit289.png +%%DATADIR%%/data/gfx/unit289r.png +%%DATADIR%%/data/gfx/unit28r.png +%%DATADIR%%/data/gfx/unit290.png +%%DATADIR%%/data/gfx/unit290r.png +%%DATADIR%%/data/gfx/unit291.png +%%DATADIR%%/data/gfx/unit291r.png +%%DATADIR%%/data/gfx/unit292.png +%%DATADIR%%/data/gfx/unit292r.png +%%DATADIR%%/data/gfx/unit293.png +%%DATADIR%%/data/gfx/unit293r.png +%%DATADIR%%/data/gfx/unit294.png +%%DATADIR%%/data/gfx/unit294r.png +%%DATADIR%%/data/gfx/unit295.png +%%DATADIR%%/data/gfx/unit295r.png +%%DATADIR%%/data/gfx/unit296.png +%%DATADIR%%/data/gfx/unit296r.png +%%DATADIR%%/data/gfx/unit297.png +%%DATADIR%%/data/gfx/unit297r.png +%%DATADIR%%/data/gfx/unit298.png +%%DATADIR%%/data/gfx/unit298r.png +%%DATADIR%%/data/gfx/unit299.png +%%DATADIR%%/data/gfx/unit299r.png +%%DATADIR%%/data/gfx/unit29r.png +%%DATADIR%%/data/gfx/unit2r.png +%%DATADIR%%/data/gfx/unit300.png +%%DATADIR%%/data/gfx/unit300r.png +%%DATADIR%%/data/gfx/unit301.png +%%DATADIR%%/data/gfx/unit301r.png +%%DATADIR%%/data/gfx/unit302.png +%%DATADIR%%/data/gfx/unit302r.png +%%DATADIR%%/data/gfx/unit303.png +%%DATADIR%%/data/gfx/unit303r.png +%%DATADIR%%/data/gfx/unit304.png +%%DATADIR%%/data/gfx/unit304r.png +%%DATADIR%%/data/gfx/unit305.png +%%DATADIR%%/data/gfx/unit305r.png +%%DATADIR%%/data/gfx/unit306.png +%%DATADIR%%/data/gfx/unit306r.png +%%DATADIR%%/data/gfx/unit307.png +%%DATADIR%%/data/gfx/unit307r.png +%%DATADIR%%/data/gfx/unit308.png +%%DATADIR%%/data/gfx/unit308r.png +%%DATADIR%%/data/gfx/unit309.png +%%DATADIR%%/data/gfx/unit309r.png +%%DATADIR%%/data/gfx/unit30r.png +%%DATADIR%%/data/gfx/unit310.png +%%DATADIR%%/data/gfx/unit310r.png +%%DATADIR%%/data/gfx/unit311.png +%%DATADIR%%/data/gfx/unit311r.png +%%DATADIR%%/data/gfx/unit312.png +%%DATADIR%%/data/gfx/unit312r.png +%%DATADIR%%/data/gfx/unit313.png +%%DATADIR%%/data/gfx/unit313r.png +%%DATADIR%%/data/gfx/unit314.png +%%DATADIR%%/data/gfx/unit314r.png +%%DATADIR%%/data/gfx/unit315.png +%%DATADIR%%/data/gfx/unit315r.png +%%DATADIR%%/data/gfx/unit316.png +%%DATADIR%%/data/gfx/unit316r.png +%%DATADIR%%/data/gfx/unit317.png +%%DATADIR%%/data/gfx/unit317r.png +%%DATADIR%%/data/gfx/unit318.png +%%DATADIR%%/data/gfx/unit318r.png +%%DATADIR%%/data/gfx/unit319.png +%%DATADIR%%/data/gfx/unit319r.png +%%DATADIR%%/data/gfx/unit31r.png +%%DATADIR%%/data/gfx/unit320r.png +%%DATADIR%%/data/gfx/unit321r.png +%%DATADIR%%/data/gfx/unit322r.png +%%DATADIR%%/data/gfx/unit323r.png +%%DATADIR%%/data/gfx/unit324r.png +%%DATADIR%%/data/gfx/unit325r.png +%%DATADIR%%/data/gfx/unit326r.png +%%DATADIR%%/data/gfx/unit327r.png +%%DATADIR%%/data/gfx/unit328r.png +%%DATADIR%%/data/gfx/unit329r.png +%%DATADIR%%/data/gfx/unit32r.png +%%DATADIR%%/data/gfx/unit330r.png +%%DATADIR%%/data/gfx/unit331r.png +%%DATADIR%%/data/gfx/unit332r.png +%%DATADIR%%/data/gfx/unit333r.png +%%DATADIR%%/data/gfx/unit334r.png +%%DATADIR%%/data/gfx/unit335r.png +%%DATADIR%%/data/gfx/unit336r.png +%%DATADIR%%/data/gfx/unit337r.png +%%DATADIR%%/data/gfx/unit338r.png +%%DATADIR%%/data/gfx/unit339r.png +%%DATADIR%%/data/gfx/unit33r.png +%%DATADIR%%/data/gfx/unit340r.png +%%DATADIR%%/data/gfx/unit341r.png +%%DATADIR%%/data/gfx/unit342r.png +%%DATADIR%%/data/gfx/unit343r.png +%%DATADIR%%/data/gfx/unit344r.png +%%DATADIR%%/data/gfx/unit345r.png +%%DATADIR%%/data/gfx/unit346r.png +%%DATADIR%%/data/gfx/unit347r.png +%%DATADIR%%/data/gfx/unit348r.png +%%DATADIR%%/data/gfx/unit349r.png +%%DATADIR%%/data/gfx/unit34r.png +%%DATADIR%%/data/gfx/unit350r.png +%%DATADIR%%/data/gfx/unit351r.png +%%DATADIR%%/data/gfx/unit352r.png +%%DATADIR%%/data/gfx/unit353r.png +%%DATADIR%%/data/gfx/unit354r.png +%%DATADIR%%/data/gfx/unit355r.png +%%DATADIR%%/data/gfx/unit356r.png +%%DATADIR%%/data/gfx/unit357r.png +%%DATADIR%%/data/gfx/unit358r.png +%%DATADIR%%/data/gfx/unit359r.png +%%DATADIR%%/data/gfx/unit35r.png +%%DATADIR%%/data/gfx/unit360r.png +%%DATADIR%%/data/gfx/unit361r.png +%%DATADIR%%/data/gfx/unit362r.png +%%DATADIR%%/data/gfx/unit363r.png +%%DATADIR%%/data/gfx/unit364r.png +%%DATADIR%%/data/gfx/unit365r.png +%%DATADIR%%/data/gfx/unit366r.png +%%DATADIR%%/data/gfx/unit367r.png +%%DATADIR%%/data/gfx/unit368r.png +%%DATADIR%%/data/gfx/unit369r.png +%%DATADIR%%/data/gfx/unit36r.png +%%DATADIR%%/data/gfx/unit370r.png +%%DATADIR%%/data/gfx/unit371r.png +%%DATADIR%%/data/gfx/unit372r.png +%%DATADIR%%/data/gfx/unit373r.png +%%DATADIR%%/data/gfx/unit374r.png +%%DATADIR%%/data/gfx/unit375r.png +%%DATADIR%%/data/gfx/unit376r.png +%%DATADIR%%/data/gfx/unit377r.png +%%DATADIR%%/data/gfx/unit378r.png +%%DATADIR%%/data/gfx/unit379r.png +%%DATADIR%%/data/gfx/unit37r.png +%%DATADIR%%/data/gfx/unit380r.png +%%DATADIR%%/data/gfx/unit381r.png +%%DATADIR%%/data/gfx/unit382r.png +%%DATADIR%%/data/gfx/unit383r.png +%%DATADIR%%/data/gfx/unit384.png +%%DATADIR%%/data/gfx/unit384r.png +%%DATADIR%%/data/gfx/unit385.png +%%DATADIR%%/data/gfx/unit385r.png +%%DATADIR%%/data/gfx/unit386.png +%%DATADIR%%/data/gfx/unit386r.png +%%DATADIR%%/data/gfx/unit387.png +%%DATADIR%%/data/gfx/unit387r.png +%%DATADIR%%/data/gfx/unit388.png +%%DATADIR%%/data/gfx/unit388r.png +%%DATADIR%%/data/gfx/unit389.png +%%DATADIR%%/data/gfx/unit389r.png +%%DATADIR%%/data/gfx/unit38r.png +%%DATADIR%%/data/gfx/unit390.png +%%DATADIR%%/data/gfx/unit390r.png +%%DATADIR%%/data/gfx/unit391.png +%%DATADIR%%/data/gfx/unit391r.png +%%DATADIR%%/data/gfx/unit392.png +%%DATADIR%%/data/gfx/unit392r.png +%%DATADIR%%/data/gfx/unit393.png +%%DATADIR%%/data/gfx/unit393r.png +%%DATADIR%%/data/gfx/unit394.png +%%DATADIR%%/data/gfx/unit394r.png +%%DATADIR%%/data/gfx/unit395.png +%%DATADIR%%/data/gfx/unit395r.png +%%DATADIR%%/data/gfx/unit396.png +%%DATADIR%%/data/gfx/unit396r.png +%%DATADIR%%/data/gfx/unit397.png +%%DATADIR%%/data/gfx/unit397r.png +%%DATADIR%%/data/gfx/unit398.png +%%DATADIR%%/data/gfx/unit398r.png +%%DATADIR%%/data/gfx/unit399.png +%%DATADIR%%/data/gfx/unit399r.png +%%DATADIR%%/data/gfx/unit39r.png +%%DATADIR%%/data/gfx/unit3r.png +%%DATADIR%%/data/gfx/unit400.png +%%DATADIR%%/data/gfx/unit400r.png +%%DATADIR%%/data/gfx/unit401.png +%%DATADIR%%/data/gfx/unit401r.png +%%DATADIR%%/data/gfx/unit402.png +%%DATADIR%%/data/gfx/unit402r.png +%%DATADIR%%/data/gfx/unit403.png +%%DATADIR%%/data/gfx/unit403r.png +%%DATADIR%%/data/gfx/unit404.png +%%DATADIR%%/data/gfx/unit404r.png +%%DATADIR%%/data/gfx/unit405.png +%%DATADIR%%/data/gfx/unit405r.png +%%DATADIR%%/data/gfx/unit406.png +%%DATADIR%%/data/gfx/unit406r.png +%%DATADIR%%/data/gfx/unit407.png +%%DATADIR%%/data/gfx/unit407r.png +%%DATADIR%%/data/gfx/unit408.png +%%DATADIR%%/data/gfx/unit408r.png +%%DATADIR%%/data/gfx/unit409.png +%%DATADIR%%/data/gfx/unit409r.png +%%DATADIR%%/data/gfx/unit40r.png +%%DATADIR%%/data/gfx/unit410.png +%%DATADIR%%/data/gfx/unit410r.png +%%DATADIR%%/data/gfx/unit411.png +%%DATADIR%%/data/gfx/unit411r.png +%%DATADIR%%/data/gfx/unit412.png +%%DATADIR%%/data/gfx/unit412r.png +%%DATADIR%%/data/gfx/unit413.png +%%DATADIR%%/data/gfx/unit413r.png +%%DATADIR%%/data/gfx/unit414.png +%%DATADIR%%/data/gfx/unit414r.png +%%DATADIR%%/data/gfx/unit415.png +%%DATADIR%%/data/gfx/unit415r.png +%%DATADIR%%/data/gfx/unit416.png +%%DATADIR%%/data/gfx/unit416r.png +%%DATADIR%%/data/gfx/unit417.png +%%DATADIR%%/data/gfx/unit417r.png +%%DATADIR%%/data/gfx/unit418.png +%%DATADIR%%/data/gfx/unit418r.png +%%DATADIR%%/data/gfx/unit419.png +%%DATADIR%%/data/gfx/unit419r.png +%%DATADIR%%/data/gfx/unit41r.png +%%DATADIR%%/data/gfx/unit420.png +%%DATADIR%%/data/gfx/unit420r.png +%%DATADIR%%/data/gfx/unit421.png +%%DATADIR%%/data/gfx/unit421r.png +%%DATADIR%%/data/gfx/unit422.png +%%DATADIR%%/data/gfx/unit422r.png +%%DATADIR%%/data/gfx/unit423.png +%%DATADIR%%/data/gfx/unit423r.png +%%DATADIR%%/data/gfx/unit424.png +%%DATADIR%%/data/gfx/unit424r.png +%%DATADIR%%/data/gfx/unit425.png +%%DATADIR%%/data/gfx/unit425r.png +%%DATADIR%%/data/gfx/unit426.png +%%DATADIR%%/data/gfx/unit426r.png +%%DATADIR%%/data/gfx/unit427.png +%%DATADIR%%/data/gfx/unit427r.png +%%DATADIR%%/data/gfx/unit428.png +%%DATADIR%%/data/gfx/unit428r.png +%%DATADIR%%/data/gfx/unit429.png +%%DATADIR%%/data/gfx/unit429r.png +%%DATADIR%%/data/gfx/unit42r.png +%%DATADIR%%/data/gfx/unit430.png +%%DATADIR%%/data/gfx/unit430r.png +%%DATADIR%%/data/gfx/unit431.png +%%DATADIR%%/data/gfx/unit431r.png +%%DATADIR%%/data/gfx/unit432.png +%%DATADIR%%/data/gfx/unit432r.png +%%DATADIR%%/data/gfx/unit433.png +%%DATADIR%%/data/gfx/unit433r.png +%%DATADIR%%/data/gfx/unit434.png +%%DATADIR%%/data/gfx/unit434r.png +%%DATADIR%%/data/gfx/unit435.png +%%DATADIR%%/data/gfx/unit435r.png +%%DATADIR%%/data/gfx/unit436.png +%%DATADIR%%/data/gfx/unit436r.png +%%DATADIR%%/data/gfx/unit437.png +%%DATADIR%%/data/gfx/unit437r.png +%%DATADIR%%/data/gfx/unit438.png +%%DATADIR%%/data/gfx/unit438r.png +%%DATADIR%%/data/gfx/unit439.png +%%DATADIR%%/data/gfx/unit439r.png +%%DATADIR%%/data/gfx/unit43r.png +%%DATADIR%%/data/gfx/unit440.png +%%DATADIR%%/data/gfx/unit440r.png +%%DATADIR%%/data/gfx/unit441.png +%%DATADIR%%/data/gfx/unit441r.png +%%DATADIR%%/data/gfx/unit442.png +%%DATADIR%%/data/gfx/unit442r.png +%%DATADIR%%/data/gfx/unit443.png +%%DATADIR%%/data/gfx/unit443r.png +%%DATADIR%%/data/gfx/unit444.png +%%DATADIR%%/data/gfx/unit444r.png +%%DATADIR%%/data/gfx/unit445.png +%%DATADIR%%/data/gfx/unit445r.png +%%DATADIR%%/data/gfx/unit446.png +%%DATADIR%%/data/gfx/unit446r.png +%%DATADIR%%/data/gfx/unit447.png +%%DATADIR%%/data/gfx/unit447r.png +%%DATADIR%%/data/gfx/unit44r.png +%%DATADIR%%/data/gfx/unit45r.png +%%DATADIR%%/data/gfx/unit46r.png +%%DATADIR%%/data/gfx/unit47r.png +%%DATADIR%%/data/gfx/unit48r.png +%%DATADIR%%/data/gfx/unit49r.png +%%DATADIR%%/data/gfx/unit4r.png +%%DATADIR%%/data/gfx/unit50r.png +%%DATADIR%%/data/gfx/unit51r.png +%%DATADIR%%/data/gfx/unit52r.png +%%DATADIR%%/data/gfx/unit53r.png +%%DATADIR%%/data/gfx/unit54r.png +%%DATADIR%%/data/gfx/unit55r.png +%%DATADIR%%/data/gfx/unit56r.png +%%DATADIR%%/data/gfx/unit57r.png +%%DATADIR%%/data/gfx/unit58r.png +%%DATADIR%%/data/gfx/unit59r.png +%%DATADIR%%/data/gfx/unit5r.png +%%DATADIR%%/data/gfx/unit60r.png +%%DATADIR%%/data/gfx/unit61r.png +%%DATADIR%%/data/gfx/unit62r.png +%%DATADIR%%/data/gfx/unit63r.png +%%DATADIR%%/data/gfx/unit64.png +%%DATADIR%%/data/gfx/unit64r.png +%%DATADIR%%/data/gfx/unit65.png +%%DATADIR%%/data/gfx/unit65r.png +%%DATADIR%%/data/gfx/unit66.png +%%DATADIR%%/data/gfx/unit66r.png +%%DATADIR%%/data/gfx/unit67.png +%%DATADIR%%/data/gfx/unit67r.png +%%DATADIR%%/data/gfx/unit68.png +%%DATADIR%%/data/gfx/unit68r.png +%%DATADIR%%/data/gfx/unit69.png +%%DATADIR%%/data/gfx/unit69r.png +%%DATADIR%%/data/gfx/unit6r.png +%%DATADIR%%/data/gfx/unit70.png +%%DATADIR%%/data/gfx/unit70r.png +%%DATADIR%%/data/gfx/unit71.png +%%DATADIR%%/data/gfx/unit71r.png +%%DATADIR%%/data/gfx/unit72.png +%%DATADIR%%/data/gfx/unit72r.png +%%DATADIR%%/data/gfx/unit73.png +%%DATADIR%%/data/gfx/unit73r.png +%%DATADIR%%/data/gfx/unit74.png +%%DATADIR%%/data/gfx/unit74r.png +%%DATADIR%%/data/gfx/unit75.png +%%DATADIR%%/data/gfx/unit75r.png +%%DATADIR%%/data/gfx/unit76.png +%%DATADIR%%/data/gfx/unit76r.png +%%DATADIR%%/data/gfx/unit77.png +%%DATADIR%%/data/gfx/unit77r.png +%%DATADIR%%/data/gfx/unit78.png +%%DATADIR%%/data/gfx/unit78r.png +%%DATADIR%%/data/gfx/unit79.png +%%DATADIR%%/data/gfx/unit79r.png +%%DATADIR%%/data/gfx/unit7r.png +%%DATADIR%%/data/gfx/unit80.png +%%DATADIR%%/data/gfx/unit80r.png +%%DATADIR%%/data/gfx/unit81.png +%%DATADIR%%/data/gfx/unit81r.png +%%DATADIR%%/data/gfx/unit82.png +%%DATADIR%%/data/gfx/unit82r.png +%%DATADIR%%/data/gfx/unit83.png +%%DATADIR%%/data/gfx/unit83r.png +%%DATADIR%%/data/gfx/unit84.png +%%DATADIR%%/data/gfx/unit84r.png +%%DATADIR%%/data/gfx/unit85.png +%%DATADIR%%/data/gfx/unit85r.png +%%DATADIR%%/data/gfx/unit86.png +%%DATADIR%%/data/gfx/unit86r.png +%%DATADIR%%/data/gfx/unit87.png +%%DATADIR%%/data/gfx/unit87r.png +%%DATADIR%%/data/gfx/unit88.png +%%DATADIR%%/data/gfx/unit88r.png +%%DATADIR%%/data/gfx/unit89.png +%%DATADIR%%/data/gfx/unit89r.png +%%DATADIR%%/data/gfx/unit8r.png +%%DATADIR%%/data/gfx/unit90.png +%%DATADIR%%/data/gfx/unit90r.png +%%DATADIR%%/data/gfx/unit91.png +%%DATADIR%%/data/gfx/unit91r.png +%%DATADIR%%/data/gfx/unit92.png +%%DATADIR%%/data/gfx/unit92r.png +%%DATADIR%%/data/gfx/unit93.png +%%DATADIR%%/data/gfx/unit93r.png +%%DATADIR%%/data/gfx/unit94.png +%%DATADIR%%/data/gfx/unit94r.png +%%DATADIR%%/data/gfx/unit95.png +%%DATADIR%%/data/gfx/unit95r.png +%%DATADIR%%/data/gfx/unit96.png +%%DATADIR%%/data/gfx/unit96r.png +%%DATADIR%%/data/gfx/unit97.png +%%DATADIR%%/data/gfx/unit97r.png +%%DATADIR%%/data/gfx/unit98.png +%%DATADIR%%/data/gfx/unit98r.png +%%DATADIR%%/data/gfx/unit99.png +%%DATADIR%%/data/gfx/unit99r.png +%%DATADIR%%/data/gfx/unit9r.png +%%DATADIR%%/data/gfx/unitmini0r.png +%%DATADIR%%/data/gfx/unitmini1r.png +%%DATADIR%%/data/gfx/unitmini2r.png +%%DATADIR%%/data/gfx/wall0.png +%%DATADIR%%/data/gfx/wall0r.png +%%DATADIR%%/data/gfx/wall1.png +%%DATADIR%%/data/gfx/wall10.png +%%DATADIR%%/data/gfx/wall10r.png +%%DATADIR%%/data/gfx/wall11.png +%%DATADIR%%/data/gfx/wall11r.png +%%DATADIR%%/data/gfx/wall12.png +%%DATADIR%%/data/gfx/wall12r.png +%%DATADIR%%/data/gfx/wall13.png +%%DATADIR%%/data/gfx/wall13r.png +%%DATADIR%%/data/gfx/wall14.png +%%DATADIR%%/data/gfx/wall14r.png +%%DATADIR%%/data/gfx/wall15.png +%%DATADIR%%/data/gfx/wall15r.png +%%DATADIR%%/data/gfx/wall1r.png +%%DATADIR%%/data/gfx/wall2.png +%%DATADIR%%/data/gfx/wall2r.png +%%DATADIR%%/data/gfx/wall3.png +%%DATADIR%%/data/gfx/wall3r.png +%%DATADIR%%/data/gfx/wall4.png +%%DATADIR%%/data/gfx/wall4r.png +%%DATADIR%%/data/gfx/wall5.png +%%DATADIR%%/data/gfx/wall5r.png +%%DATADIR%%/data/gfx/wall6.png +%%DATADIR%%/data/gfx/wall6r.png +%%DATADIR%%/data/gfx/wall7.png +%%DATADIR%%/data/gfx/wall7r.png +%%DATADIR%%/data/gfx/wall8.png +%%DATADIR%%/data/gfx/wall8r.png +%%DATADIR%%/data/gfx/wall9.png +%%DATADIR%%/data/gfx/wall9r.png +%%DATADIR%%/data/gfx/wallc0.png +%%DATADIR%%/data/gfx/wallc0r.png +%%DATADIR%%/data/gfx/warflag0r.png +%%DATADIR%%/data/gfx/water0.png +%%DATADIR%%/data/gfx/water1.png +%%DATADIR%%/data/gui/editor0.png +%%DATADIR%%/data/gui/editor1.png +%%DATADIR%%/data/gui/editor10.png +%%DATADIR%%/data/gui/editor11.png +%%DATADIR%%/data/gui/editor12.png +%%DATADIR%%/data/gui/editor13.png +%%DATADIR%%/data/gui/editor14.png +%%DATADIR%%/data/gui/editor15.png +%%DATADIR%%/data/gui/editor16.png +%%DATADIR%%/data/gui/editor17.png +%%DATADIR%%/data/gui/editor18.png +%%DATADIR%%/data/gui/editor19.png +%%DATADIR%%/data/gui/editor2.png +%%DATADIR%%/data/gui/editor20.png +%%DATADIR%%/data/gui/editor21.png +%%DATADIR%%/data/gui/editor22.png +%%DATADIR%%/data/gui/editor23.png +%%DATADIR%%/data/gui/editor24.png +%%DATADIR%%/data/gui/editor25.png +%%DATADIR%%/data/gui/editor26.png +%%DATADIR%%/data/gui/editor27.png +%%DATADIR%%/data/gui/editor28.png +%%DATADIR%%/data/gui/editor29.png +%%DATADIR%%/data/gui/editor3.png +%%DATADIR%%/data/gui/editor30.png +%%DATADIR%%/data/gui/editor31.png +%%DATADIR%%/data/gui/editor32.png +%%DATADIR%%/data/gui/editor33.png +%%DATADIR%%/data/gui/editor4.png +%%DATADIR%%/data/gui/editor5.png +%%DATADIR%%/data/gui/editor6.png +%%DATADIR%%/data/gui/editor7.png +%%DATADIR%%/data/gui/editor8.png +%%DATADIR%%/data/gui/editor9.png +%%DATADIR%%/data/gui/yog0.png +%%DATADIR%%/data/gui/yog1.png +%%DATADIR%%/data/keyboard-gui.default.txt +%%DATADIR%%/data/keyboard-mapedit.default.txt +%%DATADIR%%/data/nicowar.default.txt +%%DATADIR%%/data/nicowar.txt +%%DATADIR%%/data/pal.txt +%%DATADIR%%/data/ressources.txt +%%DATADIR%%/data/texts.ar.txt +%%DATADIR%%/data/texts.br.txt +%%DATADIR%%/data/texts.ca.txt +%%DATADIR%%/data/texts.cz.txt +%%DATADIR%%/data/texts.de.txt +%%DATADIR%%/data/texts.dk.txt +%%DATADIR%%/data/texts.en.txt +%%DATADIR%%/data/texts.es.txt +%%DATADIR%%/data/texts.eu.txt +%%DATADIR%%/data/texts.fr.txt +%%DATADIR%%/data/texts.gr.txt +%%DATADIR%%/data/texts.hu.txt +%%DATADIR%%/data/texts.incomplete.txt +%%DATADIR%%/data/texts.it.txt +%%DATADIR%%/data/texts.keys.txt +%%DATADIR%%/data/texts.list.txt +%%DATADIR%%/data/texts.nl.txt +%%DATADIR%%/data/texts.pl.txt +%%DATADIR%%/data/texts.pt.txt +%%DATADIR%%/data/texts.ro.txt +%%DATADIR%%/data/texts.ru.txt +%%DATADIR%%/data/texts.si.txt +%%DATADIR%%/data/texts.sk.txt +%%DATADIR%%/data/texts.sr.txt +%%DATADIR%%/data/texts.sv.txt +%%DATADIR%%/data/texts.tr.txt +%%DATADIR%%/data/texts.zh-tw.txt +%%DATADIR%%/data/units.txt +%%DATADIR%%/data/unitsSkins.txt +%%DATADIR%%/data/zik/a1.ogg +%%DATADIR%%/data/zik/a2.ogg +%%DATADIR%%/data/zik/a3.ogg +%%DATADIR%%/data/zik/intro.ogg +%%DATADIR%%/data/zik/menu.ogg +%%DATADIR%%/maps/A_big_pond.map +%%DATADIR%%/maps/Centerfolds_2.map +%%DATADIR%%/maps/Easy_Three.map +%%DATADIR%%/maps/FourSquares1.map +%%DATADIR%%/maps/G2.map +%%DATADIR%%/maps/Garden_3.map +%%DATADIR%%/maps/Holiday_Island_2.map +%%DATADIR%%/maps/Isles.map +%%DATADIR%%/maps/Migration.map +%%DATADIR%%/maps/Muka.map +%%DATADIR%%/maps/One_on_One.map +%%DATADIR%%/maps/Playground.map +%%DATADIR%%/maps/Scarse_Supply.map +%%DATADIR%%/maps/SmallForTwo.map +%%DATADIR%%/maps/Tower_Defense_for_2.map +%%DATADIR%%/maps/Triangle.map +%%DATADIR%%/maps/WaterInTheDesert.map +%%DATADIR%%/maps/Wild_River.map +%%DATADIR%%/maps/a_new_try.map +%%DATADIR%%/maps/newislands_green_blue.map +%%DATADIR%%/maps/stone_bases.map +%%DATADIR%%/maps/strange2.map +%%DATADIR%%/maps/the_sand_square.map +%%DATADIR%%/maps/weakness.map +%%DATADIR%%/scripts/tutorial_part1.sgsl +%%DATADIR%%/scripts/tutorial_part2.sgsl +%%DATADIR%%/scripts/tutorial_part3.sgsl +%%DATADIR%%/scripts/tutorial_part4.sgsl +share/icons/hicolor/128x128/apps/glob2.png +share/icons/hicolor/16x16/apps/glob2.png +share/icons/hicolor/24x24/apps/glob2.png +share/icons/hicolor/32x32/apps/glob2.png +share/icons/hicolor/48x48/apps/glob2.png +share/icons/hicolor/64x64/apps/glob2.png +share/pixmaps/glob2.png diff --git a/games/marsnomercy/Makefile b/games/marsnomercy/Makefile new file mode 100644 index 000000000000..e495ee113738 --- /dev/null +++ b/games/marsnomercy/Makefile @@ -0,0 +1,55 @@ +# Created by: Jose Alonso Cardenas Marquez <acardenas@bsd.org.pe> +# $FreeBSD$ + +PORTNAME= marsnomercy +PORTVERSION= 0.2.1 +PORTREVISION= 13 +CATEGORIES= games +MASTER_SITES= SF/mars/mars/${PORTVERSION} +DISTNAME= mars-${PORTVERSION}-src + +MAINTAINER= ports@FreeBSD.org +COMMENT= Turn-based strategy game setting on Mars + +LICENSE= GPLv2 # version unspecified actually + +LIB_DEPENDS= libpng.so:graphics/png + +USES= compiler gl scons:python2 sdl +USE_GL= gl +USE_SDL= sdl image ttf +SCONS_ARGS= prefix=${PREFIX} + +CXXFLAGS+= ${CXXFLAGS_${CHOSEN_COMPILER_TYPE}} +CXXFLAGS_clang= -Wno-c++11-narrowing +SUB_FILES= mars-nomercy pkg-message +WRKSRC= ${WRKDIR}/mars-${PORTVERSION} + +PLIST_FILES= bin/mars-nomercy \ + libexec/mars +PLIST_DIRS= %%DATADIR%%/img/units/mercenaries +PORTDATA= * + +OPTIONS_DEFINE= DEBUG OPENGL + +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MDEBUG} +SCONS_ARGS+= debug=1 +.else +SCONS_ARGS+= debug=0 +.endif + +.if ${PORT_OPTIONS:MOPENGL} +SCONS_ARGS+= with_opengl=1 +.else +SCONS_ARGS+= with_opengl=0 +.endif + +do-install: + ${INSTALL_SCRIPT} ${WRKDIR}/mars-nomercy ${STAGEDIR}${PREFIX}/bin/ + ${INSTALL_PROGRAM} ${WRKSRC}/mars ${STAGEDIR}${PREFIX}/libexec/mars + cd ${WRKSRC}/data && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR} + @${RM} ${STAGEDIR}${DATADIR}/SConscript + +.include <bsd.port.mk> diff --git a/games/marsnomercy/distinfo b/games/marsnomercy/distinfo new file mode 100644 index 000000000000..0e0e54bca95e --- /dev/null +++ b/games/marsnomercy/distinfo @@ -0,0 +1,2 @@ +SHA256 (mars-0.2.1-src.tar.gz) = 6c3f78a505f6b2989dd024ee3b1e707a38981ebe0177d6eca32b40e70ed16f49 +SIZE (mars-0.2.1-src.tar.gz) = 2728661 diff --git a/games/marsnomercy/files/mars-nomercy.in b/games/marsnomercy/files/mars-nomercy.in new file mode 100644 index 000000000000..77318dc2d453 --- /dev/null +++ b/games/marsnomercy/files/mars-nomercy.in @@ -0,0 +1,12 @@ +#!/bin/sh + +if [ -d "~/.marsnomercy" ]; then + cd ~/.marsomercy || exit 1 + exec %%PREFIX%%/libexec/mars "$@" +else + cd %%DATADIR%% || exit 1 + find * -type d -exec mkdir -p ~/.marsnomercy/data/{} \; || exit 1 + find * -type f -exec ln -s %%DATADIR%%/{} ~/.marsnomercy/data/{} \; 2>/dev/null || exit 1 + cd ~/.marsnomercy || exit 1 + exec %%PREFIX%%/libexec/mars "$@" +fi diff --git a/games/marsnomercy/files/patch-SConstruct b/games/marsnomercy/files/patch-SConstruct new file mode 100644 index 000000000000..a6286c75b53a --- /dev/null +++ b/games/marsnomercy/files/patch-SConstruct @@ -0,0 +1,108 @@ +--- SConstruct.orig 2006-12-19 00:56:15 UTC ++++ SConstruct +@@ -1,22 +1,22 @@ + import sys, os + +-# create build environment and options ++# create build environment and variables + env = Environment() +-opts = Options() ++opts = Variables() + + # OPTION debug +-opts.Add(BoolOption('debug', 'Set to yes (or 1) to build for debug', 'no')) ++opts.Add(BoolVariable('debug', 'Set to yes (or 1) to build for debug', 'no')) + # OPTION strip +-opts.Add(BoolOption('strip', 'Set to no (or 0) to avoid stripping binaries', 'yes')) ++opts.Add(BoolVariable('strip', 'Set to no (or 0) to avoid stripping binaries', 'yes')) + # OPTION warning +-opts.Add(BoolOption('warnings', 'Set to yes (or 1) to print all warnings', 'yes')) ++opts.Add(BoolVariable('warnings', 'Set to yes (or 1) to print all warnings', 'yes')) + # OPTION with_opengl +-opts.Add(BoolOption('with_opengl', 'Set to no (or 0) if you do not want OpenGL support in the game', 'yes')) ++opts.Add(BoolVariable('with_opengl', 'Set to no (or 0) if you do not want OpenGL support in the game', 'yes')) + # OPTION root & prefix +-opts.Add(PathOption('root', 'Path to the fakeroot directory', '/')) +-opts.Add(PathOption('prefix', 'Path to prefix to default destinations', '/usr/local')) +-# Adding options to the environment +-env = Environment(options = opts) ++opts.Add(PathVariable('root', 'Path to the fakeroot directory', '/')) ++opts.Add(PathVariable('prefix', 'Path to prefix to default destinations', '/usr/local')) ++# Adding variables to the environment ++env = Environment(variables = opts) + + if 'install' in sys.argv: + root = ARGUMENTS.get('root', '/') +@@ -33,17 +33,17 @@ else: + + # OPTION no_mingw + if env['PLATFORM'] == 'cygwin': +- opts.Add(BoolOption('no_mingw', 'Set to yes (or 1) to build without mingw', 'no')) +- env = Environment(options = opts) ++ opts.Add(BoolVariable('no_mingw', 'Set to yes (or 1) to build without mingw', 'no')) ++ env = Environment(variables = opts) + + # PLATFORM mingw under cygwin + if env['PLATFORM'] == 'cygwin' and not int(env['no_mingw']): +- # add mingw specific options +- opts.AddOptions( +- PathOption('mingw_cygdir', 'where your mingw installation is located under cygwin', '/mingw'), +- PathOption('mingw_windir', 'where your mingw installation is located under cygwin', 'F:/Programmi/Dev-Cpp') ++ # add mingw specific variables ++ opts.AddVariables( ++ PathVariable('mingw_cygdir', 'where your mingw installation is located under cygwin', '/mingw'), ++ PathVariable('mingw_windir', 'where your mingw installation is located under cygwin', 'F:/Programmi/Dev-Cpp') + ) +- env = Environment(options = opts) ++ env = Environment(variables = opts) + + mingw_cygdir = env['mingw_cygdir'] + mingw_windir = env['mingw_windir'] +@@ -57,15 +57,21 @@ if env['PLATFORM'] == 'cygwin' and not i + + # PLATFORM posix or pure cygwin + else: ++ # Section used for FreeBSD port ++ LOCALBASE = os.environ['LOCALBASE'] ++ LOCALBASE = os.environ['LOCALBASE'] + # determine compiler and linker flags for SDL +- env.ParseConfig('sdl-config --cflags') +- env.ParseConfig('sdl-config --libs') ++ SDL_CONFIG = os.environ['SDL_CONFIG'] ++ env.ParseConfig(SDL_CONFIG + ' --cflags') ++ env.ParseConfig(SDL_CONFIG + ' --libs') + # add additional compiler flags +- if not int(env['debug']): +- env.Append(CXXFLAGS = ['-O2']) +- ++ env.Replace(CC = os.environ['CC']) ++ env.Replace(CXX = os.environ['CXX']) ++ env.Replace(CPPPATH = [LOCALBASE + '/include',LOCALBASE+ '/include']) ++ env.Replace(LIBPATH = [LOCALBASE + '/lib',LOCALBASE+ '/lib']) ++ env.Append(CXXFLAGS = os.environ['CXXFLAGS'] + ' `' + SDL_CONFIG + ' --cflags`') + +-# generate help for options ++# generate help for variables + Help(opts.GenerateHelpText(env)) + + # build for debug +@@ -92,16 +98,16 @@ if data_dir != '': # installation requir + if not env.GetOption('clean'): + print ":: Checking for libs" + conf = Configure(env) +- if not conf.CheckLibWithHeader('SDL', 'SDL.h', 'c', 'SDL_Init(SDL_INIT_VIDEO);', autoadd = 0): ++ if not conf.CheckLibWithHeader('SDL', 'SDL/SDL.h', 'c', 'SDL_Init(SDL_INIT_VIDEO);', autoadd = 0): + print 'Did not find libSDL, exiting!' + Exit(1) + if not conf.CheckLibWithHeader('png', 'png.h', 'c', 'png_error(NULL, "test");'): + print 'Did not find libpng, exiting!' + Exit(1) +- if not conf.CheckLibWithHeader('SDL_image', 'SDL_image.h', 'c', 'IMG_GetError();'): ++ if not conf.CheckLibWithHeader('SDL_image', 'SDL/SDL_image.h', 'c', 'IMG_GetError();'): + print 'Did not find libSDL_image, exiting!' + Exit(1) +- if not conf.CheckLibWithHeader('SDL_ttf', 'SDL_ttf.h', 'c', 'TTF_Init();'): ++ if not conf.CheckLibWithHeader('SDL_ttf', 'SDL/SDL_ttf.h', 'c', 'TTF_Init();'): + print 'Did not find libSDL_ttf, exiting!' + Exit(1) + if int(env['with_opengl']): diff --git a/games/marsnomercy/files/pkg-message.in b/games/marsnomercy/files/pkg-message.in new file mode 100644 index 000000000000..d09c1cd95abc --- /dev/null +++ b/games/marsnomercy/files/pkg-message.in @@ -0,0 +1,14 @@ +[ +{ type: install + message: <<EOM +1) I renamed this port to marsnomercy (Mars Land of No Mercy), because exist a + port using mars name (cad/mars). + +2) Run mars: + + # mars-nomercy + +3) Enjoy it ;) +EOM +} +] diff --git a/games/marsnomercy/pkg-descr b/games/marsnomercy/pkg-descr new file mode 100644 index 000000000000..071384d6a487 --- /dev/null +++ b/games/marsnomercy/pkg-descr @@ -0,0 +1,21 @@ +Mars, Land of No Mercy is a turn-based strategy game setting on Mars during the +early stages of human colonization.The player embodies the leader of a +mercenary team, landed on Mars to take advantage of conqueror battles between +the Worldwide Colonizer Corporations. + +The main purpose is to command his team trying to find them commissions, +training and leading them in battle, while still being aware of financial and +instrumental resources by administering them.The Mech is the fundamental craft +used by mercenaries, but they won't lack of other kind of units, as well as +troops. + +The game most remarkable point is the incredible liberty given to the player +and therefore the great strategic side that derives. It is indeed up to the +player to decide how to behave towards the one who recruited him, and the +enemies of turn. + +Basically every action leads to a reaction, so it is strongly recommended to +keep a good and consistent behavior to achieve confidence from Corporations, +and avoid being excluded by them. + +WWW: http://mars.sourceforge.net/ diff --git a/games/netpanzer/Makefile b/games/netpanzer/Makefile new file mode 100644 index 000000000000..7a0bf9b1a855 --- /dev/null +++ b/games/netpanzer/Makefile @@ -0,0 +1,53 @@ +# $FreeBSD$ + +PORTNAME= netpanzer +PORTVERSION= 0.8.7 +DISTVERSIONSUFFIX= -source +CATEGORIES= games +MASTER_SITES= http://www.netpanzer.info/Download/NetPanzer/Releases/${PORTVERSION}/ + +MAINTAINER= madpilot@FreeBSD.org +COMMENT= Real time, isometric view, tank multiplayer strategy game + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +LDFLAGS+= -lpthreads + +USES= gnome scons:python2 sdl zip +USE_SDL= sdl mixer image +USE_GNOME= libxml2 +MAKE_ARGS+= datadir="${DATADIR}" +NO_WRKSUBDIR= yes + +PLIST_FILES= bin/netpanzer \ + share/applications/netpanzer.desktop \ + share/pixmaps/netpanzer.png \ + share/pixmaps/netpanzer.xpm + +PORTDOCS= * +PORTDATA= * + +OPTIONS_DEFINE= DOCS + +post-configure: + ${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/SConstruct + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/netpanzer ${STAGEDIR}${PREFIX}/bin + ${MKDIR} ${STAGEDIR}${DATADIR} + (cd ${WRKSRC} && ${COPYTREE_SHARE} "cache maps pics powerups scripts sound units wads" \ + ${STAGEDIR}${DATADIR}) + ${INSTALL_DATA} ${WRKSRC}/support/win32/netpanzer.desktop ${STAGEDIR}${PREFIX}/share/applications + ${INSTALL_DATA} ${WRKSRC}/netpanzer.png ${WRKSRC}/support/icon/netpanzer.xpm \ + ${STAGEDIR}${PREFIX}/share/pixmaps + ${MKDIR} ${STAGEDIR}${DOCSDIR} + (cd ${WRKSRC} && ${INSTALL_DATA} COPYING README ${STAGEDIR}${DOCSDIR}) + (cd ${WRKSRC}/docs && ${INSTALL_DATA} code-notes.txt coding.txt old/serverhowto.html \ + ${STAGEDIR}${DOCSDIR}) + +do-fetch-svn: + svn export svn://svn.berlios.de/${PORTNAME}/tags/${PORTNAME}/${PORTVERSION} ${PORTNAME}-${PORTVERSION} + tar cjf ${PORTNAME}-${PORTVERSION}.tar.bz2 ${PORTNAME}-${PORTVERSION} + +.include <bsd.port.mk> diff --git a/games/netpanzer/distinfo b/games/netpanzer/distinfo new file mode 100644 index 000000000000..0b7f77bf3ba1 --- /dev/null +++ b/games/netpanzer/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1516265645 +SHA256 (netpanzer-0.8.7-source.zip) = 90e2b78d43cc32fb3f6af027788162dc9d272941f9630b43fc34f203a55c86a7 +SIZE (netpanzer-0.8.7-source.zip) = 13466285 diff --git a/games/netpanzer/files/patch-SConstruct b/games/netpanzer/files/patch-SConstruct new file mode 100644 index 000000000000..a4bf784e5ad8 --- /dev/null +++ b/games/netpanzer/files/patch-SConstruct @@ -0,0 +1,19 @@ +--- SConstruct.orig 2016-04-09 13:14:00 UTC ++++ SConstruct +@@ -95,7 +95,7 @@ opts.AddVariables( + ('compilerprefix', 'sets the prefix for the cross linux compiler, example: i686-pc-linux-gnu-', ''), + ) + +-env = Environment(ENV = os.environ, options = opts) ++env = Environment(ENV = os.environ, options = opts, CC = os.environ['CC'], CXX = os.environ['CXX']) + Help(opts.GenerateHelpText(env)) + + env.Append( CCFLAGS = [ '-DPACKAGE_VERSION=\\"' + NPVERSION + '\\"' ] ) +@@ -202,6 +202,7 @@ elif thisplatform == 'win32': + else: + networkenv.ParseConfig(env['sdlconfig'] + ' --cflags --libs') + env.ParseConfig(env['sdlconfig'] + ' --cflags --libs') ++ env.Append( _LIBFLAGS = [ '-L%%LOCALBASE%%/lib' ] ) + # note: for some magic reason, now doesn't need to put the full path for + # SDL_mixer when using mingw crosscompilation + env.Append( LIBS = ['SDL_mixer' ] ) diff --git a/games/netpanzer/files/patch-src_Lib_Network_Address.hpp b/games/netpanzer/files/patch-src_Lib_Network_Address.hpp new file mode 100644 index 000000000000..64e303d095ca --- /dev/null +++ b/games/netpanzer/files/patch-src_Lib_Network_Address.hpp @@ -0,0 +1,11 @@ +--- src/Lib/Network/Address.hpp.orig 2016-04-09 13:14:00 UTC ++++ src/Lib/Network/Address.hpp +@@ -62,7 +62,7 @@ class Address (public) + struct sockaddr * getSockaddr() const { return (struct sockaddr *)&ss; }; + socklen_t getSockaddrLen() const + { +-#ifdef __APPLE__ ++#if defined(__APPLE__) || defined(__FreeBSD__) + return sizeof(sockaddr_in); + #else + return ss_len; diff --git a/games/netpanzer/files/patch-src_Lib_Network_SocketBase.cpp b/games/netpanzer/files/patch-src_Lib_Network_SocketBase.cpp new file mode 100644 index 000000000000..e73e49b5f30d --- /dev/null +++ b/games/netpanzer/files/patch-src_Lib_Network_SocketBase.cpp @@ -0,0 +1,11 @@ +--- src/Lib/Network/SocketBase.cpp.orig 2016-04-09 13:14:00 UTC ++++ src/Lib/Network/SocketBase.cpp +@@ -147,7 +147,7 @@ SocketBase::bindSocketTo(const Address& toaddr) throw( + { + if ( state == CONFIGURED ) + { +- int res = bind(sockfd, toaddr.getSockaddr(), toaddr.getSockaddrLen()); ++ int res = ::bind(sockfd, toaddr.getSockaddr(), toaddr.getSockaddrLen()); + if(res == SOCKET_ERROR) { + lastError = GET_NET_ERROR(); + doClose(); diff --git a/games/netpanzer/files/patch-src_Lib_optionmm_command__line.hpp b/games/netpanzer/files/patch-src_Lib_optionmm_command__line.hpp new file mode 100644 index 000000000000..f3fd7b704651 --- /dev/null +++ b/games/netpanzer/files/patch-src_Lib_optionmm_command__line.hpp @@ -0,0 +1,17 @@ +--- src/Lib/optionmm/command_line.hpp.orig 2007-04-16 13:36:42 UTC ++++ src/Lib/optionmm/command_line.hpp +@@ -212,7 +212,13 @@ struct toggle_value<bool> + { + x = !x; + } +-#if defined(__GNUC__) && __GNUC__ >= 2 ++ ++#if defined(__clang__) ++ inline void operator()(std::__bit_reference<std::vector<bool> > x) ++ { ++ x.flip(); ++ } ++#elif defined(__GNUC__) && __GNUC__ >= 2 + inline void operator()(std::_Bit_reference x) + { + x.flip(); diff --git a/games/netpanzer/pkg-descr b/games/netpanzer/pkg-descr new file mode 100644 index 000000000000..397b69683180 --- /dev/null +++ b/games/netpanzer/pkg-descr @@ -0,0 +1,8 @@ +netPanzer is an online multiplayer tactical warfare game designed +for FAST ACTION combat. Gameplay concentrates on the core -- no +resource management is needed. The game is based on quick tactical +action and unit management in real-time. Battles progress quickly +and constantly as destroyed players respawn with a set of new units. +Players can join or leave multiplayer games at any time. + +WWW: http://www.netpanzer.org/ diff --git a/games/pingus/Makefile b/games/pingus/Makefile new file mode 100644 index 000000000000..d9c1f593d9b3 --- /dev/null +++ b/games/pingus/Makefile @@ -0,0 +1,48 @@ +# Created by: Jose Alonso Cardenas Marquez <acm@FreeBSD.org> +# $FreeBSD$ + +PORTNAME= pingus +PORTVERSION= 0.7.6 +PORTREVISION= 22 +CATEGORIES= games +MASTER_SITES= https://mirror.amdmi3.ru/distfiles/ + +MAINTAINER= amdmi3@FreeBSD.org +COMMENT= Free Lemmings-like game + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/COPYING + +BUILD_DEPENDS= ${LOCALBASE}/include/boost/signals2.hpp:devel/boost-libs +LIB_DEPENDS= libpng.so:graphics/png + +USES= compiler:c++11-lib gl iconv scons:python2 sdl tar:bzip2 xorg +USE_GL= gl +USE_SDL= sdl image mixer +LIBS+= ${ICONV_LIB} +MAKE_ARGS= LIBS="${LIBS}" + +PLIST_FILES= bin/${PORTNAME} \ + share/pixmaps/${PORTNAME}.png +PORTDATA= * + +DESKTOP_ENTRIES="Pingus" \ + "" \ + "${PORTNAME}" \ + "${PORTNAME}" \ + "Game;LogicGame;" \ + false + +post-patch: + @${REINPLACE_CMD} -e '/g_path_manager.set_path("data")/ s|data|${DATADIR}|g' \ + ${WRKSRC}/src/pingus/pingus_main.cpp + @${REINPLACE_CMD} -e '/CheckLib.*iconv/ d' ${WRKSRC}/SConscript + +do-install: + (cd ${WRKSRC}/data && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}) + ${INSTALL_PROGRAM} ${WRKSRC}/build/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + ${INSTALL_DATA} ${WRKSRC}/data/images/icons/pingus-icon.png \ + ${STAGEDIR}${PREFIX}/share/pixmaps/${PORTNAME}.png + +.include <bsd.port.mk> diff --git a/games/pingus/distinfo b/games/pingus/distinfo new file mode 100644 index 000000000000..74b7bcfbbd9c --- /dev/null +++ b/games/pingus/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1324763207 +SHA256 (pingus-0.7.6.tar.bz2) = 759c1253075d1e72691bc1e770b24cdd51917041fd1857c1daf85b65a6686460 +SIZE (pingus-0.7.6.tar.bz2) = 12622268 +SHA256 (fef8cf6512fa.patch) = cb4788d014fd4c479d95203c442ffb65a8bdb4223219a3cc5e3ab09f9b3a4894 +SIZE (fef8cf6512fa.patch) = 12316 diff --git a/games/pingus/files/patch-SConscript b/games/pingus/files/patch-SConscript new file mode 100644 index 000000000000..214f4d3ebb2f --- /dev/null +++ b/games/pingus/files/patch-SConscript @@ -0,0 +1,13 @@ +Properly split multiple arguments passed via CXXFLAGS +--- SConscript.orig 2011-12-24 21:46:47 UTC ++++ SConscript +@@ -120,6 +120,9 @@ class Project: + 'CheckSDLLib': CheckSDLLib, + 'CheckIconv': CheckIconv, + }) ++ ++ self.env["CXXFLAGS"] = sum(map (lambda x: x.split(" "), self.env["CXXFLAGS"]), []) ++ + self.fatal_error = "" + self.reports = "" + diff --git a/games/pingus/files/patch-boost-signals2 b/games/pingus/files/patch-boost-signals2 new file mode 100644 index 000000000000..e412ffbb2e73 --- /dev/null +++ b/games/pingus/files/patch-boost-signals2 @@ -0,0 +1,380 @@ +From fef8cf6512fa4aa09e87643c22ef66de9ec7bb41 Mon Sep 17 00:00:00 2001 +From: Ingo Ruhnke <grumbel@gmail.com> +Date: Sat, 26 Jul 2014 20:49:11 +0200 +Subject: [PATCH] Switched to boost::signals2 + +--- + SConscript | 5 ++--- + src/editor/button.hpp | 4 ++-- + src/editor/checkbox.hpp | 4 ++-- + src/editor/combobox.hpp | 4 ++-- + src/editor/file_list.hpp | 4 ++-- + src/editor/inputbox.hpp | 6 +++--- + src/editor/message_box.hpp | 2 +- + src/editor/object_selector.cpp | 4 ++-- + src/editor/viewport.hpp | 4 ++-- + src/pingus/components/check_box.hpp | 4 ++-- + src/pingus/components/choice_box.hpp | 4 ++-- + src/pingus/components/slider_box.hpp | 4 ++-- + src/pingus/config_manager.hpp | 28 ++++++++++++++-------------- + src/pingus/screens/option_menu.hpp | 4 ++-- + 14 files changed, 40 insertions(+), 41 deletions(-) + +diff --git a/SConscript b/SConscript +index 758567f51..c4d25a8a9 100644 +--- SConscript ++++ SConscript +@@ -187,9 +187,8 @@ class Project: + 'src/engine/input/xinput/xinput_device.cpp']) + + def configure_boost(self): +- if not self.conf.CheckLibWithHeader('boost_signals', 'boost/signals.hpp', 'c++'): +- if not self.conf.CheckLibWithHeader('boost_signals-mt', 'boost/signals.hpp', 'c++'): +- self.fatal_error += " * library 'boost_signals' not found\n" ++ if not self.conf.CheckHeader('boost/signals2.hpp', '<>', 'c++'): ++ self.fatal_error += " * library 'boost_signals2' not found\n" + + def configure_png(self): + if self.conf.CheckMyProgram('pkg-config'): +diff --git a/src/editor/button.hpp b/src/editor/button.hpp +index c85d7da9e..d89dfe669 100644 +--- src/editor/button.hpp ++++ src/editor/button.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_EDITOR_BUTTON_HPP + #define HEADER_PINGUS_EDITOR_BUTTON_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "engine/gui/rect_component.hpp" + +@@ -48,7 +48,7 @@ public: + void enable() { enabled = true; } + void disable() { enabled = false; } + +- boost::signal<void()> on_click; ++ boost::signals2::signal<void()> on_click; + + private: + Button (const Button&); +diff --git a/src/editor/checkbox.hpp b/src/editor/checkbox.hpp +index 7c3bc835f..66382d79b 100644 +--- src/editor/checkbox.hpp ++++ src/editor/checkbox.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_EDITOR_CHECKBOX_HPP + #define HEADER_PINGUS_EDITOR_CHECKBOX_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "engine/gui/rect_component.hpp" + +@@ -40,7 +40,7 @@ public: + bool is_checked() const { return checked; } + void on_primary_button_press(int x, int y); + +- boost::signal<void (bool)> on_change; ++ boost::signals2::signal<void (bool)> on_change; + + private: + Checkbox (const Checkbox&); +diff --git a/src/editor/combobox.hpp b/src/editor/combobox.hpp +index 0ca742593..603556bd9 100644 +--- src/editor/combobox.hpp ++++ src/editor/combobox.hpp +@@ -18,7 +18,7 @@ + #ifndef HEADER_PINGUS_EDITOR_COMBOBOX_HPP + #define HEADER_PINGUS_EDITOR_COMBOBOX_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "engine/display/sprite.hpp" + #include "engine/gui/rect_component.hpp" +@@ -88,7 +88,7 @@ public: + + void update_layout() {} + +- boost::signal<void (const ComboItem&)> on_select; ++ boost::signals2::signal<void (const ComboItem&)> on_select; + + private: + Combobox(); +diff --git a/src/editor/file_list.hpp b/src/editor/file_list.hpp +index cc4bba2de..85efe6aa0 100644 +--- src/editor/file_list.hpp ++++ src/editor/file_list.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_EDITOR_FILE_LIST_HPP + #define HEADER_PINGUS_EDITOR_FILE_LIST_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "engine/display/sprite.hpp" + #include "engine/gui/rect_component.hpp" +@@ -61,7 +61,7 @@ public: + bool has_more_next_pages(); + bool has_more_prev_pages(); + +- boost::signal<void (const System::DirectoryEntry&)> on_click; ++ boost::signals2::signal<void (const System::DirectoryEntry&)> on_click; + + private: + int items_per_page(); +diff --git a/src/editor/inputbox.hpp b/src/editor/inputbox.hpp +index cad9663ec..87321dbba 100644 +--- src/editor/inputbox.hpp ++++ src/editor/inputbox.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_EDITOR_INPUTBOX_HPP + #define HEADER_PINGUS_EDITOR_INPUTBOX_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "engine/gui/rect_component.hpp" + +@@ -40,8 +40,8 @@ public: + + void update_layout() {} + +- boost::signal<void (const std::string&)> on_change; +- boost::signal<void (const std::string&)> on_enter; ++ boost::signals2::signal<void (const std::string&)> on_change; ++ boost::signals2::signal<void (const std::string&)> on_enter; + + private: + Inputbox (const Inputbox&); +diff --git a/src/editor/message_box.hpp b/src/editor/message_box.hpp +index 385387a61..d885767cf 100644 +--- src/editor/message_box.hpp ++++ src/editor/message_box.hpp +@@ -45,7 +45,7 @@ public: + void on_cancel_button(); + + public: +- boost::signal<void()> on_ok; ++ boost::signals2::signal<void()> on_ok; + + private: + MessageBox(const MessageBox&); +diff --git a/src/editor/object_selector.cpp b/src/editor/object_selector.cpp +index 28e306826..f3a36b5e8 100644 +--- src/editor/object_selector.cpp ++++ src/editor/object_selector.cpp +@@ -16,7 +16,7 @@ + + #include "editor/object_selector.hpp" + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "editor/generic_level_obj.hpp" + #include "editor/gui_style.hpp" +@@ -47,7 +47,7 @@ private: + std::string tooltip; + + public: +- boost::signal<void()> on_click; ++ boost::signals2::signal<void()> on_click; + + public: + ObjectSelectorButton(ObjectSelectorList* object_list_, +diff --git a/src/editor/viewport.hpp b/src/editor/viewport.hpp +index 1ae9eff7c..18868254d 100644 +--- src/editor/viewport.hpp ++++ src/editor/viewport.hpp +@@ -18,7 +18,7 @@ + #ifndef HEADER_PINGUS_EDITOR_VIEWPORT_HPP + #define HEADER_PINGUS_EDITOR_VIEWPORT_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + #include <set> + + #include "editor/selection.hpp" +@@ -148,7 +148,7 @@ public: + + void clear_selection(); + +- boost::signal<void (const Selection&)> selection_changed; ++ boost::signals2::signal<void (const Selection&)> selection_changed; + private: + Viewport(); + Viewport (const Viewport&); +diff --git a/src/pingus/components/check_box.hpp b/src/pingus/components/check_box.hpp +index 00e23b764..5bef50f6b 100644 +--- src/pingus/components/check_box.hpp ++++ src/pingus/components/check_box.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_PINGUS_COMPONENTS_CHECK_BOX_HPP + #define HEADER_PINGUS_PINGUS_COMPONENTS_CHECK_BOX_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "engine/display/sprite.hpp" + #include "engine/gui/rect_component.hpp" +@@ -39,7 +39,7 @@ public: + + void set_state(bool v, bool send_signal); + +- boost::signal<void (bool)> on_change; ++ boost::signals2::signal<void (bool)> on_change; + + private: + CheckBox (const CheckBox&); +diff --git a/src/pingus/components/choice_box.hpp b/src/pingus/components/choice_box.hpp +index 49d6e1948..ef51b6dd2 100644 +--- src/pingus/components/choice_box.hpp ++++ src/pingus/components/choice_box.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_PINGUS_COMPONENTS_CHOICE_BOX_HPP + #define HEADER_PINGUS_PINGUS_COMPONENTS_CHOICE_BOX_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "engine/gui/rect_component.hpp" + +@@ -36,7 +36,7 @@ public: + void add_choice(const std::string& str); + void set_current_choice(int choice); + +- boost::signal<void (std::string)> on_change; ++ boost::signals2::signal<void (std::string)> on_change; + + private: + ChoiceBox (const ChoiceBox&); +diff --git a/src/pingus/components/slider_box.hpp b/src/pingus/components/slider_box.hpp +index ae4d92406..75118eac2 100644 +--- src/pingus/components/slider_box.hpp ++++ src/pingus/components/slider_box.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_PINGUS_COMPONENTS_SLIDER_BOX_HPP + #define HEADER_PINGUS_PINGUS_COMPONENTS_SLIDER_BOX_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "engine/gui/rect_component.hpp" + +@@ -39,7 +39,7 @@ public: + + void set_value(int v); + +- boost::signal<void (int)> on_change; ++ boost::signals2::signal<void (int)> on_change; + + private: + SliderBox (const SliderBox&); +diff --git a/src/pingus/config_manager.hpp b/src/pingus/config_manager.hpp +index b07b83e65..4cf08e046 100644 +--- src/pingus/config_manager.hpp ++++ src/pingus/config_manager.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_PINGUS_CONFIG_MANAGER_HPP + #define HEADER_PINGUS_PINGUS_CONFIG_MANAGER_HPP + +-#include <boost/signal.hpp> ++#include <boost/signals2.hpp> + + #include "math/size.hpp" + #include "pingus/options.hpp" +@@ -39,55 +39,55 @@ public: + + void set_master_volume(int); + int get_master_volume() const; +- boost::signal<void(int)> on_master_volume_change; ++ boost::signals2::signal<void(int)> on_master_volume_change; + + void set_sound_volume(int); + int get_sound_volume() const; +- boost::signal<void(int)> on_sound_volume_change; ++ boost::signals2::signal<void(int)> on_sound_volume_change; + + void set_music_volume(int); + int get_music_volume() const; +- boost::signal<void(int)> on_music_volume_change; ++ boost::signals2::signal<void(int)> on_music_volume_change; + + void set_fullscreen_resolution(const Size& size); + Size get_fullscreen_resolution() const; +- boost::signal<void(Size)> on_fullscreen_resolution_change; ++ boost::signals2::signal<void(Size)> on_fullscreen_resolution_change; + + void set_fullscreen(bool); + bool get_fullscreen() const; +- boost::signal<void(bool)> on_fullscreen_change; ++ boost::signals2::signal<void(bool)> on_fullscreen_change; + + void set_renderer(FramebufferType type); + FramebufferType get_renderer() const; +- boost::signal<void(FramebufferType)> on_renderer_change; ++ boost::signals2::signal<void(FramebufferType)> on_renderer_change; + + void set_resizable(bool); + bool get_resizable() const; +- boost::signal<void(bool)> on_resizable_change; ++ boost::signals2::signal<void(bool)> on_resizable_change; + + void set_mouse_grab(bool); + bool get_mouse_grab() const; +- boost::signal<void(bool)> on_mouse_grab_change; ++ boost::signals2::signal<void(bool)> on_mouse_grab_change; + + void set_print_fps(bool); + bool get_print_fps() const; +- boost::signal<void(bool)> on_print_fps_change; ++ boost::signals2::signal<void(bool)> on_print_fps_change; + + void set_language(const tinygettext::Language&); + tinygettext::Language get_language() const; +- boost::signal<void(const tinygettext::Language&)> on_language_change; ++ boost::signals2::signal<void(const tinygettext::Language&)> on_language_change; + + void set_software_cursor(bool); + bool get_software_cursor() const; +- boost::signal<void(bool)> on_software_cursor_change; ++ boost::signals2::signal<void(bool)> on_software_cursor_change; + + void set_auto_scrolling(bool); + bool get_auto_scrolling() const; +- boost::signal<void(bool)> on_auto_scrolling_change; ++ boost::signals2::signal<void(bool)> on_auto_scrolling_change; + + void set_drag_drop_scrolling(bool); + bool get_drag_drop_scrolling() const; +- boost::signal<void(bool)> on_drag_drop_scrolling_change; ++ boost::signals2::signal<void(bool)> on_drag_drop_scrolling_change; + + private: + ConfigManager (const ConfigManager&); +diff --git a/src/pingus/screens/option_menu.hpp b/src/pingus/screens/option_menu.hpp +index 60b1578d2..154ef0f69 100644 +--- src/pingus/screens/option_menu.hpp ++++ src/pingus/screens/option_menu.hpp +@@ -17,7 +17,7 @@ + #ifndef HEADER_PINGUS_PINGUS_SCREENS_OPTION_MENU_HPP + #define HEADER_PINGUS_PINGUS_SCREENS_OPTION_MENU_HPP + +-#include <boost/signals.hpp> ++#include <boost/signals2.hpp> + #include <map> + #include <vector> + +@@ -66,7 +66,7 @@ private: + //Label* defaults_label; + //CheckBox* defaults_box; + +- typedef std::vector<boost::signals::connection> Connections; ++ typedef std::vector<boost::signals2::connection> Connections; + Connections connections; + + tinygettext::Language m_language; +-- +2.18.1 + diff --git a/games/pingus/files/patch-src-lisp-getters.hpp b/games/pingus/files/patch-src-lisp-getters.hpp new file mode 100644 index 000000000000..f600918f5631 --- /dev/null +++ b/games/pingus/files/patch-src-lisp-getters.hpp @@ -0,0 +1,11 @@ +--- src/lisp/getters.hpp.orig 2011-12-24 21:46:47 UTC ++++ src/lisp/getters.hpp +@@ -30,7 +30,7 @@ static inline bool property_get(const Li + if(lisp->get_list_size() != 2) + return false; + +- const Lisp* el = lisp->get_list_elem(1); ++ const Lisp* el = lisp->get_list_elem(1).get(); + return get(el, val); + } + diff --git a/games/pingus/files/patch-src__pingus__pingus_main.cpp b/games/pingus/files/patch-src__pingus__pingus_main.cpp new file mode 100644 index 000000000000..397af2466e38 --- /dev/null +++ b/games/pingus/files/patch-src__pingus__pingus_main.cpp @@ -0,0 +1,11 @@ +--- src/pingus/pingus_main.cpp.orig 2011-12-24 21:46:47 UTC ++++ src/pingus/pingus_main.cpp +@@ -465,7 +465,7 @@ PingusMain::init_path_finder() + void + PingusMain::print_greeting_message() + { +- std::string greeting = "Welcome to Pingus "VERSION; ++ std::string greeting = "Welcome to Pingus " VERSION; + greeting += "!"; + std::cout << greeting << std::endl; + for (unsigned int i = 0; i < greeting.length(); ++i) diff --git a/games/pingus/files/patch-src__pingus__screens__pingus_menu.cpp b/games/pingus/files/patch-src__pingus__screens__pingus_menu.cpp new file mode 100644 index 000000000000..2474af27c201 --- /dev/null +++ b/games/pingus/files/patch-src__pingus__screens__pingus_menu.cpp @@ -0,0 +1,11 @@ +--- src/pingus/screens/pingus_menu.cpp.orig 2011-12-24 21:46:47 UTC ++++ src/pingus/screens/pingus_menu.cpp +@@ -153,7 +153,7 @@ PingusMenu::draw_background(DrawingConte + gc.get_height()/2 - 280)); + + gc.print_left(Fonts::pingus_small, Vector2i(gc.get_width()/2 - 400 + 25, gc.get_height()-140), +- "Pingus "VERSION" - Copyright (C) 1998-2011 Ingo Ruhnke <grumbel@gmail.com>\n" ++ "Pingus " VERSION " - Copyright (C) 1998-2011 Ingo Ruhnke <grumbel@gmail.com>\n" + "See the file AUTHORS for a complete list of contributors.\n" + "Pingus comes with ABSOLUTELY NO WARRANTY. This is free software, and you are\n" + "welcome to redistribute it under certain conditions; see the file COPYING for details.\n"); diff --git a/games/pingus/files/patch-src__util__file_reader.hpp b/games/pingus/files/patch-src__util__file_reader.hpp new file mode 100644 index 000000000000..c56f58917c3a --- /dev/null +++ b/games/pingus/files/patch-src__util__file_reader.hpp @@ -0,0 +1,10 @@ +--- src/util/file_reader.hpp.orig 2011-12-24 21:46:47 UTC ++++ src/util/file_reader.hpp +@@ -19,6 +19,7 @@ + + #include <memory> + #include <vector> ++#include <string> + + class Size; + class Color; diff --git a/games/pingus/files/patch-src_pingus_screens_demo__session.cpp b/games/pingus/files/patch-src_pingus_screens_demo__session.cpp new file mode 100644 index 000000000000..8146968392f2 --- /dev/null +++ b/games/pingus/files/patch-src_pingus_screens_demo__session.cpp @@ -0,0 +1,10 @@ +--- src/pingus/screens/demo_session.cpp.orig 2018-11-02 16:05:42 UTC ++++ src/pingus/screens/demo_session.cpp +@@ -17,6 +17,7 @@ + #include "pingus/screens/demo_session.hpp" + + #include <algorithm> ++#include <functional> + #include <iostream> + + #include "engine/gui/gui_manager.hpp" diff --git a/games/pingus/pkg-descr b/games/pingus/pkg-descr new file mode 100644 index 000000000000..c8c426180f43 --- /dev/null +++ b/games/pingus/pkg-descr @@ -0,0 +1,5 @@ +Pingus is a free Lemmings-like game covered under the GNU GPL. It features +currently 22 playable levels and runs under a wide variety of operating systems +(FreeBSD, Linux, Windows, etc.) + +WWW: https://pingus.seul.org/ diff --git a/games/renpy/Makefile b/games/renpy/Makefile new file mode 100644 index 000000000000..102a70a2429b --- /dev/null +++ b/games/renpy/Makefile @@ -0,0 +1,109 @@ +# $FreeBSD$ + +PORTNAME= renpy +PORTVERSION= 7.3.5 +DISTVERSIONSUFFIX=-sdk +CATEGORIES= games devel +MASTER_SITES= https://www.renpy.org/dl/${PORTVERSION}/ + +MAINTAINER= jbeich@FreeBSD.org +COMMENT= Framework for developing visual-novel type games + +LICENSE= APACHE20 BSD3CLAUSE DejaVu LGPL21+ MIT OFL11 ZLIB +LICENSE_COMB= multi +LICENSE_NAME_DejaVu= Bitstream Vera and Arev fonts license +LICENSE_FILE_DejaVu= ${WRKSRC}/renpy/common/DejaVuSans.txt +LICENSE_PERMS_DejaVu= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + +# Extend expiration if lang/python27 is also extended +# https://github.com/renpy/renpy/issues/2003 +DEPRECATED= Uses deprecated version of python +EXPIRATION_DATE= 2020-12-31 + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}game_sdl2>0:devel/py-game_sdl2@${PY_FLAVOR} +LIB_DEPENDS= libfribidi.so:converters/fribidi \ + libpng.so:graphics/png \ + libavcodec.so:multimedia/ffmpeg \ + libfreetype.so:print/freetype2 +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}game_sdl2>=${PORTVERSION}:devel/py-game_sdl2@${PY_FLAVOR} + +# Upstream tends to reroll distfiles before moving under /release/ +PORTSCOUT= site:http://www.renpy.org/dl/release/ + +USES= gl python:2.7 sdl shebangfix tar:bz2 +USE_GL= glew +USE_PYTHON= autoplist distutils cython +USE_SDL= sdl2 +EXCLUDE= gen 'module/*.py[co]' 'renpy/*.py[co]' +EXTRACT_AFTER_ARGS=${EXCLUDE:S,^,--exclude ,} +SHEBANG_FILES= renpy.py launcher/game/tkaskdir.py +TARGET_ORDER_OVERRIDE=610:fix-shebang +BUILD_WRKSRC= ${WRKSRC}/module +INSTALL_WRKSRC= ${BUILD_WRKSRC} +MAKE_ENV+= RENPY_DEPS_INSTALL="${LOCALBASE}" \ + RENPY_CYTHON=cython-${PYTHON_VER} +PORTDATA= gui launcher renpy renpy.py +PORTDOCS= * +PLIST_FILES= bin/${PORTNAME} + +DESKTOP_ENTRIES="Ren'Py" \ + "" \ + "${DATADIR}/launcher/game/images/logo32.png" \ + "${PORTNAME} %f" \ + "Development;Game;AdventureGame;" \ + "" + +OPTIONS_DEFAULT=TKINTER DIST +OPTIONS_DEFINE= DOCS DIST EXAMPLES TKINTER + +DIST_DESC= Distribution runtimes for Windows, OS X, Linux +DIST_VARS= LICENSE+="ART20 PSFL" \ + PORTDATA+="lib renpy.app renpy.exe renpy.sh" +EXAMPLES_VARS= PORTDATA+="the_question tutorial" +TKINTER_DESC= Install Tkinter to allow choosing Projects Directory +TKINTER_RUN_DEPENDS=${PYTHON_PKGNAMEPREFIX}tkinter>0:x11-toolkits/py-tkinter@${PY_FLAVOR} + +. for lic in FREETYPE LIBJPEG LIBPNG MSVCR90 +DIST_VARS+= LICENSE+=${lic} +LICENSE_NAME_${lic}= ${lic} license +LICENSE_FILE_${lic}= ${WRKSRC}/LICENSE.txt +LICENSE_PERMS_${lic}= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept +. endfor + +post-extract: + @${FIND} ${WRKSRC}/lib ${WRKSRC}/renpy.app -type d -empty -delete + +post-patch: + @${REINPLACE_CMD} -e 's,/usr/bin/python,${PYTHON_CMD},' \ + ${WRKSRC}/launcher/game/choose_directory.rpy +# Avoid having to add -I/usr/include -L/usr/lib + @${REINPLACE_CMD} '/library("z")/d' ${BUILD_WRKSRC}/${PYSETUP} + +post-build: + @${PYTHON_CMD} -m compileall -d ${DATADIR} ${WRKSRC} + @${PYTHON_CMD} -O -m compileall -d ${DATADIR} ${WRKSRC} + +add-plist-post: add-empty-dirs +add-empty-dirs: +# Keep images directory in gui and templates, see renpy@d81ea29 + ${FIND} ${WRKSRC} -type d -empty \ + ! \( -name "saves" -or -name "pysdlsound" \) | \ + ${SED} 's,^${WRKSRC},@dir ${DATADIR},' >>${TMPPLIST} + +post-install: + ${FIND} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} -name \*.so \ + -exec ${STRIP_CMD} {} + + ${LN} -fs ../${DATADIR_REL}/renpy.py \ + ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + (cd ${WRKSRC} && ${COPYTREE_SHARE} \ + "${PORTDATA}" ${STAGEDIR}${DATADIR} \ + "! -name *.orig ! -name *.bak \ + ! -name saves ! -name log.txt") + ${CHMOD} +x ${STAGEDIR}${DATADIR}/renpy.py + +post-install-DOCS-on: + (cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \ + . ${STAGEDIR}${DOCSDIR} \ + "! -name *.orig ! -name *.bak") + +.include <bsd.port.mk> diff --git a/games/renpy/distinfo b/games/renpy/distinfo new file mode 100644 index 000000000000..6d61d83c9702 --- /dev/null +++ b/games/renpy/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1571355531 +SHA256 (renpy-7.3.5-sdk.tar.bz2) = dbbd087f2578d70dc1bc3912259f5794d563e3404068c96c15d7127853dec40d +SIZE (renpy-7.3.5-sdk.tar.bz2) = 95049773 diff --git a/games/renpy/files/patch-issue869 b/games/renpy/files/patch-issue869 new file mode 100644 index 000000000000..4a4d0c4b7c53 --- /dev/null +++ b/games/renpy/files/patch-issue869 @@ -0,0 +1,11 @@ +Restore shebang before ecd36ec. + +--- renpy.py.orig 2016-01-27 03:31:10 UTC ++++ renpy.py +@@ -1,4 +1,5 @@ +-#!/usr/bin/env python #@PydevCodeAnalysisIgnore ++#!/usr/bin/env python ++#@PydevCodeAnalysisIgnore + + # This file is part of Ren'Py. The license below applies to Ren'Py only. + # Games and other projects that use Ren'Py may use a different license. diff --git a/games/renpy/files/patch-system-fribidi b/games/renpy/files/patch-system-fribidi new file mode 100644 index 000000000000..0232db728876 --- /dev/null +++ b/games/renpy/files/patch-system-fribidi @@ -0,0 +1,57 @@ +Partially revert 4a9efc0cab7d as module/fribidi-src/ is missing from source archive. + +gen/_renpybidi.c:564:10: fatal error: 'fribidi.h' file not found +#include "fribidi.h" + ^ + +--- module/renpybidicore.c.orig 2018-07-11 04:11:19 UTC ++++ module/renpybidicore.c +@@ -1,5 +1,5 @@ + #include <Python.h> +-#include <fribidi-src/lib/fribidi.h> ++#include <fribidi.h> + #include <stdlib.h> + + #ifndef alloca +--- module/setup.py.orig 2018-07-11 04:29:32 UTC ++++ module/setup.py +@@ -92,6 +92,7 @@ has_avresample = library("avresample", optional=True) + has_swresample = library("swresample", optional=True) + has_swscale = library("swscale", optional=True) + library("freetype") ++has_fribidi = include("fribidi.h", directory="fribidi", optional=True) and library("fribidi", optional=True) + library("z") + has_libglew = library("GLEW", optional=True) + has_libglew32 = library("glew32", optional=True) +@@ -105,6 +106,16 @@ else: + sdl = [ 'SDL2' ] + png = 'png' + ++ ++if has_fribidi and (not android) and (not ios): ++ try: ++ # Some versions of fribidi require glib, and it doesn't hurt to include it in ++ # our path. ++ glib_flags = subprocess.check_output(["pkg-config", "--cflags", "glib-2.0"]) ++ setuplib.extra_compile_args.extend(glib_flags.split()) ++ except: ++ pass ++ + steam_sdk = os.environ.get("RENPY_STEAM_SDK", None) + steam_platform = os.environ.get("RENPY_STEAM_PLATFORM", "") + +@@ -134,11 +145,12 @@ renpybidicore.c + """.split() + cython( + "_renpybidi", +- FRIBIDI_SOURCES, +- includes=[ ++ has_fribidi and [ i for i in FRIBIDI_SOURCES if 'fribidi-src' not in i ] or FRIBIDI_SOURCES, ++ includes=has_fribidi and [] or [ + BASE + "/fribidi-src/", + BASE + "/fribidi-src/lib/", + ], ++ libs=has_fribidi and ['fribidi'] or [], + define_macros=[ + ("FRIBIDI_ENTRY", ""), + ("HAVE_CONFIG_H", "1"), diff --git a/games/renpy/pkg-descr b/games/renpy/pkg-descr new file mode 100644 index 000000000000..cc760ec52918 --- /dev/null +++ b/games/renpy/pkg-descr @@ -0,0 +1,9 @@ +Ren'Py is a visual novel engine – used by thousands of creators from +around the world – that helps you use words, images, and sounds to +tell interactive stories that run on computers and mobile +devices. These can be both visual novels and life simulation +games. The easy to learn script language allows anyone to efficiently +write large visual novels, while its Python scripting is enough for +complex simulation games. + +WWW: https://www.renpy.org/ |