[game-data-packager] 01/06: add laucher for doom2 master levels

Alexandre Detiste detiste-guest at moszumanska.debian.org
Tue Feb 17 11:18:14 UTC 2015


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

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

commit 510f5d0b79a4616848ec8d1cf0b00d080bc209cc
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Mon Feb 2 01:17:53 2015 +0100

    add laucher for doom2 master levels
    
    this needs a .desktop file
---
 game_data_packager/doom2-masterlevels.py | 165 +++++++++++++++++++++++++++++++
 1 file changed, 165 insertions(+)

diff --git a/game_data_packager/doom2-masterlevels.py b/game_data_packager/doom2-masterlevels.py
new file mode 100755
index 0000000..71c4b8f
--- /dev/null
+++ b/game_data_packager/doom2-masterlevels.py
@@ -0,0 +1,165 @@
+#!/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 gi
+import glob
+import os
+import subprocess
+
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+
+map = None
+exceptions = {
+    'blacktwr.wad': 25,
+    'bloodsea.wad':  7,
+    'geryon.wad':    8,
+    'mephisto.wad':  7,
+    'minos.wad':     5,
+    'nessus.wad':    7,
+    'teeth.wad':    31, # + 32
+    'vesperas.wad':  9,
+    'virgil.wad':    3,
+}
+
+window = Gtk.Window()
+window.set_default_size(1000, 800)
+window.connect("destroy", lambda q: Gtk.main_quit())
+
+grid = Gtk.Grid()
+grid.set_row_spacing(5)
+grid.set_column_spacing(5)
+window.add(grid)
+
+# level list
+games = Gtk.ListStore(str, int)
+description = dict()
+for wad in sorted(glob.glob('/usr/share/doc/doom2-masterlevels-wad/*.txt')):
+     game = os.path.splitext(os.path.basename(wad))[0]
+     games.append([game, exceptions.get(game + '.wad', 1)])
+     with open(wad, 'r', encoding='latin1') as f:
+         description[game] = f.read()
+
+treeview = Gtk.TreeView(model=games)
+grid.attach(treeview, 0, 0, 1, 6)
+
+treeviewcolumn = Gtk.TreeViewColumn("Wad")
+treeview.append_column(treeviewcolumn)
+cellrenderertext = Gtk.CellRendererText()
+treeviewcolumn.pack_start(cellrenderertext, True)
+treeviewcolumn.add_attribute(cellrenderertext, "text", 0)
+
+treeviewcolumn = Gtk.TreeViewColumn("Map")
+treeview.append_column(treeviewcolumn)
+cellrenderertext = Gtk.CellRendererText()
+treeviewcolumn.pack_start(cellrenderertext, True)
+treeviewcolumn.add_attribute(cellrenderertext, "text", 1)
+
+# header
+label = Gtk.Label()
+label.set_markup("<span size='xx-large'>Doom II Master Levels</span>")
+grid.attach(label, 1, 0, 1, 1)
+
+logo = Gtk.Image()
+logo.set_from_file('/usr/share/games/game-data-packager/doom2.png')
+grid.attach(logo, 2, 0, 1, 1)
+
+# description
+scrolledwindow = Gtk.ScrolledWindow()
+scrolledwindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+grid.attach(scrolledwindow, 1, 1, 2, 1)
+
+textbuffer = Gtk.TextBuffer()
+textbuffer.set_text('Please select a map from the list on the left')
+
+textview = Gtk.TextView(buffer=textbuffer)
+textview.set_vexpand(True)
+textview.set_hexpand(True)
+textview.set_property('editable', False)
+scrolledwindow.add(textview)
+
+# difficulty
+difflabel = Gtk.Label("Choose your difficulty")
+grid.attach(difflabel, 1, 2, 2, 1)
+
+diffgrid = Gtk.Grid()
+diffradio = Gtk.RadioButton(group=None, label="1)  I'm too young to die")
+diffgrid.attach(diffradio, 0, 0, 1, 1)
+for diff in ["2)  Hey, Not too Rough",
+             "3)  Hurt me plenty",
+             "4)  Ultra Violence",
+             "5)  Nightmare!"]:
+    radiobutton = Gtk.RadioButton(group=diffradio, label=diff)
+    if diff[0] == '3':
+        radiobutton.set_active(True)
+    diffgrid.attach(radiobutton, 0, int(diff[0]), 1, 1)
+grid.attach(diffgrid, 1, 3, 2, 1)
+
+# engine
+label = Gtk.Label("Choose your engine")
+grid.attach(label, 1, 4, 2, 1)
+radiogrid = Gtk.Grid()
+default = os.readlink('/etc/alternatives/doom')
+radiobuttonDefault = Gtk.RadioButton(group=None, label="%s (default)" % default)
+radiogrid.attach(radiobuttonDefault, 0, 0, 1, 1)
+i = 1
+proc = subprocess.Popen(['update-alternatives', '--list', 'doom'], stdout=subprocess.PIPE, universal_newlines=True)
+
+for alternative in proc.stdout:
+    alternative = alternative.strip()
+    if alternative == default:
+        continue
+    radiobutton = Gtk.RadioButton(group=radiobuttonDefault, label=alternative)
+    i += 1
+    radiogrid.attach(radiobutton, 0, i, i, 1)
+grid.attach(radiogrid, 1, 5, 2, 1)
+
+
+# Run !
+button1 = Gtk.Button(label="Run")
+grid.attach(button1, 1, 6, 1, 1)
+button2 = Gtk.Button(label="Exit")
+grid.attach(button2, 2, 6, 1, 1)
+
+def select_game(event):
+    global game, map
+    (model, pathlist) = treeview.get_selection().get_selected_rows()
+    for path in pathlist:
+        tree_iter = model.get_iter(path)
+        game = model.get_value(tree_iter,0)
+        map = model.get_value(tree_iter,1)
+        textbuffer.set_text(description[game])
+
+def run_game(event):
+    for button in diffradio.get_group():
+        if button.get_active():
+            difficulty = button.get_label()[0]
+            break
+    for button in radiobuttonDefault.get_group():
+        if button.get_active():
+            engine = button.get_label().split(' ')[0]
+            break
+    if map:
+        os.system('%s -file /usr/share/games/doom/%s.wad -warp %s -skill %s' % (engine, game, map, difficulty))
+
+treeview.connect("cursor-changed", select_game)
+button1.connect("clicked", run_game)
+button2.connect("clicked", Gtk.main_quit)
+
+window.show_all()
+
+Gtk.main()

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