summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /games-action/teeworlds
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'games-action/teeworlds')
-rw-r--r--games-action/teeworlds/Manifest1
-rw-r--r--games-action/teeworlds/files/0.6.3/01-use-system-wavpack.patch101
-rw-r--r--games-action/teeworlds/files/0.6.3/02-fixed-wavpack-sound-loading.patch109
-rw-r--r--games-action/teeworlds/files/0.6.3/03-use-system-pnglite.patch160
-rw-r--r--games-action/teeworlds/files/0.6.3/04-dedicated.patch15
-rw-r--r--games-action/teeworlds/files/0.6.3/05-cc-cflags.patch18
-rw-r--r--games-action/teeworlds/files/teeworlds-init.d40
-rw-r--r--games-action/teeworlds/files/teeworlds.xpm66
-rw-r--r--games-action/teeworlds/files/teeworlds_srv.cfg7
-rw-r--r--games-action/teeworlds/metadata.xml6
-rw-r--r--games-action/teeworlds/teeworlds-0.6.3.ebuild118
11 files changed, 641 insertions, 0 deletions
diff --git a/games-action/teeworlds/Manifest b/games-action/teeworlds/Manifest
new file mode 100644
index 000000000000..9829eb713495
--- /dev/null
+++ b/games-action/teeworlds/Manifest
@@ -0,0 +1 @@
+DIST teeworlds-0.6.3-src.tar.gz 13101446 SHA256 490ee7c372898761c609af8d7b0c6bd55942c6c6fcd7f361eefa00abfc70077b SHA512 0c7ef6ca59e4b49f9e208f39e8b0edd76965d67848008af3a223cb7615a6c62ff433d3113f733ae4dafc364baf522d2f56255e058d26d9f5c48071cdde41526d WHIRLPOOL dc501bb9a2f4c3971ad063102a55cc70633857e3052f3a349d032dd8e92ea05f6138c62e9775b743b38dc3a56366d9920850b5a7ffbf6913ed73536a5cacdff4
diff --git a/games-action/teeworlds/files/0.6.3/01-use-system-wavpack.patch b/games-action/teeworlds/files/0.6.3/01-use-system-wavpack.patch
new file mode 100644
index 000000000000..4a11a866511d
--- /dev/null
+++ b/games-action/teeworlds/files/0.6.3/01-use-system-wavpack.patch
@@ -0,0 +1,101 @@
+commit 7202b142891ee10771af9f1f3063664d75a38bbc
+Author: hasufell <hasufell@gentoo.org>
+Date: Thu Sep 5 12:28:30 2013 +0200
+
+ Use system wavpack. Based on patch from Gentoo Bugzilla
+
+ From: Azamat H. Hackimov <azamat.hackimov@gmail.com>
+
+ https://bugs.gentoo.org/show_bug.cgi?id=363395
+
+diff --git a/bam.lua b/bam.lua
+index 11ac7b9..35c1d8d 100644
+--- a/bam.lua
++++ b/bam.lua
+@@ -11,6 +11,7 @@ config:Add(OptTestCompileC("stackprotector", "int main(){return 0;}", "-fstack-p
+ config:Add(OptTestCompileC("minmacosxsdk", "int main(){return 0;}", "-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk"))
+ config:Add(OptTestCompileC("macosxppc", "int main(){return 0;}", "-arch ppc"))
+ config:Add(OptLibrary("zlib", "zlib.h", false))
++config:Add(OptLibrary("wavpack", "wavpack/wavpack.h", false))
+ config:Add(SDL.OptFind("sdl", true))
+ config:Add(FreeType.OptFind("freetype", true))
+ config:Finalize("config.lua")
+@@ -187,7 +188,7 @@ function build(settings)
+ end
+
+ -- compile zlib if needed
+- if config.zlib.value == 1 then
++ if config.zlib.value == true then
+ settings.link.libs:Add("z")
+ if config.zlib.include_path then
+ settings.cc.includes:Add(config.zlib.include_path)
+@@ -198,8 +199,18 @@ function build(settings)
+ settings.cc.includes:Add("src/engine/external/zlib")
+ end
+
++ if config.wavpack.value == true then
++ settings.link.libs:Add("wavpack")
++ if config.wavpack.include_path then
++ settings.cc.includes:Add(config.wavpack.include_path)
++ end
++ wavpack = {}
++ else
++ wavpack = Compile(settings, Collect("src/engine/external/wavpack/*.c"))
++ settings.cc.includes:Add("src/engine/external/") --The header is wavpack/wavpack.h so include the external folder
++ end
++
+ -- build the small libraries
+- wavpack = Compile(settings, Collect("src/engine/external/wavpack/*.c"))
+ pnglite = Compile(settings, Collect("src/engine/external/pnglite/*.c"))
+
+ -- build game components
+diff --git a/src/engine/client/sound.cpp b/src/engine/client/sound.cpp
+index 343fa2e..e32cac9 100644
+--- a/src/engine/client/sound.cpp
++++ b/src/engine/client/sound.cpp
+@@ -13,7 +13,7 @@
+ #include "sound.h"
+
+ extern "C" { // wavpack
+- #include <engine/external/wavpack/wavpack.h>
++ #include <wavpack/wavpack.h>
+ }
+ #include <math.h>
+
+@@ -351,19 +351,25 @@ int CSound::LoadWV(const char *pFilename)
+ if(!m_pStorage)
+ return -1;
+
++ #ifndef WAVPACK_H
+ ms_File = m_pStorage->OpenFile(pFilename, IOFLAG_READ, IStorage::TYPE_ALL);
+ if(!ms_File)
+ {
+ dbg_msg("sound/wv", "failed to open file. filename='%s'", pFilename);
+ return -1;
+ }
++ #endif
+
+ SampleID = AllocID();
+ if(SampleID < 0)
+ return -1;
+ pSample = &m_aSamples[SampleID];
+
++ #ifndef WAVPACK_H
+ pContext = WavpackOpenFileInput(ReadData, aError);
++ #else
++ pContext = WavpackOpenFileInput(pFilename, aError, 0, 0);
++ #endif
+ if (pContext)
+ {
+ int m_aSamples = WavpackGetNumSamples(pContext);
+@@ -419,8 +425,10 @@ int CSound::LoadWV(const char *pFilename)
+ dbg_msg("sound/wv", "failed to open %s: %s", pFilename, aError);
+ }
+
++ #ifndef WAVPACK_H
+ io_close(ms_File);
+ ms_File = NULL;
++ #endif
+
+ if(g_Config.m_Debug)
+ dbg_msg("sound/wv", "loaded %s", pFilename);
diff --git a/games-action/teeworlds/files/0.6.3/02-fixed-wavpack-sound-loading.patch b/games-action/teeworlds/files/0.6.3/02-fixed-wavpack-sound-loading.patch
new file mode 100644
index 000000000000..e207a4a354bf
--- /dev/null
+++ b/games-action/teeworlds/files/0.6.3/02-fixed-wavpack-sound-loading.patch
@@ -0,0 +1,109 @@
+commit b96981f5f23b4269108afb465f29a23abbd32ae2
+Author: hasufell <hasufell@gentoo.org>
+Date: Thu Sep 5 12:31:19 2013 +0200
+
+ Fixing wavpack sound loading. Based on Gentoo Bugzilla
+
+ From: Azamat H. Hackimov <azamat.hackimov@gmail.com>
+
+ https://bugs.gentoo.org/show_bug.cgi?id=363395
+
+diff --git a/src/engine/client/sound.cpp b/src/engine/client/sound.cpp
+index e32cac9..2a4c653 100644
+--- a/src/engine/client/sound.cpp
++++ b/src/engine/client/sound.cpp
+@@ -51,6 +51,55 @@ struct CVoice
+ int m_X, m_Y;
+ } ;
+
++#ifdef WAVPACK_H
++static int32_t ReadBytes(void *pFile, void *pBuffer, int32_t Size)
++{
++ return (int32_t)io_read((IOHANDLE)pFile, pBuffer, Size);
++}
++static uint32_t GetPos(void *pFile)
++{
++ return (uint32_t)io_tell((IOHANDLE)pFile);
++}
++static int SetPosAbs(void *pFile, uint32_t Offset)
++{
++ return io_seek((IOHANDLE)pFile, Offset, IOSEEK_START);
++}
++static int SetPosRel(void *pFile, int32_t Offset, int Mode)
++{
++ switch(Mode)
++ {
++ case SEEK_SET:
++ Mode = IOSEEK_START;
++ break;
++ case SEEK_CUR:
++ Mode = IOSEEK_CUR;
++ break;
++ case SEEK_END:
++ Mode = IOSEEK_END;
++ }
++ return io_seek((IOHANDLE)pFile, Offset, Mode);
++}
++
++//TODO: Fix if 'real' functionality is needed by the wavpack header
++static int PushBackByte(void *pFile, int Char)
++{
++ return io_seek((IOHANDLE)pFile, -1, IOSEEK_CUR);
++}
++static uint32_t GetLength(void *pFile)
++{
++ return (uint32_t)io_length((IOHANDLE)pFile);
++}
++// Essentially assuming this to always be true, should fix if this isn't the case
++static int CanSeek(void *pFile)
++{
++ return pFile != NULL;
++}
++static WavpackStreamReader CWavpackReader = {
++ ReadBytes, GetPos, SetPosAbs, SetPosRel, PushBackByte, GetLength, CanSeek, 0
++};
++#endif
++
++
+ static CSample m_aSamples[NUM_SAMPLES] = { {0} };
+ static CVoice m_aVoices[NUM_VOICES] = { {0} };
+ static CChannel m_aChannels[NUM_CHANNELS] = { {255, 0} };
+@@ -351,14 +400,12 @@ int CSound::LoadWV(const char *pFilename)
+ if(!m_pStorage)
+ return -1;
+
+- #ifndef WAVPACK_H
+ ms_File = m_pStorage->OpenFile(pFilename, IOFLAG_READ, IStorage::TYPE_ALL);
+ if(!ms_File)
+ {
+ dbg_msg("sound/wv", "failed to open file. filename='%s'", pFilename);
+ return -1;
+ }
+- #endif
+
+ SampleID = AllocID();
+ if(SampleID < 0)
+@@ -368,7 +415,7 @@ int CSound::LoadWV(const char *pFilename)
+ #ifndef WAVPACK_H
+ pContext = WavpackOpenFileInput(ReadData, aError);
+ #else
+- pContext = WavpackOpenFileInput(pFilename, aError, 0, 0);
++ pContext = WavpackOpenFileInputEx(&CWavpackReader, ms_File, 0, aError, 0, 0);
+ #endif
+ if (pContext)
+ {
+@@ -422,13 +469,11 @@ int CSound::LoadWV(const char *pFilename)
+ }
+ else
+ {
+- dbg_msg("sound/wv", "failed to open %s: %s", pFilename, aError);
++ dbg_msg("sound/wv", "failed to open '%s': %s", pFilename, aError);
+ }
+
+- #ifndef WAVPACK_H
+ io_close(ms_File);
+ ms_File = NULL;
+- #endif
+
+ if(g_Config.m_Debug)
+ dbg_msg("sound/wv", "loaded %s", pFilename);
diff --git a/games-action/teeworlds/files/0.6.3/03-use-system-pnglite.patch b/games-action/teeworlds/files/0.6.3/03-use-system-pnglite.patch
new file mode 100644
index 000000000000..81c3d915316b
--- /dev/null
+++ b/games-action/teeworlds/files/0.6.3/03-use-system-pnglite.patch
@@ -0,0 +1,160 @@
+commit 291a375000ac8d9cd5548a863ea6b49c46cfb1bb
+Author: hasufell <hasufell@gentoo.org>
+Date: Thu Sep 5 12:36:53 2013 +0200
+
+ Use system pnglite. Based on Gentoo Bugzilla
+
+ From: Azamat H. Hackimov <azamat.hackimov@gmail.com>
+
+ https://bugs.gentoo.org/show_bug.cgi?id=363395
+
+diff --git a/bam.lua b/bam.lua
+index 35c1d8d..7902a2c 100644
+--- a/bam.lua
++++ b/bam.lua
+@@ -11,6 +11,7 @@ config:Add(OptTestCompileC("stackprotector", "int main(){return 0;}", "-fstack-p
+ config:Add(OptTestCompileC("minmacosxsdk", "int main(){return 0;}", "-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk"))
+ config:Add(OptTestCompileC("macosxppc", "int main(){return 0;}", "-arch ppc"))
+ config:Add(OptLibrary("zlib", "zlib.h", false))
++config:Add(OptLibrary("pnglite", "pnglite.h", false))
+ config:Add(OptLibrary("wavpack", "wavpack/wavpack.h", false))
+ config:Add(SDL.OptFind("sdl", true))
+ config:Add(FreeType.OptFind("freetype", true))
+@@ -199,26 +200,34 @@ function build(settings)
+ settings.cc.includes:Add("src/engine/external/zlib")
+ end
+
++ -- build game components
++ engine_settings = settings:Copy()
++ server_settings = engine_settings:Copy()
++ client_settings = engine_settings:Copy()
++ launcher_settings = engine_settings:Copy()
++
++ if config.pnglite.value == true then
++ client_settings.link.libs:Add("pnglite")
++ if config.pnglite.include_path then
++ client_settings.cc.includes:Add(config.pnglite.include_path)
++ end
++ pnglite = {}
++ else
++ pnglite = Compile(settings, Collect("src/engine/external/pnglite/*.c"))
++ client_settings.cc.includes:Add("src/engine/external/pnglite")
++ end
++
+ if config.wavpack.value == true then
+- settings.link.libs:Add("wavpack")
++ client_settings.link.libs:Add("wavpack")
+ if config.wavpack.include_path then
+- settings.cc.includes:Add(config.wavpack.include_path)
++ client_settings.cc.includes:Add(config.wavpack.include_path)
+ end
+ wavpack = {}
+ else
+ wavpack = Compile(settings, Collect("src/engine/external/wavpack/*.c"))
+- settings.cc.includes:Add("src/engine/external/") --The header is wavpack/wavpack.h so include the external folder
++ client_settings.cc.includes:Add("src/engine/external/") --The header is wavpack/wavpack.h so include the external folder
+ end
+
+- -- build the small libraries
+- pnglite = Compile(settings, Collect("src/engine/external/pnglite/*.c"))
+-
+- -- build game components
+- engine_settings = settings:Copy()
+- server_settings = engine_settings:Copy()
+- client_settings = engine_settings:Copy()
+- launcher_settings = engine_settings:Copy()
+-
+ if family == "unix" then
+ if platform == "macosx" then
+ client_settings.link.frameworks:Add("OpenGL")
+diff --git a/src/engine/client/graphics.cpp b/src/engine/client/graphics.cpp
+index 2e8a855..97e4fd7 100644
+--- a/src/engine/client/graphics.cpp
++++ b/src/engine/client/graphics.cpp
+@@ -9,7 +9,7 @@
+ #include "SDL_opengl.h"
+
+ #include <base/system.h>
+-#include <engine/external/pnglite/pnglite.h>
++#include <pnglite.h>
+
+ #include <engine/shared/config.h>
+ #include <engine/graphics.h>
+diff --git a/src/engine/client/graphics_threaded.cpp b/src/engine/client/graphics_threaded.cpp
+index e34b725..60246d1 100644
+--- a/src/engine/client/graphics_threaded.cpp
++++ b/src/engine/client/graphics_threaded.cpp
+@@ -6,7 +6,7 @@
+ #include <base/tl/threading.h>
+
+ #include <base/system.h>
+-#include <engine/external/pnglite/pnglite.h>
++#include <pnglite.h>
+
+ #include <engine/shared/config.h>
+ #include <engine/graphics.h>
+diff --git a/src/tools/dilate.cpp b/src/tools/dilate.cpp
+index 55094a5..42a5b83 100644
+--- a/src/tools/dilate.cpp
++++ b/src/tools/dilate.cpp
+@@ -2,7 +2,7 @@
+ /* If you are missing that file, acquire a complete release at teeworlds.com. */
+ #include <base/system.h>
+ #include <base/math.h>
+-#include <engine/external/pnglite/pnglite.h>
++#include <pnglite.h>
+
+ typedef struct
+ {
+diff --git a/src/tools/tileset_borderadd.cpp b/src/tools/tileset_borderadd.cpp
+index 25e2fa5..88f760a 100644
+--- a/src/tools/tileset_borderadd.cpp
++++ b/src/tools/tileset_borderadd.cpp
+@@ -2,7 +2,7 @@
+ /* If you are missing that file, acquire a complete release at teeworlds.com. */
+ #include <base/math.h>
+ #include <base/system.h>
+-#include <engine/external/pnglite/pnglite.h>
++#include <pnglite.h>
+
+ typedef struct
+ {
+diff --git a/src/tools/tileset_borderfix.cpp b/src/tools/tileset_borderfix.cpp
+index 0facb9a..ab36292 100644
+--- a/src/tools/tileset_borderfix.cpp
++++ b/src/tools/tileset_borderfix.cpp
+@@ -1,7 +1,7 @@
+ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
+ /* If you are missing that file, acquire a complete release at teeworlds.com. */
+ #include <base/system.h>
+-#include <engine/external/pnglite/pnglite.h>
++#include <pnglite.h>
+
+ typedef struct
+ {
+diff --git a/src/tools/tileset_borderrem.cpp b/src/tools/tileset_borderrem.cpp
+index d604ecb..8673e41 100644
+--- a/src/tools/tileset_borderrem.cpp
++++ b/src/tools/tileset_borderrem.cpp
+@@ -2,7 +2,7 @@
+ /* If you are missing that file, acquire a complete release at teeworlds.com. */
+ #include <base/math.h>
+ #include <base/system.h>
+-#include <engine/external/pnglite/pnglite.h>
++#include <pnglite.h>
+
+ typedef struct
+ {
+diff --git a/src/tools/tileset_borderset.cpp b/src/tools/tileset_borderset.cpp
+index 8b3e299..c762ee2 100644
+--- a/src/tools/tileset_borderset.cpp
++++ b/src/tools/tileset_borderset.cpp
+@@ -2,7 +2,7 @@
+ /* If you are missing that file, acquire a complete release at teeworlds.com. */
+ #include <base/math.h>
+ #include <base/system.h>
+-#include <engine/external/pnglite/pnglite.h>
++#include <pnglite.h>
+
+ typedef struct
+ {
diff --git a/games-action/teeworlds/files/0.6.3/04-dedicated.patch b/games-action/teeworlds/files/0.6.3/04-dedicated.patch
new file mode 100644
index 000000000000..fc61b71283b6
--- /dev/null
+++ b/games-action/teeworlds/files/0.6.3/04-dedicated.patch
@@ -0,0 +1,15 @@
+From: Julian Ospald <hasufell@gentoo.org>
+Date: Sun Sep 8 11:05:26 UTC 2013
+Subject: fix DATADIR detection for minimal setups
+
+--- a/src/engine/shared/storage.cpp
++++ b/src/engine/shared/storage.cpp
+@@ -208,7 +208,7 @@
+ for (i = 0; i < DirsCount; i++)
+ {
+ char aBuf[128];
+- str_format(aBuf, sizeof(aBuf), "%s/mapres", aDirs[i]);
++ str_format(aBuf, sizeof(aBuf), "%s/maps", aDirs[i]);
+ if(fs_is_dir(aBuf))
+ {
+ str_copy(m_aDatadir, aDirs[i], sizeof(m_aDatadir));
diff --git a/games-action/teeworlds/files/0.6.3/05-cc-cflags.patch b/games-action/teeworlds/files/0.6.3/05-cc-cflags.patch
new file mode 100644
index 000000000000..dec6b8d306fc
--- /dev/null
+++ b/games-action/teeworlds/files/0.6.3/05-cc-cflags.patch
@@ -0,0 +1,18 @@
+From: Julian Ospald <hasufell@gentoo.org>
+Date: Sun Sep 8 12:25:19 UTC 2013
+Subject: respect our gentoo settings
+
+ this has to be at this place or later
+ otherwise some of our settings would be overwritten
+
+--- a/bam.lua
++++ b/bam.lua
+@@ -168,6 +168,8 @@
+ -- set some platform specific settings
+ settings.cc.includes:Add("src")
+
++ dofile("gentoo.lua") addSettings(settings)
++
+ if family == "unix" then
+ if platform == "macosx" then
+ settings.link.frameworks:Add("Carbon")
diff --git a/games-action/teeworlds/files/teeworlds-init.d b/games-action/teeworlds/files/teeworlds-init.d
new file mode 100644
index 000000000000..7b9fd33bffee
--- /dev/null
+++ b/games-action/teeworlds/files/teeworlds-init.d
@@ -0,0 +1,40 @@
+#!/sbin/runscript
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+PIDFILE=/var/run/teeworlds.pid
+GAME_DIRECTORY=/usr/games/bin
+CONFIG=/etc/teeworlds/teeworlds_srv.cfg
+
+depend() {
+ use dns logger net
+}
+
+checkconfig() {
+ if [ ! -e ${CONFIG} ] ; then
+ eerror "You need an ${CONFIG} config file to run TeeWorlds"
+ return 1
+ fi
+}
+
+start() {
+ ebegin "Starting TeeWorlds"
+ start-stop-daemon --start --background --pidfile "${PIDFILE}" \
+ --make-pidfile -d ${GAME_DIRECTORY} --user games \
+ --exec ${GAME_DIRECTORY}/teeworlds_srv -- -f ${CONFIG}
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading TeeWorlds configs and restarting processes"
+ start-stop-daemon --stop --oknodo --user games \
+ --pidfile "${PIDFILE}" --signal HUP \
+ --exec ${GAME_DIRECTORY}/teeworlds_srv -- -f ${CONFIG}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping TeeWorlds"
+ start-stop-daemon --stop --quiet --pidfile "${PIDFILE}"
+ eend $?
+}
diff --git a/games-action/teeworlds/files/teeworlds.xpm b/games-action/teeworlds/files/teeworlds.xpm
new file mode 100644
index 000000000000..76e30166dd35
--- /dev/null
+++ b/games-action/teeworlds/files/teeworlds.xpm
@@ -0,0 +1,66 @@
+/* XPM */
+static char *teeworlds__[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 12 1",
+" c #000000",
+". c #800000",
+"X c #FF0000",
+"o c #008000",
+"O c #808000",
+"+ c #FFFF00",
+"@ c #000080",
+"# c #800080",
+"$ c #008080",
+"% c #808080",
+"& c #C0C0C0",
+"* c None",
+/* pixels */
+"*********************%%.%%%*********************",
+"*****************% %*****************",
+"*************** .%O%OOO. ***************",
+"************* ..%+&++++++++&O @*************",
+"***********% O&&++++++++++++++% ************",
+"**********O .+&&+++++++++++++++++O %**********",
+"*********@ O&&&+++++++++++++++++++% %*********",
+"******** .O&+++++++++++++++++++++++% %********",
+"*******% O+&++++++++++++++++++++++++% ********",
+"******* O+&&+++++++++++++++++++++++++% *******",
+"****** O+X&+++++++++++++++++++++++++++O .******",
+"*****% .OX++++++++++++++++++++++++++++++ ******",
+"***** .++++++++++++ +++++O@ ++++++++++ *****",
+"****% ++X+++++++++ +++O . +++++++++ *****",
+"**** O+X++++++++++ +++ +++++++++O %****",
+"**** X++X+++++++++ +++ ++++++++++ ****",
+"**** ++X+&++++++++ +++ ++++++++++ ****",
+"***% .+X+O+++++++++ +++ ++++++++++O ****",
+"***% O++X+&++++++++ +++ ++++++++++% %***",
+"*** O+X+++++++++++ +++O ++++++++++O %***",
+"*** OX+X+X+++++++++ +++++ +++++++++++& .***",
+"*** ++++X+&++++++++++++++++++++++++++++++O $***",
+"*** OX+X++%++++++++++++++++++++++++++++++% .***",
+"*** O+O++X+++++++++++++++++++++++++++++++% %***",
+"*** O+X+X+++++++++++++++++++++++++++++++&O %***",
+"***% .+O++X+X+++++++++++++++++++++++++++++ ****",
+"**** +X+X+++%+++++++++++++++++++++++++++& ****",
+"**** O++O+OX+&++++++++++++++++++++++++++% ****",
+"****% .+X+X++++&+++++++++++++++++++++++++. %****",
+"***** O+O+X+OX+&+++++++++++++++++++++++% *****",
+"***** O+X++X+++++++++++++++++++++++++++@ %*****",
+"****** OO+X++X+X++++++++++++++++++++++% ******",
+"******% ++O+X++O+++++++++++++++++++++& %******",
+"******* .O o .O.O+&+++++++++++++++&. %*******",
+"******% O.OOO#o. OO+&+++++++++++&. ********",
+"*****% .O+X&X+X+X%+. OX++&+&+&X+X+ *******",
+"***** .%OX+O+%O+&+X&+O oO+X+X++++O .OO ******",
+"****% .OO+%+&X+&+X+%+X&X .+O++X+O. #%+X+. *****",
+"**** O+X+X+X+%+X&++%+O+% O+X+OO .O+X+&OO. *****",
+"**** OX+%+O%+%+%+&X+&X+XO OO .O%+%+%X+%O $****",
+"**** +OOX+X+X+X+X+%+X+%+. ..O%X+X+X+%+X% .****",
+"**** OX+%+%+%+%+%+%+%+X+. O+%+O+%+%+%+X+O ****",
+"**** OOX+X+X+X+OX+X+X+OO.OX+X+XOX+X+X+OO %****",
+"****% OOOOOOO+XO+OOOOO. OOOOOO+OOOOOO. %****",
+"***** %*****",
+"******* .%*******",
+"***********%%%%%%%%%%%**%%%%%%%%%%%%************",
+"************************************************"
+};
diff --git a/games-action/teeworlds/files/teeworlds_srv.cfg b/games-action/teeworlds/files/teeworlds_srv.cfg
new file mode 100644
index 000000000000..dc675622c78b
--- /dev/null
+++ b/games-action/teeworlds/files/teeworlds_srv.cfg
@@ -0,0 +1,7 @@
+# sample Teeworlds server config file
+# see http://www.teeworlds.com/?page=docs&wiki=ServerSettings for details
+sv_gametype dm
+sv_map dm1
+sv_name gentoo-teeworlds
+sv_register 1
+sv_scorelimit 20 \ No newline at end of file
diff --git a/games-action/teeworlds/metadata.xml b/games-action/teeworlds/metadata.xml
new file mode 100644
index 000000000000..01a746edb196
--- /dev/null
+++ b/games-action/teeworlds/metadata.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>games</herd>
+</pkgmetadata>
+
diff --git a/games-action/teeworlds/teeworlds-0.6.3.ebuild b/games-action/teeworlds/teeworlds-0.6.3.ebuild
new file mode 100644
index 000000000000..11724ef824da
--- /dev/null
+++ b/games-action/teeworlds/teeworlds-0.6.3.ebuild
@@ -0,0 +1,118 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+inherit eutils multiprocessing python-any-r1 toolchain-funcs games
+
+REVISION="b177-r50edfd37"
+
+DESCRIPTION="Online multi-player platform 2D shooter"
+HOMEPAGE="http://www.teeworlds.com/"
+SRC_URI="https://downloads.teeworlds.com/${P}-src.tar.gz"
+
+LICENSE="ZLIB"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="debug dedicated"
+
+RDEPEND="
+ !dedicated? ( media-libs/pnglite
+ media-libs/libsdl[X,sound,opengl,video]
+ media-sound/wavpack
+ virtual/opengl
+ app-arch/bzip2
+ media-libs/freetype
+ virtual/glu
+ x11-libs/libX11 )
+ sys-libs/zlib"
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ ~dev-util/bam-0.4.0"
+
+S=${WORKDIR}/${P}-src
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+ games_pkg_setup
+}
+
+src_prepare() {
+ rm -r src/engine/external/* || die
+
+ # 01 & 02 from pull request: https://github.com/oy/teeworlds/pull/493
+ EPATCH_SOURCE="${FILESDIR}/${PV}" EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" \
+ epatch
+
+ cat <<- __EOF__ > "${S}/gentoo.lua"
+ function addSettings(settings)
+ print("Adding Gentoo settings")
+ settings.optimize = 0
+ settings.cc.exe_c = "$(tc-getCC)"
+ settings.cc.exe_cxx = "$(tc-getCXX)"
+ settings.cc.flags_c:Add("${CFLAGS}")
+ settings.cc.flags_cxx:Add("${CXXFLAGS}")
+ settings.link.exe = "$(tc-getCXX)"
+ settings.link.flags:Add("${LDFLAGS}")
+ end
+ __EOF__
+
+ sed -i \
+ -e "s#/usr/share/games/teeworlds/data#${GAMES_DATADIR}/${PN}/data#" \
+ src/engine/shared/storage.cpp || die
+}
+
+src_configure() {
+ bam -v config || die
+}
+
+src_compile() {
+ local myopt
+
+ if use debug; then
+ myopt=" server_debug"
+ else
+ myopt=" server_release"
+ fi
+ if ! use dedicated; then
+ if use debug; then
+ myopt+=" client_debug"
+ else
+ myopt+=" client_release"
+ fi
+ fi
+
+ bam -v -a -j $(makeopts_jobs) ${myopt} || die
+}
+
+src_install() {
+ if use debug; then
+ newgamesbin ${PN}_srv_d ${PN}_srv
+ else
+ dogamesbin ${PN}_srv
+ fi
+ if ! use dedicated; then
+ if use debug; then
+ newgamesbin ${PN}_d ${PN}
+ else
+ dogamesbin ${PN}
+ fi
+
+ doicon "${FILESDIR}"/${PN}.xpm
+ make_desktop_entry ${PN} Teeworlds
+
+ insinto "${GAMES_DATADIR}"/${PN}/data
+ doins -r data/*
+ else
+ insinto "${GAMES_DATADIR}"/${PN}/data/maps
+ doins -r data/maps/*
+ fi
+ newinitd "${FILESDIR}"/${PN}-init.d ${PN}
+ insinto "/etc/${PN}"
+ doins "${FILESDIR}"/teeworlds_srv.cfg
+
+ dodoc readme.txt
+
+ prepgamesdirs
+}