[game-data-packager] 01/01: rework engine definition, avoid need for duplicated data
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Mon Mar 9 11:42:02 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 fa7b5f6010b08101411ea343fc2f8abe668181ca
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date: Mon Mar 9 12:35:16 2015 +0100
rework engine definition, avoid need for duplicated data
The 'debian: engine:' tag is moved to top-level 'engine:'
tag that can be overiden at package level if needed.
This let avoid the need to specify the the same engine
for a game and it's demo.
The doom_common.py plugin is reworked to derive the engine
program binary from the engine package name;
again to avoid duplicated data.
The current default doom-engine is now set in an unique location;
and it isn't needed to explicitely set anymore in all the .yaml
files using the doom_common.py plugin.
---
data/chex.yaml | 2 --
data/descent1.yaml | 3 +--
data/descent2.yaml | 3 +--
data/doom.yaml | 1 -
data/doom2.yaml | 5 +----
data/doom3.yaml | 6 ++----
data/final-doom.yaml | 2 --
data/hacx.yaml | 2 --
data/heretic.yaml | 6 +-----
data/hexen.yaml | 14 ++++----------
data/hexen2.yaml | 4 +---
data/ja.yaml | 2 +-
data/jk2.yaml | 2 +-
data/lgeneral.yaml | 3 +--
data/quake.yaml | 3 +--
data/quake2.yaml | 4 +---
data/quake3.yaml | 10 ++++------
data/rott.yaml | 3 +--
data/rtcw.yaml | 2 +-
data/spear-of-destiny.yaml | 3 +--
data/strife.yaml | 2 --
data/syndicate.yaml | 4 ++--
data/theme-hospital.yaml | 3 +--
data/tyrian.yaml | 3 +--
data/wolf3d.yaml | 4 +---
doc/adding_a_game.mdwn | 2 ++
game_data_packager/__init__.py | 24 ++++++++++++++++--------
game_data_packager/games/doom_common.py | 24 +++++++++++++++---------
game_data_packager/games/residualvm_common.py | 6 ++----
game_data_packager/games/scummvm_common.py | 6 ++----
30 files changed, 65 insertions(+), 93 deletions(-)
diff --git a/data/chex.yaml b/data/chex.yaml
index ca3c42b..fdc4fc4 100644
--- a/data/chex.yaml
+++ b/data/chex.yaml
@@ -12,8 +12,6 @@ packages:
chexquest-data:
longname: Chex Quest
overide_fill_docs: false
- debian:
- engine: "chocolate-doom | doom-engine"
install_to: usr/share/games/doom
install:
- chex.wad
diff --git a/data/descent1.yaml b/data/descent1.yaml
index 1679c0f..88873b8 100644
--- a/data/descent1.yaml
+++ b/data/descent1.yaml
@@ -2,13 +2,13 @@
---
longname: "Descent: First Strike"
copyright: © 1994 Parallax Software Corporation
+engine: d1x-rebirth
packages:
descent1-demo-data:
longname: "Descent: First Strike (demo)"
demo_for: descent1-full-data
debian:
- engine: d1x-rebirth
conflicts: descent1-full-data
install:
- descent.hog
@@ -22,7 +22,6 @@ packages:
descent1-full-data:
longname: "Descent: First Strike"
debian:
- engine: d1x-rebirth
conflicts: descent1-demo-data
install:
- descent.hog_full
diff --git a/data/descent2.yaml b/data/descent2.yaml
index f7b4fd9..31c50c6 100644
--- a/data/descent2.yaml
+++ b/data/descent2.yaml
@@ -2,12 +2,11 @@
---
longname: Descent II
copyright: © 1995 Parallax Software Corporation
+engine: d2x-rebirth
packages:
descent2-demo-data:
longname: Descent II
- debian:
- engine: d2x-rebirth
install:
- d2demo.pig
- d2demo.ham
diff --git a/data/doom.yaml b/data/doom.yaml
index f7caca4..e64ee2b 100644
--- a/data/doom.yaml
+++ b/data/doom.yaml
@@ -26,7 +26,6 @@ help_text: |
packages:
doom-wad:
debian:
- engine: "chocolate-doom | doom-engine"
conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)
steam:
id: 2280
diff --git a/data/doom2.yaml b/data/doom2.yaml
index 4d61111..0833118 100644
--- a/data/doom2.yaml
+++ b/data/doom2.yaml
@@ -20,7 +20,6 @@ help_text: |
packages:
doom2-wad:
debian:
- engine: "chocolate-doom | doom-engine"
provides: doom-wad
conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)
steam:
@@ -34,9 +33,7 @@ packages:
doom2-nerve-wad:
longname: "No Rest for the Living"
expansion_for: doom2-wad
- doom_engine: prboom-plus
- debian:
- recommends: prboom-plus
+ engine: prboom-plus
steam:
id: 208200
path: "common/DOOM 3 BFG Edition"
diff --git a/data/doom3.yaml b/data/doom3.yaml
index e3e8011..8dc11a4 100644
--- a/data/doom3.yaml
+++ b/data/doom3.yaml
@@ -3,13 +3,12 @@
compress-deb: false
longname: 'Doom 3 (original or BFG Edition)'
try_repack_from: [/usr/local/share/dhewm3]
+engine: dhewm3-doom3
packages:
doom3-data:
longname: 'Doom 3'
copyright: © 2004 id Software
- debian:
- engine: dhewm3-doom3
steam:
id: 9050
install:
@@ -93,8 +92,7 @@ packages:
doom3bfg-data:
longname: 'Doom 3: BFG Edition'
copyright: © 2012 id Software
- debian:
- engine: rbdoom3bfg
+ engine: rbdoom3bfg
steam:
id: 208200
path: "common/DOOM 3 BFG Edition"
diff --git a/data/final-doom.yaml b/data/final-doom.yaml
index 72e3b74..de4502a 100644
--- a/data/final-doom.yaml
+++ b/data/final-doom.yaml
@@ -23,7 +23,6 @@ packages:
longname: "Final Doom: TNT: Evilution"
aliases: [tnt, t]
debian:
- engine: "chocolate-doom | doom-engine"
provides: doom-wad
conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)
install:
@@ -34,7 +33,6 @@ packages:
longname: "Final Doom: The Plutonia Experiment"
aliases: [plutonia, p]
debian:
- engine: "chocolate-doom | doom-engine"
provides: doom-wad
conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)
install:
diff --git a/data/hacx.yaml b/data/hacx.yaml
index d35dbe8..66da4bc 100644
--- a/data/hacx.yaml
+++ b/data/hacx.yaml
@@ -18,8 +18,6 @@ help_text: |
packages:
hacx-data:
overide_fill_docs: false
- debian:
- engine: "chocolate-doom | doom-engine"
install_to: usr/share/games/doom
install:
- hacx.wad
diff --git a/data/heretic.yaml b/data/heretic.yaml
index 34960db..01aa4a6 100644
--- a/data/heretic.yaml
+++ b/data/heretic.yaml
@@ -8,7 +8,7 @@ longname: "Heretic: Shadow of the Serpent Riders"
copyright: © 1994 Raven Software
plugin: doom_common
-doom_engine: heretic
+engine: "chocolate-doom | heretic-engine"
help_text: |
Please provide HERETIC.WAD from Heretic v1.3, and/or HERETIC1.WAD
@@ -25,16 +25,12 @@ packages:
steam:
id: 2390
path: "common/Heretic Shadow of the Serpent Riders"
- debian:
- engine: "chocolate-doom | heretic-engine"
install_to: usr/share/games/doom
install:
- heretic.wad
heretic-shareware-data:
longname: "Heretic (shareware)"
- debian:
- engine: "chocolate-doom | heretic-engine"
install_to: usr/share/games/doom
demo_for: heretic-wad
install:
diff --git a/data/hexen.yaml b/data/hexen.yaml
index 3faf506..4a6fb76 100644
--- a/data/hexen.yaml
+++ b/data/hexen.yaml
@@ -20,12 +20,10 @@ help_text: |
hexendemo.wad to avoid colliding with the full version of Hexen.
plugin: doom_common
-doom_engine: hexen
+engine: "chocolate-doom | hexen-engine"
packages:
hexen-wad:
- debian:
- engine: "chocolate-doom | hexen-engine"
steam:
id: 2360
path: "common/Hexen"
@@ -49,13 +47,9 @@ packages:
demo_for: hexen-wad
install:
- hexendemo.wad
- # this goes in the .desktop file...
- doom_engine: doomsday-compat
- # ... so we must have Recommends: doomsday. The other provider
- # of hexen-engine, chocolate-doom, can play the full game but not
- # the demo.
- debian:
- engine: doomsday
+ # The other provider of hexen-engine, chocolate-doom,
+ # can play the full game but not the demo.
+ engine: doomsday
files:
diff --git a/data/hexen2.yaml b/data/hexen2.yaml
index eee568b..8c5f971 100644
--- a/data/hexen2.yaml
+++ b/data/hexen2.yaml
@@ -3,6 +3,7 @@
shortname: hexen2
longname: Hexen II
copyright: © 1997 Raven Software
+engine: "uhexen2 | hexen2-engine"
help_text: |
For hexen2-data, you must provide the version 1.11 patched versions
@@ -23,7 +24,6 @@ packages:
longname: Hexen II (demo)
demo_for: hexen2-data
debian:
- engine: "uhexen2 | hexen2-engine"
conflicts: hexen2-data
install_to: usr/share/games/hexen2
install:
@@ -34,8 +34,6 @@ packages:
hexen2-data:
longname: Hexen II
- debian:
- engine: "uhexen2 | hexen2-engine"
steam:
id: 9060
path: "common/Hexen 2"
diff --git a/data/ja.yaml b/data/ja.yaml
index 8f8a089..c4e6253 100644
--- a/data/ja.yaml
+++ b/data/ja.yaml
@@ -8,6 +8,7 @@ copyright: © 2003 Activision, Inc. / LucasArts, a division of Lucasfilm Enterta
# alongside ~ 1.2 GiB of compressed zip files. xz can save 20 MiB,
# but that's less than 2% of the total size and takes 10 times as long.
compress_deb: false
+engine: openjk-academy | openjk-academy-server
steam:
id: 6020
@@ -34,7 +35,6 @@ packages:
jedi-academy-data:
debian:
version: '1.01'
- engine: openjk-academy | openjk-academy-server
install_files_from_cksums: |
# Jedi Academy CD1 GameData/GameData or installation
3585517488 561806019 base/assets0.pk3
diff --git a/data/jk2.yaml b/data/jk2.yaml
index a9cd801..2193508 100644
--- a/data/jk2.yaml
+++ b/data/jk2.yaml
@@ -3,6 +3,7 @@
shortname: jk2
longname: "Star Wars Jedi Knight II: Jedi Outcast"
copyright: © 2003 Activision, Inc. / LucasArts, a division of Lucasfilm Entertainment Company Ltd.
+engine: openjk-outcast
# Like Jedi Academy, there isn't much point in compressing this .deb.
compress_deb: false
@@ -27,7 +28,6 @@ packages:
jedi-outcast-data:
debian:
version: '1.04'
- engine: openjk-outcast
# cksums(1) is pretty useless as a checksumming tool, but it's a convenient
# way to get exact file sizes in bytes (second column), which are a nice
# heuristic for identifying files
diff --git a/data/lgeneral.yaml b/data/lgeneral.yaml
index 2ffe4fa..9708c7d 100644
--- a/data/lgeneral.yaml
+++ b/data/lgeneral.yaml
@@ -3,6 +3,7 @@
shortname: lgeneral
longname: LGeneral
copyright: © 1994 SSI Inc.
+engine: lgeneral
help_text: |
Data from Panzer General can be downloaded automatically.
@@ -19,8 +20,6 @@ packages:
# The actual game files are converted by lgc-pg, in Python code.
install:
- pg-data.tar.gz
- debian:
- engine: lgeneral
files:
pg-data.tar.gz:
diff --git a/data/quake.yaml b/data/quake.yaml
index c017319..7da4e58 100644
--- a/data/quake.yaml
+++ b/data/quake.yaml
@@ -2,6 +2,7 @@
---
longname: Quake
copyright: © 1996 id Software
+engine: quake | quake-server
help_text: |
For quake-registered, you must provide id1/pak1.pak or a directory
@@ -28,7 +29,6 @@ packages:
demo_for: quake-registered
longname: Quake (shareware)
debian:
- engine: quake | quake-server
provides: quake-data
install:
- id1/pak0.pak_106
@@ -38,7 +38,6 @@ packages:
quake-registered:
debian:
- engine: quake | quake-server
provides: quake-data
steam:
id: 2310
diff --git a/data/quake2.yaml b/data/quake2.yaml
index d76c793..5e534dc 100644
--- a/data/quake2.yaml
+++ b/data/quake2.yaml
@@ -3,6 +3,7 @@
longname: Quake II
copyright: © 1997 id Software
aliases: [q2rogue, q2xatrix]
+engine: quake2 | quake2-server
help_text: |
For quake2-full-data, you must provide baseq2/pak0.pak and the baseq2/video
@@ -27,7 +28,6 @@ packages:
quake2-full-data:
longname: Quake II
debian:
- engine: quake2 | quake2-server
replaces: quake2-data
steam:
id: 2320
@@ -204,8 +204,6 @@ packages:
quake2-demo-data:
longname: "Quake II (demo)"
demo_for: quake2-full-data
- debian:
- engine: quake2 | quake2-server
install_to_docdir:
- quake2_manual
install_contents_of:
diff --git a/data/quake3.yaml b/data/quake3.yaml
index fc2a7c2..10bdf7d 100644
--- a/data/quake3.yaml
+++ b/data/quake3.yaml
@@ -3,6 +3,7 @@
shortname: quake3
longname: Quake III Arena
copyright: © 1999 id Software
+engine: quake3 | quake3-server
compress_deb: false
try_repack_from:
# Older versions of g-d-p used this directory
@@ -32,8 +33,6 @@ help_text: |
packages:
quake3-data:
longname: Quake III Arena
- debian:
- engine: quake3 | quake3-server
steam:
id: 2200
path: "common/Quake 3 Arena"
@@ -154,10 +153,9 @@ packages:
quake3-demo-data:
longname: Quake III Arena (demo)
- debian:
- # deliberately no quake3-server alternative, I'm pretty sure it isn't
- # network-compatible with anything
- engine: quake3 (>= 10)
+ # deliberately no quake3-server alternative, I'm pretty sure it isn't
+ # network-compatible with anything
+ engine: quake3 (>= 10)
demo_for: quake3-data
install_to: usr/share/games/quake3-demo-data/demoq3
install:
diff --git a/data/rott.yaml b/data/rott.yaml
index bee608e..b2728db 100644
--- a/data/rott.yaml
+++ b/data/rott.yaml
@@ -3,6 +3,7 @@
shortname: rott
longname: Rise of the Triad
copyright: © 1995 Apogee Software
+engine: rott
steam:
id: 238050
@@ -14,7 +15,6 @@ packages:
# December 21, 1994
copyright: © 1994 Apogee Software
debian:
- engine: rott
replaces: rott (<< 1.1.1-4)
# this shareware data are considered a as full game because
# it includes the HUNT Begin levels not present in the commercial game
@@ -35,7 +35,6 @@ packages:
longname: "Rise of the Triad: Dark War"
debian:
depends: rott-data
- engine: rott
install_to: usr/share/games/rott
install:
- any_registered_rtc
diff --git a/data/rtcw.yaml b/data/rtcw.yaml
index 6e849c8..a590ead 100644
--- a/data/rtcw.yaml
+++ b/data/rtcw.yaml
@@ -3,6 +3,7 @@
shortname: rtcw
longname: Return to Castle Wolfenstein
copyright: © 2001 id Software, Inc. and Activision Publishing, Inc.
+engine: rtcw
# Like Jedi Academy, there isn't much point in compressing this .deb.
compress_deb: false
@@ -13,7 +14,6 @@ packages:
id: 9010
path: "common/Return to Castle Wolfenstein"
debian:
- engine: rtcw
# GDP version will be suffixed to this, e.g. : 1.42b+39
version: 1.42b
diff --git a/data/spear-of-destiny.yaml b/data/spear-of-destiny.yaml
index 39481f5..aa4d382 100644
--- a/data/spear-of-destiny.yaml
+++ b/data/spear-of-destiny.yaml
@@ -4,6 +4,7 @@ shortname: spear-of-destiny
aliases: [spear]
longname: "Spear of Destiny (Wolfenstein 3D prequel)"
copyright: © 1992 id Software
+engine: wolf4sdl
steam:
id: 9000
@@ -29,7 +30,6 @@ packages:
longname: "Spear of Destiny (shareware)"
demo_for: spear-of-destiny-data
debian:
- engine: wolf4sdl
provides: wolf3d-data
install_to: usr/share/games/wolf3d
install_files_from_cksums: |
@@ -47,7 +47,6 @@ packages:
spear-of-destiny-data:
longname: "Spear of Destiny (registered version, mission 1)"
debian:
- engine: wolf4sdl
provides: wolf3d-data
install_to: usr/share/games/wolf3d
install_files_from_cksums: |
diff --git a/data/strife.yaml b/data/strife.yaml
index 7675078..948582b 100644
--- a/data/strife.yaml
+++ b/data/strife.yaml
@@ -20,8 +20,6 @@ help_text: |
packages:
strife-data:
overide_fill_docs: false
- debian:
- engine: "chocolate-doom | doom-engine"
steam:
id: 317040
path: common/Strife
diff --git a/data/syndicate.yaml b/data/syndicate.yaml
index d308ad1..1f8cafd 100644
--- a/data/syndicate.yaml
+++ b/data/syndicate.yaml
@@ -4,13 +4,13 @@
try_repack_from: [/usr/share/games/freesynd/data]
copyright: © 1993 Bullfrog Productions
+engine: freesynd
+
packages:
syndicate-data:
install_to: usr/share/games/freesynd/data
# this should be engine-agnostic:
# usr/share/games/syndicate
- debian:
- engine: freesynd
install:
- col01.dat
- game01.dat
diff --git a/data/theme-hospital.yaml b/data/theme-hospital.yaml
index 656cd52..3dd8644 100644
--- a/data/theme-hospital.yaml
+++ b/data/theme-hospital.yaml
@@ -2,6 +2,7 @@
---
longname: Theme Hospital
copyright: © 1997 Bullfrog Productions
+engine: corsix-th
help_text: |
For the full version, provide a Theme Hospital installation,
@@ -19,7 +20,6 @@ packages:
install_to: usr/share/games/theme-hospital
debian:
conflicts: theme-hospital-demo-data
- engine: corsix-th
optional:
# documentation
- EN.pdf
@@ -491,7 +491,6 @@ packages:
install_to: usr/share/games/theme-hospital
demo_for: theme-hospital-full-data
debian:
- engine: corsix-th
conflicts: theme-hospital-full-data
install:
- anims/winlevel.smk_demo
diff --git a/data/tyrian.yaml b/data/tyrian.yaml
index 479d4f7..040bec0 100644
--- a/data/tyrian.yaml
+++ b/data/tyrian.yaml
@@ -2,6 +2,7 @@
---
shortname: tyrian
copyright: © 1995 Epic MegaGames
+engine: opentyrian
help_text: |
The full version of Tyrian can be downloaded at no cost.
@@ -10,8 +11,6 @@ help_text: |
packages:
tyrian-data:
- debian:
- engine: opentyrian
# there are two identical files in the zip
symlinks:
usr/share/games/tyrian/netset.pcx: usr/share/games/tyrian/tyrset.pcx
diff --git a/data/wolf3d.yaml b/data/wolf3d.yaml
index da042f9..8239dd1 100644
--- a/data/wolf3d.yaml
+++ b/data/wolf3d.yaml
@@ -2,6 +2,7 @@
---
longname: Wolfenstein 3D
copyright: © 1992 Apogee
+engine: wolf4sdl
packages:
wolf3d-demo-data:
@@ -10,7 +11,6 @@ packages:
- wolf3d-full-v14-data
longname: Wolfenstein 3D (demo)
debian:
- engine: wolf4sdl
provides: wolf3d-data
replaces: wolf3d-data-wl1
install_to: usr/share/games/wolf3d
@@ -30,7 +30,6 @@ packages:
longname: Wolfenstein 3D v1.2
better_version: wolf3d-full-v14-data
debian:
- engine: wolf4sdl
provides: wolf3d-data
conflicts: wolf3d-full-v14-data
install_to: usr/share/games/wolf3d
@@ -47,7 +46,6 @@ packages:
wolf3d-full-v14-data:
longname: Wolfenstein 3D v1.4
debian:
- engine: wolf4sdl
provides: wolf3d-data
conflicts: wolf3d-full-v12-data
steam:
diff --git a/doc/adding_a_game.mdwn b/doc/adding_a_game.mdwn
index fc51f0d..1faa714 100644
--- a/doc/adding_a_game.mdwn
+++ b/doc/adding_a_game.mdwn
@@ -17,6 +17,7 @@ which should get you easily started.
III Arena.
* `copyright`: string: © <year_of_first_release> <developper/publisher>
This should match the title screen of the game, if any.
+* `engine`: string: package name that contain the program needed to run the game.
* `compress_deb`: boolean, default true: If false, the `.deb` will never be
compressed. Use this if it contains non-compressible files (e.g. `*.pk3`
which are zip files) for which `xz` will waste a lot of time and
@@ -101,6 +102,7 @@ to mapping:
Quake III Team Arena for Quake III Arena.
* `install`: list of strings: unique names of known files or alternative
sets to install
+* `engine`: let you overide the engine in special cases
### Step 2: required files for the `.deb`
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index bdbefef..20eb0f9 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -353,6 +353,9 @@ class GameDataPackage(object):
# Steam ID and path
self.steam = {}
+ # overide the game engine when needed
+ self.engine = None
+
# depedency information needed to build the debian/control file
self.debian = {}
@@ -450,6 +453,9 @@ class GameData(object):
# The one-line copyright notice used to build debian/copyright
self.copyright = None
+ # The game engine used to run the game (package name)
+ self.engine = None
+
# A temporary directory.
self.workdir = workdir
@@ -482,7 +488,7 @@ class GameData(object):
self.argument_parser = None
for k in ('longname', 'copyright', 'compress_deb', 'help_text',
- 'steam'):
+ 'steam','engine'):
if k in self.yaml:
setattr(self, k, self.yaml[k])
@@ -730,7 +736,7 @@ class GameData(object):
for k in ('expansion_for', 'longname', 'symlinks', 'install_to',
'install_to_docdir', 'install_contents_of', 'steam', 'debian',
'rip_cd', 'architecture', 'aliases', 'better_version',
- 'copyright'):
+ 'copyright', 'engine'):
if k in d:
setattr(package, k, d[k])
@@ -1803,11 +1809,11 @@ class GameData(object):
if package.expansion_for:
depends.add(package.expansion_for)
- engine = package.debian.get('engine')
- assert engine is None or not package.expansion_for, \
- 'An expansion will inherit the engine of the full game'
- if engine:
- recommends.add(engine)
+
+ if package.engine:
+ recommends.add(package.engine)
+ elif not package.expansion_for and self.engine:
+ recommends.add(self.engine)
for other_package in self.packages.values():
if other_package.expansion_for == package.name:
suggests.add(other_package.name)
@@ -1867,6 +1873,8 @@ class GameData(object):
else:
long_desc += ' Game: ' + longname
+ engine = package.engine or self.engine
+ engine = engine.split('|')[0].strip()
if engine:
long_desc += '\n .\n'
long_desc += ' Intended for use with: ' + engine
@@ -2028,7 +2036,7 @@ class GameData(object):
engines = set()
for package in ready:
- engine = package.debian.get('engine')
+ engine = package.engine or self.engine
if not engine:
continue
engine = engine.split('|')[0].strip()
diff --git a/game_data_packager/games/doom_common.py b/game_data_packager/games/doom_common.py
index 06cdc8b..3d6b2e1 100644
--- a/game_data_packager/games/doom_common.py
+++ b/game_data_packager/games/doom_common.py
@@ -2,6 +2,7 @@
# encoding=utf-8
#
# Copyright © 2015 Simon McVittie <smcv at debian.org>
+# 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
@@ -33,8 +34,6 @@ class WadPackage(GameDataPackage):
def __init__(self, name):
super(WadPackage, self).__init__(name)
- self.engine = None
-
@property
def main_wad(self):
for f in self.install:
@@ -75,14 +74,21 @@ class DoomGameData(GameData):
def __init__(self, shortname, yaml_data, workdir=None):
super(DoomGameData, self).__init__(shortname, yaml_data,
workdir=workdir)
+ if self.engine is None:
+ self.engine = "chocolate-doom | doom-engine"
- self.engine = self.yaml.get('doom_engine', 'doom')
+ package_map = {
+ 'doom-engine': 'doom',
+ 'heretic-engine': 'heretic',
+ 'hexen-engine': 'hexen',
+ 'doomsday': 'doomsday-compat',
+ }
for package in self.packages.values():
assert package.main_wad is not None
-
- package.engine = self.yaml['packages'][package.name].get(
- 'doom_engine')
+ engine = package.engine or self.engine
+ engine = engine.split('|')[-1].strip()
+ package.program = package_map.get(engine, engine)
package.create_desktop_file = self.yaml['packages'][package.name].get(
'create_desktop_file', True)
package.overide_fill_docs = self.yaml['packages'][package.name].get(
@@ -106,7 +112,7 @@ class DoomGameData(GameData):
wad_base = os.path.splitext(package.main_wad)[0]
desc = control['Description']
- desc = desc.replace('ENGINE', (package.engine or self.engine))
+ desc = desc.replace('ENGINE', package.program)
desc = desc.replace('GAME', wad_base)
desc = desc.replace('LONG', (package.longname or self.longname))
control['Description'] = desc
@@ -175,7 +181,7 @@ class DoomGameData(GameData):
entry = desktop['Desktop Entry']
entry['Name'] = package.longname or self.longname
entry['GenericName'] = 'First Person Shooter Game'
- entry['TryExec'] = engine = package.engine or self.engine
+ entry['TryExec'] = package.program
if package.expansion_for:
for f in self.packages[package.expansion_for].install:
if f.endswith('.wad'):
@@ -187,7 +193,7 @@ class DoomGameData(GameData):
+ ' -file /usr/share/games/doom/' + main_wad)
else:
args = '-iwad /usr/share/games/doom/' + main_wad
- entry['Exec'] = engine + ' ' + args
+ entry['Exec'] = package.program + ' ' + args
entry['Icon'] = wad_base
entry['Terminal'] = 'false'
entry['Type'] = 'Application'
diff --git a/game_data_packager/games/residualvm_common.py b/game_data_packager/games/residualvm_common.py
index dd91991..0aee4e3 100644
--- a/game_data_packager/games/residualvm_common.py
+++ b/game_data_packager/games/residualvm_common.py
@@ -32,10 +32,8 @@ class ResidualvmGameData(GameData):
self.gameid = self.yaml['gameid']
- def modify_control_template(self, control, package, destdir):
- if 'engine' not in package.debian:
- package.debian['engine'] = 'residualvm'
- super(ResidualvmGameData, self).modify_control_template(control, package, destdir)
+ if self.engine is None:
+ self.engine = 'residualvm'
def fill_extra_files(self, package, destdir):
super(ResidualvmGameData, self).fill_extra_files(package, destdir)
diff --git a/game_data_packager/games/scummvm_common.py b/game_data_packager/games/scummvm_common.py
index 7746607..af59e5f 100644
--- a/game_data_packager/games/scummvm_common.py
+++ b/game_data_packager/games/scummvm_common.py
@@ -32,10 +32,8 @@ class ScummvmGameData(GameData):
self.gameid = self.yaml['gameid']
- def modify_control_template(self, control, package, destdir):
- if 'engine' not in package.debian:
- package.debian['engine'] = 'scummvm'
- super(ScummvmGameData, self).modify_control_template(control, package, destdir)
+ if self.engine is None:
+ self.engine = 'scummvm'
def fill_extra_files(self, package, destdir):
super(ScummvmGameData, self).fill_extra_files(package, destdir)
--
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