[rocksndiamonds] 11/13: Add new levelsets.

Stephen Kitt skitt at moszumanska.debian.org
Sun Sep 20 20:49:03 UTC 2015


This is an automated email from the git hooks/post-receive script.

skitt pushed a commit to branch master
in repository rocksndiamonds.

commit bd86f9c79e051f84b805db0167b5f2bc610c5052
Author: Stephen Kitt <steve at sk2.org>
Date:   Sun Sep 20 22:43:08 2015 +0200

    Add new levelsets.
---
 debian/changelog   |   2 +
 debian/control     |   2 +-
 debian/postinst.in | 279 +++++++++++++++++++++++++++++++++++++++++++++++------
 debian/templates   |   2 +-
 4 files changed, 254 insertions(+), 31 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index c541672..786a7b6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -10,6 +10,8 @@ rocksndiamonds (3.3.0.1+dfsg1-3) UNRELEASED; urgency=medium
     Andreas Stempfhuber for the patch!
   * Add Turkish Debconf translation (closes: #757873); thanks to Mert
     Dirik for the patch!
+  * Add new levelsets (closes: #793422); thanks to Andreas Stempfhuber for
+    the patch!
 
  -- Stephen Kitt <skitt at debian.org>  Sun, 20 Sep 2015 22:18:33 +0200
 
diff --git a/debian/control b/debian/control
index 5309d32..c750036 100644
--- a/debian/control
+++ b/debian/control
@@ -18,7 +18,7 @@ Pre-Depends: debconf (>= 0.5) | debconf-2.0
 Conflicts: rocksndiamonds-data, rocksndiamonds-zelda, rocks-n-diamonds
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends},
- perl-modules, p7zip, wget, unzip
+ perl-modules, p7zip, wget, unzip, zip
 Description: arcade-style game
  This package provides the game engine for Rocks'n'Diamonds, an arcade
  game in the tradition of "Boulder Dash", "Emerald Mine", "Supaplex",
diff --git a/debian/postinst.in b/debian/postinst.in
index 9ab256c..2b9ae48 100644
--- a/debian/postinst.in
+++ b/debian/postinst.in
@@ -11,6 +11,7 @@ use Debconf::Client::ConfModule ":all";
 umask 022;
 our $pkg="rocksndiamonds";
 our $game_dir="/usr/share/games/$pkg";
+our $oldout;
 our %info=
 (
   'Base games' =>
@@ -40,8 +41,8 @@ our %info=
   'Emerald Mine Club' =>
   {
     url =>
-      'http://www.artsoft.org/RELEASES/rocksndiamonds/levels/Emerald_Mine_Club-2.0.0.7z',
-    md5 => '4276673a791c66747a438a3a94d20121',
+      'http://www.artsoft.org/RELEASES/rocksndiamonds/levels/Emerald_Mine_Club-2.1.1.7z',
+    md5 => '11437b4a7a2731449dcd3aff50fa7737',
     topdir => 'Emerald_Mine_Club',
   },
 
@@ -92,6 +93,171 @@ our %info=
     md5 => 'fbc250f7995c666c1c745dbaf591ce32',
     topdir => 'levels/DX_Boulderdash',
   },
+
+  'Sokoban' =>
+  {
+    url =>
+      'http://www.artsoft.org/RELEASES/rocksndiamonds/levels/Sokoban-1.0.0.7z',
+    md5 => '2d34a14fbee9f62a8d8bec9fdb333ec6',
+    topdir => 'Sokoban',
+  },
+
+  'Tutorial Alpha' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/r-structure.zip',
+    md5 => '6ad651c8f04994d557c241a790babe16',
+    topdir => 'levels/Tutorials/Tutorial Alpha',
+  },
+
+  'Earth 3120' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/earth_3120.zip',
+    md5 => '3e6ada1f672b08df9cb348d54df5c2e0',
+    topdir => 'levels/Richard/Earth 3120',
+    graphics => {
+      requires => 'eem',
+      section => 'Dependency: r-graphics',
+    },
+    sounds => {
+      requires => 'eem',
+      section => 'Dependency: r-sounds',
+    },
+  },
+
+  'Enhanced Emerald Mine' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/eem.zip',
+    md5 => 'a5a9c997c702b544026986668b7e7186',
+    topdir => 'levels/Richard',
+    graphics => {
+      requires => 'eem',
+      section => 'Dependency: r-graphics',
+    },
+    sounds => {
+      requires => 'eem',
+      section => 'Dependency: r-sounds',
+    },
+  },
+
+  'Might of Elementals' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/might_of_elementals.zip',
+    md5 => '54f647dadcd5aa39db1c836dd03d6af4',
+    topdir => 'levels/Richard',
+  },
+
+  'Secret Command' =>	
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/mod_secret_command.zip',
+    md5 => '9d72ad5c4ee4d5fde7868d3ef304182d',
+    topdir => 'levels/Modules/Secret Command',
+  },
+
+  'Natural' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/natural.zip',
+    md5 => '11409200f7edd721a9e11dd188604930',
+    topdir => 'levels/Richard/Natural',
+    graphics => {
+      requires => 'natural',
+      section => 'Dependency: r-graphics',
+    },
+    sounds => {
+      requires => 'natural',
+      section => 'Dependency: r-sounds',
+    },
+  },
+
+  'World of Amoeba' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/world_of_amoeba.zip',
+    md5 => 'fa264ac9f298afe57f8c78ecea96a369',
+    topdir => 'levels/Richard/World of Amoeba',
+  },
+
+  'Some Levels' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/r-old.zip',
+    md5 => '49417b50bf9b954f9691294583176f90',
+    topdir => 'levels/Richard',
+    graphics => {
+      requires => 'vulcano',
+      section => 'Dependency: r-graphics',
+    },
+  },
+
+  'Dependency: r-graphics' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/r-graphics.zip',
+    md5 => '174eba719c19243ea46e3010596d3a18',
+    topdir => '',
+  },
+
+  'Dependency: r-sounds' =>
+  {
+    url =>
+      'http://www.artsoft.org/rocksndiamonds/levels/richardkleber/RnD/r-sounds.zip',
+    md5 => '0d18d4b2117be8150d383f6103c9106e',
+    topdir => '',
+  },
+
+  'Walpurgis World' =>
+  {
+    url =>
+      'https://web.archive.org/web/20110101150015/http://home.freeuk.net/jamiecullen/zips/ww_v1-0.zip',
+    md5 => 'd81fdfd41e83124d23bb1fbd343f5e53',
+    topdir => 'Walpurgis World',
+  },
+
+  'Walpurgis Gardens' =>
+  {
+    url =>
+      'https://web.archive.org/web/20110101150015/http://home.freeuk.net/jamiecullen/zips/wg_v1-0.zip',
+    md5 => '5cc90787e89b69275b3662e4bbe5ff2e',
+    topdir => 'Walpurgis Gardens',
+  },
+
+  'Walpurgis Flashbacks' =>
+  {
+    url =>
+      'https://web.archive.org/web/20110101150015/http://home.freeuk.net/jamiecullen/zips/wf_v1-3.zip',
+    md5 => 'fe9066ed9fd2d4600cdb99d210402c4f',
+    topdir => 'Walpurgis Flashbacks',
+  },
+
+  'Earth Shaker' =>
+  {
+    url =>
+      'https://web.archive.org/web/20110101150015/http://home.freeuk.net/jamiecullen/zips/es_b_v1-2.zip',
+    md5 => '88f8c700d6689cda0ad9fe3486307168',
+    topdir => 'Earth Shaker Old Set B',
+  },
+
+  'Earth Shaker Explosions' =>
+  {
+    url =>
+      'https://web.archive.org/web/20110101150015/http://home.freeuk.net/jamiecullen/zips/ese_v1-1.zip',
+    md5 => 'f1efe6f8f88a368744eb0ba99db1df7b',
+    topdir => 'Earth Shaker Explosions',
+  },
+
+  'rnd_jue' =>
+  {
+    url =>
+      'http://www.jb-line.de/hp/rnd_jue-v8.zip',
+    md5 => '330c6eb97cf19f4dbed6e6f21a783c06',
+    topdir => 'rnd_jue',
+  },
+
 );
 
 # execute shell command
