[game-data-packager] 01/01: super 3d noah's ark: add .desktop & icon support

Alexandre Detiste detiste-guest at moszumanska.debian.org
Tue Jun 30 18:58:21 UTC 2015


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

detiste-guest pushed a commit to branch master
in repository game-data-packager.

commit c69de6595e5ba2cd8ad472cd8be9783b41726012
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Tue Jun 30 20:56:42 2015 +0200

    super 3d noah's ark: add .desktop & icon support
    
    - add fallback icon if Steam icon was not found
---
 data/noahs-ark.yaml                       |  37 ++++---
 data/wolf-common.xpm                      | 178 ++++++++++++++++++++++++++++++
 debian/copyright                          |   6 +
 game_data_packager/games/ecwolf_common.py | 101 +++++++++++++++++
 4 files changed, 309 insertions(+), 13 deletions(-)

diff --git a/data/noahs-ark.yaml b/data/noahs-ark.yaml
index 065250f..77b5722 100644
--- a/data/noahs-ark.yaml
+++ b/data/noahs-ark.yaml
@@ -1,14 +1,14 @@
 ---
 longname: "Super 3-D Noah's Ark"
 copyright: © 1994 Wisdom Tree
-engine: ecwolf
-genre: First-person shooter
-try_repack_from:
-- ~/.local/share/icons/hicolor/96x96/apps/
-- /usr/share/applications/
+plugin: ecwolf_common
 
 packages:
   super-3d-noahs-ark-data:
+    # ecwolf will complain a bit on stderr
+    # if it can't find this optional file
+    # but still run fine
+    quirks: '--file noah3d.wad'
     steam:
       id: 371180
       path: "common/Super 3-D Noah's Ark"
@@ -23,11 +23,23 @@ packages:
     - vswap.n3d
     optional:
     - noah3d.wad
-    - steam_icon_371180.png
 
 files:
-  steam_icon_371180.png:
-    install_to: usr/share/applications
+  noah3d.wad:
+    alternatives:
+    - noah3d.wad_steam
+    - noah3d.wad_1.3
+  noah3d.wad_steam:
+    install_as: noah3d.wad
+  noah3d.wad_1.3:
+    install_as: noah3d.wad
+
+  noah3d-1.3_x86.zip:
+    download: https://bitbucket.org/Blzut3/super-3d-noahs-ark/downloads/noah3d-1.3_x86.zip
+    unpack:
+      format: zip
+    provides:
+    - noah3d.wad_1.3
 
 size_and_md5: |
   576       9c7e08401faf9c7d64e7ee7bceb6c9b8 audiohed.n3d
@@ -39,9 +51,10 @@ size_and_md5: |
   405       fe26baf052f03e92019e221bc106dfec vgahead.n3d
   1048708   8c61a9b3bb38a598990ccb743d2679fa vswap.n3d
 
-  # what's this ?
-  14603355  e31d94215f1b7acee6c1d1114bdf9991 noah3d.wad
-  12053     bbd40ae97c045a8cd38f6cf4f3a2f0a4 steam_icon_371180.png
+  # patch that provides enhanced "Read This!", etc...
+  14603355  e31d94215f1b7acee6c1d1114bdf9991 noah3d.wad_steam
+  128647    f8fef8c1bb84ee8700e25858a41c7156 noah3d.wad_1.3
+  708058    d0a1bf332abc987ea561c7e748c9ca32 noah3d-1.3_x86.zip
 
 sha1sums: |
   52b8724ffac3d575a92b6d7b0348db46231327ea  audiohed.n3d
@@ -52,6 +65,4 @@ sha1sums: |
   5a6833c69556bdc82e9f921202a8028fbecf3b0c  vgagraph.n3d
   84452bd416ac38c468dd4722abcd6aa1fc35255b  vgahead.n3d
   27fa2eede1b6a06709e763ef4386651e1096db45  vswap.n3d
-
-  c9277ffef7b3f79515bff118c0917ace0cd6755b  noah3d.wad
 ...
