Subject: [PATCH] Add hedgewars
From: Nicolas Goaziou <[email-masked]>
To: [email-masked]
Date: Wed, 24 Apr 2019 09:59:37 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

The following patch adds hedgewars game. It requires sdl2-net package,
which I submitted in a pending patch (see bug#35391).

Feedback welcome.

Regards,

-- 
Nicolas Goaziou
From f17328d8810b31653f3007bb4a4950822328a2e5 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <[email-masked]>
Date: Wed, 24 Apr 2019 09:52:52 +0200
Subject: [PATCH] gnu: Add hedgewars.

* gnu/packages/games.scm (hedgewars): New variable.
---
 gnu/packages/games.scm | 104 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 104 insertions(+)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index da917e2870..d51ecc60fa 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -6998,3 +6998,107 @@ pursue their favorite interesting flight simulation idea, and last but
 certainly not least as a fun, realistic, and challenging desktop flight
 simulator.")
     (license license:gpl2+)))
+
+(define-public hedgewars
+  (package
+    (name "hedgewars")
+    (version "0.9.25")
+    (source (origin
+              (method hg-fetch)
+              (uri (hg-reference
+                    (url "https://hg.hedgewars.org/hedgewars/")
+                    (changeset (string-append version "-release"))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "00rckhalhw596x7zpb7rwg9663019xbg1zafcxfnj4x3dg435rl5"))))
+    (build-system cmake-build-system)
+    (arguments
+     ;; XXX: Engine is written as Pascal source code, requiring Free Pascal
+     ;; Compiler, which we haven't packaged yet.  With the flag below, we use
+     ;; a Pascal to C translator and Clang instead.
+     `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-failing-test
+           ;; XXX: Remove single failing test.
+           (lambda _
+             (delete-file "tests/lua/staticmines.lua")
+             #t))
+         (add-after 'unpack 'fix-compiler
+           ;; XXX: Flag BUILD_ENGINE_C, as set above, implies using Clang to
+           ;; compile files.  However, using `clang' globally leads to the
+           ;; following issue:
+           ;; "qtbase-5.11.3/include/qt5/QtCore/qglobal.h:45:12: fatal error:
+           ;; 'type_traits' file not found".
+           ;;
+           ;; Therefore, we make sure to use `c++' everywhere but in the
+           ;; engine.
+           (lambda _
+             (substitute* "project_files/hwc/CMakeLists.txt"
+               (("find_package\\(SDL2_ttf 2 REQUIRED\\)" all)
+                (string-append all "\n"
+                               "set(CMAKE_C_COMPILER ${CLANG_EXECUTABLE})\n"
+                               "set(CMAKE_CXX_COMPILER ${CLANG_EXECUTABLE})")))
+             (substitute* "CMakeLists.txt"
+               (("set\\(CMAKE_C(XX)?_COMPILER \\$\\{CLANG_EXECUTABLE\\}\\)") ""))
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "ctest"))))))
+    (inputs
+     `(("clang" ,clang)
+       ("ffmpeg" ,ffmpeg)
+       ("freeglut" ,freeglut)
+       ("ghc" ,ghc)
+       ("ghc-entropy" ,ghc-entropy)
+       ("ghc-hslogger" ,ghc-hslogger)
+       ("ghc-network" ,ghc-network)
+       ("ghc-random" ,ghc-random)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-sandi" ,ghc-sandi)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-zlib" ,ghc-zlib)
+       ("glew" ,glew)
+       ("libpng" ,libpng)
+       ("lua" ,lua-5.1)
+       ("physfs" ,physfs)
+       ("qtbase" ,qtbase)
+       ("sdl" ,(sdl-union
+                (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)))
+    (home-page "https://hedgewars.org/")
+    (synopsis "Funny turn-based artillery game, featuring fighting hedgehogs!")
+    (description
+     "Each player controls a team of several hedgehogs.  During the course of
+the game, players take turns with one of their hedgehogs.  They then use
+whatever tools and weapons are available to attack and kill the opponents'
+hedgehogs, thereby winning the game.
+
+Hedgehogs may move around the terrain in a variety of ways, normally by
+walking and jumping but also by using particular tools such as the ``Rope'' or
+``Parachute'', to move to otherwise inaccessible areas.  Each turn is
+time-limited to ensure that players do not hold up the game with excessive
+thinking or moving.  A large variety of tools and weapons are available for
+players during the game: Grenade, Cluster Bomb, Bazooka, UFO, Homing Bee,
+Shotgun, Desert Eagle, Fire Punch, Baseball Bat, Dynamite, Mine, Rope,
+Pneumatic pick, Parachute.  Most weapons, when used, cause explosions that
+deform the terrain, removing circular chunks.
+
+The landscape is an island floating on a body of water, or a restricted cave
+with water at the bottom.  A hedgehog dies when it enters the water (either by
+falling off the island, or through a hole in the bottom of it), it is thrown
+off either side of the arena or when its health is reduced, typically from
+contact with explosions, to zero (the damage dealt to the attacked hedgehog or
+hedgehogs after a player's or CPU turn is shown only when all movement on the
+battlefield has ceased).")
+    ;; Software as a whole is licensed under GPL-2 terms.  Artwork and
+    ;; scripts are distributed under various terms.
+    (license (list license:gpl2
+                   license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
+                   license:expat license:fdl-1.3+ license:public-domain
+                   license:zlib))))
-- 
2.21.0