[game-data-packager] 01/06: add laucher for doom2 master levels
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Thu Jun 30 06:49:09 UTC 2016
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