diff --git a/data/wolf-common.xpm b/data/wolf-common.xpm
new file mode 100644
index 0000000..bb939f2
--- /dev/null
+++ b/data/wolf-common.xpm
@@ -0,0 +1,178 @@
+/* XPM */
+static char *wolf4sdl[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 140 2 ",
+"   c black",
+".  c #010000",
+"X  c #010101",
+"o  c #020000",
+"O  c #030000",
+"+  c #020202",
+"@  c gray1",
+"#  c #050000",
+"$  c #050101",
+"%  c #050202",
+"&  c #060303",
+"*  c #040404",
+"=  c gray2",
+"-  c #060606",
+";  c #070707",
+":  c #090303",
+">  c #0E0000",
+",  c #080404",
+"<  c #0B0404",
+"1  c #0B0505",
+"2  c #0E0606",
+"3  c gray3",
+"4  c #090909",
+"5  c gray4",
+"6  c #0B0B0B",
+"7  c #0C0C0C",
+"8  c gray5",
+"9  c #0E0E0E",
+"0  c gray6",
+"q  c #120000",
+"w  c #140000",
+"e  c #160000",
+"r  c #190000",
+"t  c #1E0000",
+"y  c #180909",
+"u  c #111111",
+"i  c gray7",
+"p  c #131313",
+"a  c gray9",
+"s  c #1B1B1B",
+"d  c #1D1D1D",
+"f  c gray12",
+"g  c #260000",
+"h  c #2A0000",
+"j  c #2C0000",
+"k  c #280707",
+"l  c #220C0C",
+"z  c #2C0C0C",
+"x  c #300000",
+"c  c #2C1414",
+"v  c gray13",
+"b  c gray14",
+"n  c gray15",
+"m  c #282828",
+"M  c gray16",
+"N  c gray17",
+"B  c #2C2C2C",
+"V  c #2F2F2F",
+"C  c #373737",
+"Z  c gray22",
+"A  c gray23",
+"S  c #430000",
+"D  c #4D0000",
+"F  c #560000",
+"G  c #590000",
+"H  c #560E0E",
+"J  c #661111",
+"K  c #721313",
+"L  c #532121",
+"P  c #6B2C2C",
+"I  c #7E2222",
+"U  c #7C2B2B",
+"Y  c #753434",
+"T  c #414141",
+"R  c gray26",
+"E  c #444444",
+"W  c gray27",
+"Q  c #4C4C4C",
+"!  c gray32",
+"~  c gray33",
+"^  c #565656",
+"/  c #5D5D5D",
+"(  c gray37",
+")  c #646464",
+"_  c #656565",
+"`  c gray40",
+"'  c #686868",
+"]  c DimGray",
+"[  c #6C6C6C",
+"{  c gray43",
+"}  c #717171",
+"|  c #727272",
+" . c gray46",
+".. c #797979",
+"X. c #7B7B7B",
+"o. c #7E7E7E",
+"O. c #8C2626",
+"+. c #903F3F",
+"@. c #A33939",
+"#. c #A63A3A",
+"$. c #BC4C4C",
+"%. c #BF4D4D",
+"&. c #D86060",
+"*. c #D96060",
+"=. c #818181",
+"-. c #848484",
+";. c gray52",
+":. c gray53",
+">. c #888888",
+",. c #898989",
+"<. c gray54",
+"1. c #909090",
+"2. c gray57",
+"3. c #959595",
+"4. c #9A9A9A",
+"5. c #9B9B9B",
+"6. c gray62",
+"7. c gray63",
+"8. c gray64",
+"9. c gray66",
+"0. c #AAAAAA",
+"q. c gray67",
+"w. c #ACACAC",
+"e. c gray68",
+"r. c #B2B2B2",
+"t. c gray70",
+"y. c #B4B4B4",
+"u. c #B6B6B6",
+"i. c #BBBBBB",
+"p. c gray75",
+"a. c #C8C8C8",
+"s. c gray82",
+"d. c gray84",
+"f. c #D7D7D7",
+"g. c #DADADA",
+"h. c #E4E4E4",
+"j. c #ECECEC",
+"k. c #F6F6F6",
+"l. c gray100",
+"z. c None",
+/* pixels */
+"z.z.z.z.z.z.z.z.= z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.",
+"z.z.z.z.z.z.= 6 R u = z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.z.",
+"z.z.z.z.z.= f ` [ ] V + z.z.z.z.z.z.z.z.z.z.z.z.= z.z.z.z.z.z.z.",
+"z.z.z.z.= C  . . . . .^ 6 = z.z.z.z.z.z.z.z.= v ^ u 6 z.z.z.z.z.",
+"z.z.z.= R o.o.o.-.o.o.o. .b = z.z.z.z.z.z.= ! o.o...A = z.z.z.z.",
+"z.z.6 E ,.,.,.:.,.,.:.:.,.,.! + z.z.z.= a  .,.,.,.:.:.` 6 = z.z.",
+"z.z.f 1.1.1.1.1.1.1.1.1.1.1.1.+ z.z.z.0 ,.1.1.1.1.1.1.1.,.M 6 z.",
+"z.= :.4.4.4.4.` b 4.6.4.4.4.4.+ z.z.= -.4.4.4.4.4.4.4.4.4.4.( + ",
+"z.a 8.8.8.8.( 6 + 8.8.8.8.8.8.+ z.z.s 8.8.8.8.8.8.8.8.8.8.8.8.+ ",
+"z.A w.w.9...6 z.+ 9.w.w.w.9.w.+ z.z.E w.w.w.w.[ B w.w.9.w.w.9.+ ",
+"+ ( u.u.r.6 z.z.+ u.u.u.u.u.u.+ z.6 ] u.u.u.o.6 + u.u.u.u.u.u.+ ",
+"z.R p.p.4.0 z.z.+ p.p.p.p.p.p.+ z.z.Q p.p.i.6 z.+ p.p.p.p.p.p.+ ",
+"z.f a.a.-.u z.z.+ a.a.a.a.a.a.+ z.z.v a.a.8.0 z.+ a.a.a.a.a.a.+ ",
+"z.= u.s.9.0 z.z.+ s.s.f.s.s.s.+ z.z.= 8.s.8.0 z.+ s.s.s.s.s.s.+ ",
+"z.z.M f.f.6 z.z.+ f.f.f.f.f.g.+ z.z.z.0 w.f.6 z.+ f.g.g.f.f.f.+ ",
+"z.z.0 | h.6.6 z.+ h.h.h.h.h.h.+ z.z.z.z.0 9.3.6 + h.h.h.h.h.h.+ ",
+"z.z.z.6 r.j.[ 0 + j.j.j.j.j.j.+ z.z.z.z.z.6 u z.+ j.j.j.j.j.j.+ ",
+"z.z.z.z.0 ,.0 z.+ k.k.k.k.k.k.+ z.z.z.z.z.z.z.z.+ k.k.k.k.k.k.+ ",
+"z.z.z.z.z.0 z.z.+ l.l.l.l.l.l.+ z.6 + + + + 6 z.+ l.l.l.l.l.l.+ ",
+"z.z.z.z.z.z.z.z.+ 9.w.w.9.9.9.+ z.M 9.9.9.9.+ z.+ 9.9.w.9.9.9.+ ",
+"z.z.z.z.z.z.z.z.+ ^ ^ ^ ^ ^ ^ + = B ^ ^ ^ ^ + z.+ ^ ^ ^ ^ ^ ^ + ",
+"z.z.z.z.z.z.z.z.+ + + + + + + + + + + + + + + z.+ + + + + + + + ",
+"z.z.z.z.z.z.z.z.+ e e e e e e + + e e e e e + z.+ e e e e e q + ",
+"z.z.z.z.z.z.z.z.+ j h h j h h + q j j j h h + + r h j j h h # z.",
+"z.z.z.z.z.z.z.z.+ S S S S S S + x S S S S S + q S S S S S e + z.",
+"z.z.z.z.z.z.z.z.+ G F G G G G g F G G F G G t D G G G G j # z.z.",
+"z.z.z.z.z.z.z.z.+ K K K K K K K K K J k K K K K K K K H # z.z.z.",
+"z.z.z.z.z.z.z.z.+ O.O.O.O.O.O.O.O.O.z + O.O.O.O.O.O.I : z.z.z.z.",
+"z.z.z.z.z.z.z.z.# @.#.#.#.#. at .@. at .U : + @.#.#.#. at .@.l z.z.z.z.z.",
+"z.z.z.z.z.z.z., P $.%.%.%.%.%.%.%.y z.+ %.$.%.%.%.L 1 z.z.z.z.z.",
+"z.z.z.z.z.z.z.c &.&.*.*.*.*.*.*.Y 1 z.+ &.*.*.*.+.1 z.z.z.z.z.z.",
+"z.z.z.z.z.z.1 + + + + + + + + + , z.z.# + + + + , z.z.z.z.z.z.z."
+};
diff --git a/debian/copyright b/debian/copyright
index c062208..eef1f31 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -60,3 +60,9 @@ License: LK_Avalon
  6) THE GAMEDATA IN THIS ARCHIVE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
  IMPLIED WARRANTIES, INCLUDING AND NOT LIMITED TO ANY IMPLIED WARRANTIES OF
  MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+Files:
