summaryrefslogtreecommitdiff
path: root/apps/plugins/puzzles/desktop.pl
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2016-11-20 15:16:41 -0500
committerFranklin Wei <me@fwei.tk>2016-12-18 18:13:22 +0100
commit1a6a8b52f7aa4e2da6f4c34a0c743c760b8cfd99 (patch)
tree8e7f2d6b0cbdb5d15c13457b2c3e1de69f598440 /apps/plugins/puzzles/desktop.pl
parent3ee79724f6fb033d50e26ef37b33d3f8cedf0c5b (diff)
downloadrockbox-1a6a8b52f7aa4e2da6f4c34a0c743c760b8cfd99.tar.gz
rockbox-1a6a8b52f7aa4e2da6f4c34a0c743c760b8cfd99.zip
Port of Simon Tatham's Puzzle Collection
Original revision: 5123b1bf68777ffa86e651f178046b26a87cf2d9 MIT Licensed. Some games still crash and others are unplayable due to issues with controls. Still need a "real" polygon filling algorithm. Currently builds one plugin per puzzle (about 40 in total, around 100K each on ARM), but can easily be made to build a single monolithic overlay (800K or so on ARM). The following games are at least partially broken for various reasons, and have been disabled on this commit: Cube: failed assertion with "Icosahedron" setting Keen: input issues Mines: weird stuff happens on target Palisade: input issues Solo: input issues, occasional crash on target Towers: input issues Undead: input issues Unequal: input and drawing issues (concave polys) Untangle: input issues Features left to do: - In-game help system - Figure out the weird bugs Change-Id: I7c69b6860ab115f973c8d76799502e9bb3d52368
Diffstat (limited to 'apps/plugins/puzzles/desktop.pl')
-rwxr-xr-xapps/plugins/puzzles/desktop.pl52
1 files changed, 52 insertions, 0 deletions
diff --git a/apps/plugins/puzzles/desktop.pl b/apps/plugins/puzzles/desktop.pl
new file mode 100755
index 0000000000..204c0ce262
--- /dev/null
+++ b/apps/plugins/puzzles/desktop.pl
@@ -0,0 +1,52 @@
1#!/usr/bin/perl
2
3# Make .desktop files for the puzzles.
4#
5# At present, this script is intended for developer usage: if you're
6# working on the puzzles and want to play your bleeding-edge locally
7# modified and compiled versions, run this script and it will create a
8# collection of desktop files in ~/.local/share/applications where
9# XFCE can pick them up and add them to its main menu. (Be sure to run
10# 'xfdesktop --reload' after running this.)
11#
12# (If you don't use XFCE, patches to support other desktop
13# environments are welcome :-)
14
15use strict;
16use warnings;
17use Cwd 'abs_path';
18
19die "usage: desktop.pl [<outdir> [<bindir> <icondir>]]\n"
20 unless @ARGV == 0 or @ARGV == 1 or @ARGV == 3;
21
22my ($outdir, $bindir, $icondir) = @ARGV;
23$outdir = $ENV{'HOME'}."/.local/share/applications" unless defined $outdir;
24$bindir = "." unless defined $bindir;
25$icondir = "./icons" unless defined $icondir;
26$bindir = abs_path($bindir);
27$icondir = abs_path($icondir);
28
29open my $desc, "<", "gamedesc.txt"
30 or die "gamedesc.txt: open: $!\n";
31
32while (<$desc>) {
33 chomp;
34 my ($id, $win, $displayname, $description, $summary) = split /:/, $_;
35
36 open my $desktop, ">", "$outdir/$id.desktop"
37 or die "$outdir/$id.desktop: open: $!\n";
38
39 print $desktop "[Desktop Entry]\n";
40 print $desktop "Version=1.0\n";
41 print $desktop "Type=Application\n";
42 print $desktop "Name=$displayname\n";
43 print $desktop "Comment=$description\n";
44 print $desktop "Exec=$bindir/$id\n";
45 print $desktop "Icon=$icondir/$id-48d24.png\n";
46 print $desktop "StartupNotify=false\n";
47 print $desktop "Categories=Game;\n";
48 print $desktop "Terminal=false\n";
49
50 close $desktop
51 or die "$outdir/$id.desktop: close: $!\n";
52}