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

Comparing cfmaps/cfmap2html (file contents):
Revision 1.33 by root, Wed Sep 10 10:46:12 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.111'; 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 $/;
133 print "<p class='m'>",
134 (escape_html scalar <$fh>),
135 "</p>";
136 }
137
129 print "<table class='i'>", 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>", 141 "</table>",
133 "<p />"; 142 "<p />";
156 165
157 print "<div>($x|$y)"; 166 print "<div>($x|$y)";
158 167
159 sub print_archs { 168 sub print_archs {
160 print "<ul>"; 169 print "<ul>";
161 for my $a (@{$_[0]}) { 170 for my $a (reverse @{$_[0]}) {
162 my $o = $ARCH{$a->{_name}}; 171 my $o = $ARCH{$a->{_name}};
163 my $type = $a->{type} || $o->{type}; 172 my $type = $a->{type} || $o->{type};
164 my $aname = escape_html $a->{_name}; 173 my $aname = escape_html $a->{_name};
165 my $name = escape_html $a->{name} || $o->{name}; 174 my $name = escape_html $a->{name} || $o->{name};
166 175
171 180
172 if ($_ eq "slaying" && $is_exit{$type}) { # door, teleporter, player_changer 181 if ($_ eq "slaying" && $is_exit{$type}) { # door, teleporter, player_changer
173 $a->{msg} =~ /^final_map\s*(\S+)\s*$/m, $v = $1 182 $a->{msg} =~ /^final_map\s*(\S+)\s*$/m, $v = $1
174 if $v eq "/!"; # random map 183 if $v eq "/!"; # random map
175 184
185 if ($v =~ s/^\*//) {
186 print "slaying => <a href='/search?t=$v'>*$v</a>\n";
187 } else {
176 print "slaying => <a href='$v.xhtml'>$v</a>\n"; 188 print "slaying => <a href='$v.xhtml'>$v</a>\n";
189 }
177 } elsif ($_ eq "other_arch") { 190 } elsif ($_ eq "other_arch") {
178 print "$_ => <a href='/a/$a->{$_}'>$v</a>\n"; 191 print "$_ => <a href='/a/$a->{$_}'>$v</a>\n";
179 } elsif ($_ eq "inventory") { 192 } elsif ($_ eq "inventory") {
180 print "inventory =>\n"; 193 print "inventory =>\n";
181 print_archs ($a->{$_}); 194 print_archs ($a->{$_});

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines