gnu: Add MARS.

* gnu/packages/games.scm (mars): New variable.
* gnu/packages/patches/mars-install.patch: New file.
* gnu/packages/patches/mars-sfml-2.3.patch: New file.
* gnu-system.am (dist_patch_DATA): Add them.
This commit is contained in:
Ricardo Wurmus 2015-08-31 10:09:40 +02:00
parent eb52419266
commit c23c50c734
4 changed files with 228 additions and 0 deletions

View File

@ -560,6 +560,8 @@ dist_patch_DATA = \
gnu/packages/patches/luit-posix.patch \
gnu/packages/patches/m4-gets-undeclared.patch \
gnu/packages/patches/make-impure-dirs.patch \
gnu/packages/patches/mars-install.patch \
gnu/packages/patches/mars-sfml-2.3.patch \
gnu/packages/patches/maxima-defsystem-mkdir.patch \
gnu/packages/patches/mc-fix-ncurses-build.patch \
gnu/packages/patches/mcron-install.patch \

View File

@ -10,6 +10,7 @@
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -31,11 +32,14 @@
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages admin)
#:use-module (gnu packages audio)
#:use-module (gnu packages boost)
#:use-module (gnu packages fribidi)
#:use-module (gnu packages game-development)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
@ -44,6 +48,7 @@
#:use-module (gnu packages guile)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages mp3)
#:use-module (gnu packages image)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages python)
@ -573,6 +578,59 @@ for common mesh file formats, and collision detection.")
(home-page "http://irrlicht.sourceforge.net/")
(license license:zlib)))
(define-public mars
;; The latest release on SourceForge relies on an unreleased version of SFML
;; with a different API, so we take the latest version from the official
;; repository on Github.
(let ((commit "c855d04409")
(revision "1"))
(package
(name "mars")
(version (string-append "0.7.5." revision "." commit ))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/thelaui/M.A.R.S..git")
(commit commit)))
(file-name (string-append name "-" version))
(sha256
(base32
"1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
(patches (list (search-patch "mars-sfml-2.3.patch")
(search-patch "mars-install.patch")))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; There are no tests
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-install-path
(lambda _
(substitute* "src/CMakeLists.txt"
(("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
"${CMAKE_INSTALL_PREFIX}/bin"))
#t))
(add-after 'unpack 'fix-data-path
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "src/System/settings.cpp"
(("C_dataPath = \"./data/\";")
(string-append "C_dataPath = \""
(assoc-ref outputs "out")
"/share/games/marsshooter/\";")))
#t)))))
(inputs
`(("mesa" ,mesa)
("fribidi" ,fribidi)
("taglib" ,taglib)
("sfml" ,sfml)))
(home-page "http://marsshooter.org")
(synopsis "2D space shooter")
(description
"M.A.R.S. is a 2D space shooter with pretty visual effects and
attractive physics. Players can battle each other or computer controlled
enemies in different game modes such as space ball, death match, team death
match, cannon keep, and grave-itation pit.")
(license license:gpl3+))))
(define minetest-data
(package
(name "minetest-data")

View File

@ -0,0 +1,17 @@
Remove install target for non-existant directory.
--- a/src/CMakeLists.txt 2015-09-13 20:52:28.517344327 +0200
+++ b/src/CMakeLists.txt 2015-09-13 20:53:04.842453987 +0200
@@ -122,12 +122,6 @@
DESTINATION
${CMAKE_INSTALL_PREFIX}/share/applications
)
- install(
- FILES
- ${MARS_SOURCE_DIR}/resources/mars
- DESTINATION
- ${CMAKE_INSTALL_PREFIX}/share/menu
- )
else(UNIX)
# executable

View File

@ -0,0 +1,151 @@
This is a concatenation of the following two patches:
https://github.com/jcowgill/M.A.R.S./commit/33d5affabf8ff84f2c028b9303c6a9e83cc824ad.patch
https://patch-diff.githubusercontent.com/raw/thelaui/M.A.R.S./pull/2.patch
Their purpose is to allow Mars to be built against the latest version of SFML.
From 33d5affabf8ff84f2c028b9303c6a9e83cc824ad Mon Sep 17 00:00:00 2001
From: James Cowgill <james410@cowgill.org.uk>
Date: Sat, 9 May 2015 01:54:14 +0100
Subject: [PATCH] Remove dependency on GLU - fixes build with SFML 2.3
---
premake4.lua | 8 ++++----
src/Shaders/postFX.cpp | 2 +-
src/System/window.cpp | 12 ++++++------
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/premake4.lua b/premake4.lua
index 023dddd..5af4495 100755
--- a/premake4.lua
+++ b/premake4.lua
@@ -11,11 +11,11 @@ project "mars"
defines { "NDEBUG" }
flags { "Optimize" }
if os.get() == "windows" then
- links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "glu32", "opengl32", "fribidi-0", "tag" }
+ links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "opengl32", "fribidi-0", "tag" }
elseif os.get() == "macosx" then
links { "sfml-graphics.framework", "sfml-audio.framework", "sfml-system.framework", "sfml-window.framework", "opengl.framework", "fribidi", "tag" }
else
- links { "GLU", "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "fribidi", "tag" }
+ links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "fribidi", "tag" }
libdirs { "/usr/lib", "/usr/local/lib" }
end
@@ -23,10 +23,10 @@ project "mars"
defines { "_DEBUG", "DEBUG" }
flags { "Symbols" }
if os.get() == "windows" then
- links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "glu32", "opengl32", "fribidi-0", "tag" }
+ links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "opengl32", "fribidi-0", "tag" }
elseif os.get() == "macosx" then
links { "sfml-graphics.framework", "sfml-audio.framework", "sfml-system.framework", "sfml-window.framework", "opengl.framework", "fribidi", "tag" }
else
- links { "GLU", "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "fribidi", "tag" }
+ links { "sfml-graphics", "sfml-audio", "sfml-system", "sfml-window", "fribidi", "tag" }
libdirs { "/usr/lib", "/usr/local/lib" }
end
diff --git a/src/Shaders/postFX.cpp b/src/Shaders/postFX.cpp
index 987f411..f767a47 100644
--- a/src/Shaders/postFX.cpp
+++ b/src/Shaders/postFX.cpp
@@ -78,7 +78,7 @@ namespace postFX {
postFX_.loadFromFile(settings::C_dataPath + "shaders/bump.frag", sf::Shader::Fragment);
bumpMap_.create(SPACE_X_RESOLUTION*0.5f, SPACE_Y_RESOLUTION*0.5f);
glViewport(0,0,SPACE_X_RESOLUTION*0.5f,SPACE_Y_RESOLUTION*0.5f);
- gluOrtho2D(0, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0);
+ glOrtho(0, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0, -1, 1);
glEnable(GL_BLEND);
glMatrixMode(GL_MODELVIEW);
postFX_.setParameter("BumpMap", bumpMap_.getTexture());
diff --git a/src/System/window.cpp b/src/System/window.cpp
index e9a099a..8e12dcc 100644
--- a/src/System/window.cpp
+++ b/src/System/window.cpp
@@ -222,7 +222,7 @@ namespace window {
glLoadIdentity();
// Setup translation (according to left-upper corner)
- gluOrtho2D(0.f, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0.f);
+ glOrtho(0.f, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0.f, -1, 1);
// probably improves performance...
glDisable(GL_LIGHTING);
@@ -247,7 +247,7 @@ namespace window {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
- gluOrtho2D(0.f, viewPort_.x_, viewPort_.y_, 0.f);
+ glOrtho(0.f, viewPort_.x_, viewPort_.y_, 0.f, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
@@ -255,7 +255,7 @@ namespace window {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
- gluOrtho2D(0.f, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0.f);
+ glOrtho(0.f, SPACE_X_RESOLUTION, SPACE_Y_RESOLUTION, 0.f, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
@@ -270,7 +270,7 @@ namespace window {
glLoadIdentity();
setViewPort();
- gluOrtho2D(0.f, viewPort_.x_, viewPort_.y_, 0.f);
+ glOrtho(0.f, viewPort_.x_, viewPort_.y_, 0.f, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
@@ -284,7 +284,7 @@ namespace window {
glLoadIdentity();
setViewPort();
- gluOrtho2D(0.f, viewPort_.x_, viewPort_.y_, 0.f);
+ glOrtho(0.f, viewPort_.x_, viewPort_.y_, 0.f, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
@@ -294,7 +294,7 @@ namespace window {
else {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
- gluOrtho2D(0.f, viewPort_.x_, viewPort_.y_, 0.f);
+ glOrtho(0.f, viewPort_.x_, viewPort_.y_, 0.f, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
From a97d0d6a19b5b43e3c53081e36f1f1747b6674e6 Mon Sep 17 00:00:00 2001
From: Sylvain BOILARD <boilard@crans.org>
Date: Wed, 23 Jan 2013 02:02:47 +0100
Subject: [PATCH] Use sf::Shader::Bind() correctly after latest update of the
SFML's API.
---
src/System/window.cpp | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/System/window.cpp b/src/System/window.cpp
index e9a099a..3ffcf65 100644
--- a/src/System/window.cpp
+++ b/src/System/window.cpp
@@ -307,13 +307,11 @@ namespace window {
window_.setActive(true);
glEnable(GL_TEXTURE_2D);
- if (shader)
- shader->bind();
+ sf::Shader::bind(shader);
window_.draw(toBeDrawn, states);
- if (shader)
- shader->unbind();
+ sf::Shader::bind(NULL);
window_.popGLStates();
glPopMatrix();