+ data/wolf-common.xpm
+Copyright:
+ © 2013, Fabian Greffrath <fabian+debian at greffrath.com>
+License: GPL-2+
diff --git a/game_data_packager/games/ecwolf_common.py b/game_data_packager/games/ecwolf_common.py
new file mode 100644
index 0000000..9b6fb6c
--- /dev/null
+++ b/game_data_packager/games/ecwolf_common.py
@@ -0,0 +1,101 @@
+#!/usr/bin/python3
+# encoding=utf-8
+#
+# Copyright © 2015 Alexandre Detiste <alexandre at detiste.be>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# You can find the GPL license text on a Debian system under
+# /usr/share/common-licenses/GPL-2.
+
+import configparser
+import logging
+import os
+import subprocess
+
+from .. import GameData
+from ..paths import DATADIR
+from ..util import mkdir_p
+
+logger = logging.getLogger('game-data-packager.games.ecwolf-common')
+
+def install_data(from_, to):
+    subprocess.check_call(['cp', '--reflink=auto', from_, to])
+
+class EcwolfGameData(GameData):
+    """Special subclass of GameData for games playable with ecwolf:
+    - Blake Stone I&II
+    - Super 3D Noah's Ark
+    the .desktop file provided by the engine's package would
+    default to Wolfenstein3D
+    """
+
+    def __init__(self, shortname, data, workdir=None):
+        super(EcwolfGameData, self).__init__(shortname, data,
+                workdir=workdir)
+        if self.engine is None:
+            self.engine = 'ecwolf'
+        if self.genre is None:
+            self.genre = 'First-person shooter'
+
+        for package in self.packages.values():
+            if 'quirks' in self.data['packages'][package.name]:
+                package.quirks = ' ' + self.data['packages'][package.name]['quirks']
+            else:
+                package.quirks = ''
+
+    def fill_extra_files(self, package, destdir):
+        super(EcwolfGameData, self).fill_extra_files(package, destdir)
+
+        pixdir = os.path.join(destdir, 'usr/share/pixmaps')
+        mkdir_p(pixdir)
+
+        for from_ in (self.locate_steam_icon(package),
+                      os.path.join(DATADIR, package.name + '.png'),
+                      os.path.join(DATADIR, self.shortname + '.png'),
+                      os.path.join('/usr/share/pixmaps', package.name + '.png'),
+                      os.path.join(DATADIR, 'wolf-common.png')):
+            if from_ and os.path.exists(from_):
+                install_data(from_,
+                             os.path.join(pixdir, '%s.png' % package.name))
+                break
+        else:
+            raise AssertionError('wolf-common.png should have existed')
+
+        desktop = configparser.RawConfigParser()
+        desktop.optionxform = lambda option: option
+        desktop['Desktop Entry'] = {}
+        entry = desktop['Desktop Entry']
+        entry['Name'] = package.longname or self.longname
+        entry['GenericName'] = self.genre + ' game'
+        entry['TryExec'] = 'ecwolf'
+        entry['Exec'] = 'ecwolf' + package.quirks
+        entry['Path'] = '/' + package.install_to
+        entry['Icon'] = package.name
+        entry['Terminal'] = 'false'
+        entry['Type'] = 'Application'
+        entry['Categories'] = 'Game'
+
+        appdir = os.path.join(destdir, 'usr/share/applications')
+        mkdir_p(appdir)
+        with open(os.path.join(appdir, '%s.desktop' % package.name),
+                  'w', encoding='utf-8') as output:
+             desktop.write(output, space_around_delimiters=False)
+
+        lintiandir = os.path.join(destdir, 'usr/share/lintian/overrides')
+        mkdir_p(lintiandir)
+
+        with open(os.path.join(lintiandir, package.name),
+                  'a', encoding='utf-8') as o:
+             o.write('%s: desktop-command-not-in-package '
+                     'usr/share/applications/%s.desktop ecwolf\n'
+                     % (package.name, package.name))
+
+GAME_DATA_SUBCLASS = EcwolfGameData

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git



More information about the Pkg-games-commits mailing list