@@ -108,6 +274,34 @@ sub cmd_execute(@)
     return 1;
 }
 
+# install section
+sub install_section($)
+{
+    my $section=shift;
+
+    unless (exists $info{$section}{url})
+    {
+        print "Unknown key: $section\n";
+        return;
+    }
+
+    my $file=(split /\//, $info{$section}{url})[-1];
+
+    unless (-f "$game_dir/downloads/$file")
+    {
+        unless(cmd_execute("wget -c -P $game_dir/downloads $info{$section}{url}"))
+        {
+            open STDOUT, ">&", $oldout;
+            fset "$pkg/error_download", "seen", "false";
+            input "critical", "$pkg/error_download";
+            go;
+            stop;
+            exit 0;
+        }
+    }
+    install_file("$game_dir/downloads/$file", $section);
+}
+
 # install game data
 sub install_file($$)
 {
@@ -117,7 +311,13 @@ sub install_file($$)
     my $tempdir=File::Temp::tempdir(CLEANUP=>1);
 
     my $cmd;
-    if ($file =~ /zip$/i )
+    if ($section =~ /rnd_jue/)
+    {
+        # fix Windows path names in zip file (required by rnd_jue)
+        cmd_execute "zip -FF $file --out $tempdir/fixed_rnd_jue.zip >/dev/null";
+        $cmd="unzip -q $tempdir/fixed_rnd_jue.zip -d $tempdir";
+    }
+    elsif ($file =~ /zip$/i )
     {
         $cmd="unzip -q $file -d $tempdir";
     }
@@ -147,6 +347,14 @@ sub install_file($$)
         cmd_execute "cp -r $tempdir/$topdir/$_ $game_dir"
             for (qw(graphics levels music sounds));
     }
+    elsif ($section =~ /^Dependency:/i)
+    {
+        for (qw(graphics music sounds))
+        {
+            -d "$tempdir/$topdir/$_" and
+                cmd_execute "cp -r $tempdir/$topdir/$_ $game_dir";
+        }
+    }
     else
     {
         -d "$game_dir/levels" or
@@ -154,7 +362,42 @@ sub install_file($$)
         -d "$game_dir/levels/$section" and 
             cmd_execute "rm -fr \"$game_dir/levels/$section\"";
         cmd_execute "mkdir \"$game_dir/levels/$section\"";
-        cmd_execute "mv -f $tempdir/$topdir/* \"$game_dir/levels/$section\"";
+        cmd_execute "mv -f \"$tempdir/$topdir\"/* \"$game_dir/levels/$section\"";
+
+        # create levelinfo.conf if missing
+        # (required by Enhanced Emerald Mine, Might of Elementals and Some Levels)
+        unless (-e "$game_dir/levels/$section/levelinfo.conf")
+        {
+           open(FH, '>', "$game_dir/levels/$section/levelinfo.conf")
+                or die "Can not open file $game_dir/levels/$section/levelinfo.conf: $!\n";
+            printf FH "file_identifier:  ROCKSNDIAMONDS_LEVELINFO_FILE_VERSION_1.2\n";
+            printf FH "name:             $section\n";
+            printf FH "sort_priority:    500\n";
+            printf FH "level_group:      true\n";
+            close FH;
+        }
+
+        # copy graphics, music and sounds directories if not covered by $topdir
+        # (required by Might of Elementals and Secret Command)
+        if (length $topdir)
+        {
+            for (qw(graphics music sounds))
+                {
+                    -d "$tempdir/$_" and
+                        cmd_execute "cp -r $tempdir/$_/* $game_dir/$_";
+                }
+        }
+
+        # resolve dependencies
+        # (required by Earth 3120, Enhanced Emerald Mine, Natural and Some Levels)
+        for (qw(graphics music sounds))
+        {
+            if (exists $info{$section}{$_})
+            {
+                install_section($info{$section}{$_}{section})
+                    unless (-d "$game_dir/$_/$info{$section}{$_}{requires}");
+            }
+        }
     }
 
     cmd_execute 'rm', '-fr', $tempdir;
@@ -226,7 +469,7 @@ exit 0 unless get("$pkg/begin") eq 'true';
 # select downloading
 my @sel=split /\s*,\s*/, get("$pkg/select_games");
 
-open my $oldout, ">&STDOUT";
+open $oldout, ">&STDOUT";
 open STDOUT, ">&STDERR";
 
 unless (-d "$game_dir/downloads")
@@ -239,29 +482,7 @@ unless (-d "$game_dir/downloads")
 }
 clean_downloads_dir();
 
