ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cfmaps/cfmap2html
(Generate patch)

Comparing cfmaps/cfmap2html (file contents):
Revision 1.32 by root, Sun Jan 6 21:12:00 2008 UTC vs.
Revision 1.37 by root, Sat Oct 31 17:26:44 2009 UTC

1#!/opt/bin/perl 1#!/opt/bin/perl
2 2
3# cfmap2html - convert deliantra maps to html 3# cfmap2html - convert deliantra maps to html
4# Copyright (C) 2005,2007,2008 Marc Lehmann <cfmaps@schmorp.de> 4# Copyright (C) 2005,2007,2008,2009 Marc Lehmann <cfmaps@schmorp.de>
5# 5#
6# CFMAP2HTML is free software; you can redistribute it and/or modify 6# CFMAP2HTML is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by 7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2 of the License, or 8# the Free Software Foundation; either version 2 of the License, or
9# (at your option) any later version. 9# (at your option) any later version.
15# 15#
16# You should have received a copy of the GNU General Public License 16# You should have received a copy of the GNU General Public License
17# along with cfmaps; if not, write to the Free Software 17# along with cfmaps; if not, write to the Free Software
18# Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18# Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 19
20our $VERSION = '2.11'; 20our $VERSION = '2.2';
21 21
22use strict; 22use strict;
23 23
24use List::Util qw(min max); 24use List::Util qw(min max);
25use Deliantra; 25use Deliantra;
40 40
41 if (!-e "$base.png" 41 if (!-e "$base.png"
42 || -M "$base.png" > -M "$base.map") { 42 || -M "$base.png" > -M "$base.map") {
43 # regenerate png and metainfo 43 # regenerate png and metainfo
44 push @cfmap2png, $path; 44 push @cfmap2png, $path;
45 # force xhtml file to be remade as well
46 utime 1, 1, "$base.xhtml";
45 } 47 }
46} 48}
47 49
48system "cfmap2png", @cfmap2png 50system "cfmap2png", @cfmap2png
49 if @cfmap2png; 51 if @cfmap2png;
52
53Deliantra::load_archetypes;
50 54
51for my $path (@ARGV) { 55for my $path (@ARGV) {
52 (my $base = $path) =~ s/\.map//; 56 (my $base = $path) =~ s/\.map//;
53 if (!-e "$base.xhtml" 57 if (!-e "$base.xhtml"
54 || -M "$base.xhtml" > -M "$base.map") { 58 || -M "$base.xhtml" > -M "$base.map") {
55 59
56 Deliantra::load_archetypes
57 unless %ARCH;
58
59 my $meta = read_arch "$base.map"; 60 my $meta = eval { read_arch "$base.map" }
61 or next;
60 my $arch = $meta->{arch}; 62 my $arch = $meta->{arch};
61 63
62 open my $fh, ">:utf8", "$base.xhtml" 64 open my $fh, ">:utf8", "$base.xhtml"
63 or die "$base.xhtml: $!"; 65 or die "$base.xhtml: $!";
64 66
124 126
125 print "<p class='m'>", 127 print "<p class='m'>",
126 escape_html delete $info->{msg}, 128 escape_html delete $info->{msg},
127 "</p>"; 129 "</p>";
128 130
131 if (open my $fh, "<", "$base.png.err") {
132 local $/;
129 print "<p class='i'><table>", 133 print "<p class='m'>",
134 (escape_html scalar <$fh>),
135 "</p>";
136 }
137
138 print "<table class='i'>",
130 (map "<tr><td>" . (escape_html $_) . "</td><td>" . (escape_html $info->{$_}) . "</td></tr>", 139 (map "<tr><td>" . (escape_html $_) . "</td><td>" . (escape_html $info->{$_}) . "</td></tr>",
131 grep !/^_/, keys %$info), 140 grep !/^_/, keys %$info),
132 "</table></p>"; 141 "</table>",
142 "<p />";
133 143
134 print "<table class='map'>"; 144 print "<table class='map'>";
135 145
136 my %ignore = map +($_ => 1), qw(name _name _atype x y); 146 my %ignore = map +($_ => 1), qw(name _name _atype x y);
137 my %is_exit = map +($_ => 1), 41, 57, 66; 147 my %is_exit = map +($_ => 1), 41, 57, 66;
155 165
156 print "<div>($x|$y)"; 166 print "<div>($x|$y)";
157 167
158 sub print_archs { 168 sub print_archs {
159 print "<ul>"; 169 print "<ul>";
160 for my $a (@{$_[0]}) { 170 for my $a (reverse @{$_[0]}) {
161 my $o = $ARCH{$a->{_name}}; 171 my $o = $ARCH{$a->{_name}};
162 my $type = $a->{type} || $o->{type}; 172 my $type = $a->{type} || $o->{type};
163 my $aname = escape_html $a->{_name}; 173 my $aname = escape_html $a->{_name};
164 my $name = escape_html $a->{name} || $o->{name}; 174 my $name = escape_html $a->{name} || $o->{name};
165 175
170 180
171 if ($_ eq "slaying" && $is_exit{$type}) { # door, teleporter, player_changer 181 if ($_ eq "slaying" && $is_exit{$type}) { # door, teleporter, player_changer
172 $a->{msg} =~ /^final_map\s*(\S+)\s*$/m, $v = $1 182 $a->{msg} =~ /^final_map\s*(\S+)\s*$/m, $v = $1
173 if $v eq "/!"; # random map 183 if $v eq "/!"; # random map
174 184
185 if ($v =~ s/^\*//) {
186 print "slaying => <a href='/search?t=$v'>*$v</a>\n";
187 } else {
175 print "slaying => <a href='$v.xhtml'>$v</a>\n"; 188 print "slaying => <a href='$v.xhtml'>$v</a>\n";
189 }
176 } elsif ($_ eq "other_arch") { 190 } elsif ($_ eq "other_arch") {
177 print "$_ => <a href='/a/$a->{$_}'>$v</a>\n"; 191 print "$_ => <a href='/a/$a->{$_}'>$v</a>\n";
178 } elsif ($_ eq "inventory") { 192 } elsif ($_ eq "inventory") {
179 print "inventory =>\n"; 193 print "inventory =>\n";
180 print_archs ($a->{$_}); 194 print_archs ($a->{$_});

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines