[game-data-packager] 07/07: doom-common: automatic IWAD/PWAD & virtual engine wording

Alexandre Detiste detiste-guest at moszumanska.debian.org
Thu Mar 26 15:15:16 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 73444f8996723013457e44f930ce7fb912003f76
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Thu Mar 26 16:13:42 2015 +0100

    doom-common: automatic IWAD/PWAD & virtual engine wording
    
    move interresting bits of doom-common.py & *.control.in
    into core, remove boilerplate
---
 data/chexquest-data.control.in          |  7 -------
 data/chexquest2-data.control.in         |  8 --------
 data/doom-common.control.in             |  4 ----
 data/doom2-nerve-wad.control.in         |  5 -----
 data/hacx-data.control.in               |  8 --------
 data/heretic.yaml                       |  2 ++
 data/hexen-deathkings-data.control.in   |  5 -----
 data/hexen-demo-data.control.in         |  4 ----
 data/hexen.control.in                   |  5 -----
 data/hexen.yaml                         |  4 ++++
 data/strife-data.control.in             |  7 -------
 game_data_packager/__init__.py          | 28 +++++++++++++++++++++++-----
 game_data_packager/games/doom_common.py | 21 +--------------------
 13 files changed, 30 insertions(+), 78 deletions(-)

diff --git a/data/chexquest-data.control.in b/data/chexquest-data.control.in
deleted file mode 100644
index 64b445f..0000000
--- a/data/chexquest-data.control.in
+++ /dev/null
@@ -1,7 +0,0 @@
-Description: IWAD from Digital Café's Chex Quest computer game
- This package was built using game-data-packager. It contains
- proprietary game data and must not be redistributed.
- .
- This package contains the IWAD from Digital Café's Chex Quest.
- .
- You need a doom engine to play this game.
diff --git a/data/chexquest2-data.control.in b/data/chexquest2-data.control.in
deleted file mode 100644
index 87ccf11..0000000
--- a/data/chexquest2-data.control.in
+++ /dev/null
@@ -1,8 +0,0 @@
-Description: PWAD from Digital Café's Chex Quest 2 computer game
- This package was built using game-data-packager. It contains
- proprietary game data and must not be redistributed.
- .
- This package contains the PWAD from Digital Café's
- Chex Quest 2.
- .
- You need a doom engine to play this game.
diff --git a/data/doom-common.control.in b/data/doom-common.control.in
deleted file mode 100644
index a302f77..0000000
--- a/data/doom-common.control.in
+++ /dev/null
@@ -1,4 +0,0 @@
-Description: IWAD from ID Software's "LONG" computer game
- Doom requires both a doom-engine and a doom-wad to play. This package
- contains the IWAD from ID Software's game "LONG"
- and was generated using the "game-data-packager" program.
diff --git a/data/doom2-nerve-wad.control.in b/data/doom2-nerve-wad.control.in
deleted file mode 100644
index ede9030..0000000
--- a/data/doom2-nerve-wad.control.in
+++ /dev/null
@@ -1,5 +0,0 @@
-Description: Doom 2: No Rest for the Living PWAD
- Doom 2 requires both a doom-engine and data files to play.
- This package contains the data files from the Doom 2 expansion
- "No Rest for the Living", and was generated using the
- "game-data-packager" program.
diff --git a/data/hacx-data.control.in b/data/hacx-data.control.in
deleted file mode 100644
index ca56376..0000000
--- a/data/hacx-data.control.in
+++ /dev/null
@@ -1,8 +0,0 @@
-Description: IWAD from Banjo Software's HacX computer game
- This package was built using game-data-packager. It contains
- proprietary game data and must not be redistributed.
- .
- This package contains the IWAD from Banjo Software's
- HacX: Twitch 'n Kill 
- .
- You need a doom engine to play this game.
diff --git a/data/heretic.yaml b/data/heretic.yaml
index a419092..9545293 100644
--- a/data/heretic.yaml
+++ b/data/heretic.yaml
@@ -21,6 +21,8 @@ help_text: |
 
 packages:
   heretic-wad:
+    debian:
+      breaks: chocolate-doom (<< 2)
     steam:
       id: 2390
       path: "common/Heretic Shadow of the Serpent Riders"
diff --git a/data/hexen-deathkings-data.control.in b/data/hexen-deathkings-data.control.in
deleted file mode 100644
index e7172b6..0000000
--- a/data/hexen-deathkings-data.control.in
+++ /dev/null
@@ -1,5 +0,0 @@
-Breaks: chocolate-doom (<< 2)
-Description: Hexen: Deathkings of the Dark Citadel PWAD
- Hexen requires both a hexen-engine and data files to play. This package
- contains the data files from the Hexen expansion "Deathkings of the
- Dark Citadel", and was generated using the "game-data-packager" program.
diff --git a/data/hexen-demo-data.control.in b/data/hexen-demo-data.control.in
deleted file mode 100644
index 63dd20b..0000000
--- a/data/hexen-demo-data.control.in
+++ /dev/null
@@ -1,4 +0,0 @@
-Description: IWAD from Raven Software's Hexen computer game
- Hexen requires both a hexen-engine and a hexen-wad to play. This package
- contains the IWAD from the demo version of Raven Software's game Hexen
- and was generated using the "game-data-packager" program.
diff --git a/data/hexen.control.in b/data/hexen.control.in
deleted file mode 100644
index e65d2f9..0000000
--- a/data/hexen.control.in
+++ /dev/null
@@ -1,5 +0,0 @@
-Breaks: chocolate-doom (<< 2)
-Description: IWAD from Raven Software's hexen computer game
- Hexen requires both a hexen-engine and a hexen-wad to play. This package
- contains the IWAD from Raven Software's game "GAME"
- and was generated using the "game-data-packager" program.
diff --git a/data/hexen.yaml b/data/hexen.yaml
index 95e01ad..5b3e84b 100644
--- a/data/hexen.yaml
+++ b/data/hexen.yaml
@@ -23,6 +23,8 @@ engine: "chocolate-doom | hexen-engine"
 
 packages:
   hexen-wad:
+    debian:
+      breaks: chocolate-doom (<< 2)
     steam:
       id: 2360
       path: "common/Hexen"
@@ -32,6 +34,8 @@ packages:
 
   hexen-deathkings-data:
     longname: "Hexen: Deathkings of the Dark Citadel"
+    debian:
+      breaks: chocolate-doom (<< 2)
     steam:
       id: 2370
       path: "common/Hexen Deathkings of the Dark Citadel"
diff --git a/data/strife-data.control.in b/data/strife-data.control.in
deleted file mode 100644
index a178fef..0000000
--- a/data/strife-data.control.in
+++ /dev/null
@@ -1,7 +0,0 @@
-Description: IWAD from Rogue Entertainment's Strife computer game
- This package was built using game-data-packager. It contains
- proprietary game data and must not be redistributed.
- .
- This package contains the IWAD from Rogue Entertainment's Strife.
- .
- You need a doom engine to play this game.
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index d63ae95..7778842 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -330,6 +330,10 @@ class GameDataPackage(object):
         # The optional marketing name of this version
         self.longname = None
 
+        # This word is used to build package description
+        # 'data' / 'PWAD' / 'IWAD'
+        self.data_type = 'data'
+
         # This optional value will overide the game global copyright
         self.copyright = None
 
@@ -1837,6 +1841,7 @@ class GameData(object):
         provides = read_control_set(package, control, 'Provides')
         replaces = read_control_set(package, control, 'Replaces')
         conflicts = read_control_set(package, control, 'Conflicts')
+        breaks = read_control_set(package, control, 'Breaks')
 
         if package.expansion_for:
             depends.add(package.expansion_for)
@@ -1865,6 +1870,8 @@ class GameData(object):
             control['Replaces'] = ', '.join(sorted(replaces))
         if conflicts:
             control['Conflicts'] = ', '.join(sorted(conflicts))
+        if breaks:
+            control['Breaks'] = ', '.join(sorted(breaks))
 
         version = package.debian.get('version')
         if 'Version' in control:
@@ -1880,7 +1887,7 @@ class GameData(object):
         if 'Description' not in control:
             longname = package.longname or self.longname
 
-            short_desc = 'data for ' + longname
+            short_desc = package.data_type + ' for "' + longname + '" game'
 
             long_desc =  ' This package was built using game-data-packager. It contains\n'
             long_desc += ' proprietary game data and must not be redistributed.\n'
@@ -1892,15 +1899,26 @@ class GameData(object):
             if package.expansion_for:
                 game_name = self.packages[package.expansion_for].longname or self.longname
                 long_desc += ' Game: ' + game_name + '\n'
-                long_desc += ' Expansion: ' + longname
+                long_desc += ' Expansion: ' + longname + '\n'
             else:
-                long_desc += ' Game: ' + longname
+                long_desc += ' Game: ' + longname + '\n'
+
+            copyright = package.copyright or self.copyright
+            long_desc += ' Published by: ' + copyright[7:] + '\n .\n'
 
             engine = package.engine or self.engine
             if engine:
+                if '|' in engine:
+                    virtual = engine.split('|')[-1].strip()
+                    has_virtual = (virtual.split('-')[-1] == 'engine')
+                else:
+                    has_virtual = False
                 engine = engine.split('|')[0].split('(')[0].strip()
-                long_desc += '\n .\n'
-                long_desc += ' Intended for use with: ' + engine
+                if has_virtual:
+                    long_desc += ' Intended for use with some ' + virtual + ',\n'
+                    long_desc += ' such as for example: ' + engine
+                else:
+                    long_desc += ' Intended for use with: ' + engine
 
             control['Description'] = short_desc + '\n' + long_desc
 
diff --git a/game_data_packager/games/doom_common.py b/game_data_packager/games/doom_common.py
index 66e2c2c..bc4dd29 100644
--- a/game_data_packager/games/doom_common.py
+++ b/game_data_packager/games/doom_common.py
@@ -94,30 +94,11 @@ class DoomGameData(GameData):
             package.program = package_map.get(engine, engine)
             package.create_desktop_file = self.data['packages'][package.name].get(
                     'create_desktop_file', True)
+            package.data_type = 'PWAD' if package.expansion_for else 'IWAD'
 
     def construct_package(self, binary):
         return WadPackage(binary)
 
-    def get_control_template(self, package):
-        for name in (package.name, self.shortname, 'doom-common'):
-            path = os.path.join(DATADIR, '%s.control.in' % name)
-            if os.path.exists(path):
-                return path
-        else:
-            raise AssertionError('doom-common.control.in should exist')
-
-    def modify_control_template(self, control, package, destdir):
-        super(DoomGameData, self).modify_control_template(control, package,
-                destdir)
-
-        wad_base = os.path.splitext(package.main_wad)[0]
-
-        desc = control['Description']
-        desc = desc.replace('ENGINE', package.program)
-        desc = desc.replace('GAME', wad_base)
-        desc = desc.replace('LONG', (package.longname or self.longname))
-        control['Description'] = desc
-
     def fill_extra_files(self, package, destdir):
         super(DoomGameData, self).fill_extra_files(package, destdir)
         if not package.create_desktop_file:

-- 
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