-for my $what ('Base games', @sel)
-{
-    unless (exists $info{$what}{url})
-    {
-        print "Unknown key: $what\n";
-        next;
-    }
-
-    my $file=(split /\//, $info{$what}{url})[-1];
-
-    unless (-f "$game_dir/downloads/$file")
-    {
-        unless(cmd_execute("wget -c -P $game_dir/downloads $info{$what}{url}"))
-        {
-            open STDOUT, ">&", $oldout;
-            fset "$pkg/error_download", "seen", "false";
-            input "critical", "$pkg/error_download";
-            go;
-            stop;
-            exit 0;
-        }
-    }
-    install_file("$game_dir/downloads/$file", $what);
-}
+install_section($_)
+    for ('Base games', @sel);
 __END__
 #DEBHELPER#
diff --git a/debian/templates b/debian/templates
index c2590da..73463d5 100644
--- a/debian/templates
+++ b/debian/templates
@@ -17,7 +17,7 @@ _Description: Download non-free game data?
 
 Template: rocksndiamonds/select_games
 Type: multiselect
-Choices: Legend Of Zelda, Legend Of Zelda II, Emerald Mine Club, Contributions 1995 - 2006, Snake Bite, BD2K3, BD Dream, Supaplex, DX-Boulderdash
+Choices: Legend Of Zelda, Legend Of Zelda II, Emerald Mine Club, Contributions 1995 - 2006, Snake Bite, BD2K3, BD Dream, Supaplex, DX-Boulderdash, Sokoban, Tutorial Alpha, Earth 3120, Enhanced Emerald Mine, Might of Elementals, Secret Command, Natural, World of Amoeba, Some Levels, Walpurgis World, Walpurgis Gardens, Walpurgis Flashbacks, Earth Shaker, Earth Shaker Explosions, rnd_jue
 _Description: Games to download data for:
 
 Template: rocksndiamonds/util_notfound

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/rocksndiamonds.git



More information about the Pkg-games-commits mailing list