Subject: bug#26677: [PATCH] gnu: Add enigma.

From: Ricardo Wurmus <[email-masked]>
Date: Thu, 27 Apr 2017 11:17:47 +0200

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

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 18ea6148c..b31bb93db 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -84,6 +84,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages ocaml)
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
@@ -3743,6 +3744,65 @@ settings.link.libs:Add(\"wavpack\")\n"))
 The Flag.  You can even design your own maps!")
     (license license:bsd-3)))
 
+(define-public enigma
+  (package
+    (name "enigma")
+    (version "1.21")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/enigma-game/"
+                                  "Release%20" version "/enigma-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--with-system-enet")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'find-sdl
+           (lambda _
+             (substitute* "configure"
+               (("SDL_ttf.h") "SDL/SDL_ttf.h"))
+             (substitute* '("tools/ttf2bmf.cc"
+                            "lib-src/enigma-core/ecl_font.cc"
+                            "lib-src/enigma-core/ecl_video.cc"
+                            "lib-src/enigma-core/ecl_buffer.hh"
+                            "src/SoundEngine.cc"
+                            "src/SoundEngine.hh"
+                            "src/MusicManager.cc"
+                            "src/MusicManager.hh"
+                            "src/d_models.cc"
+                            "src/main.cc"
+                            "src/network.cc")
+               (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
+                (string-append "#include \"SDL/SDL_" header ".h\"")))
+             (substitute* "src/main.cc"
+               (("#include <SDL_(image|ttf|mixer).h>" line header)
+                (string-append "#include \"SDL/SDL_" header ".h\"")))
+             #t)))))
+    (inputs
+     `(("xerces-c" ,xerces-c)
+       ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
+       ("curl" ,curl)
+       ("enet" ,enet)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("imagemagick" ,imagemagick)))
+    (home-page "http://www.nongnu.org/enigma")
+    (synopsis "Puzzle game with a dexterity component")
+    (description "Enigma is a puzzle game with 550 unique levels.  The object
+of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
+Simple?  Yes.  Easy?  Certainly not!  Hidden traps, vast mazes, laser beams,
+and most of all, countless hairy puzzles usually block your direct way to the
+Oxyd stones.  Enigma’s game objects (and there are hundreds of them, lest you
+get bored) interact in many unexpected ways, and since many of them follow the
+laws of physics (Enigma’s special laws of physics, that is), controlling them
+with the mouse isn’t always trivial.")
+    (license license:gpl2+)))
+
 (define-public fillets-ng
   (package
     (name "fillets-ng")
-- 
2.12.2