--- cfmaps/cfmap2html 2005/11/20 00:58:57 1.9 +++ cfmaps/cfmap2html 2005/12/26 12:15:11 1.22 @@ -17,6 +17,8 @@ # along with gvpe; if not, write to the Free Software # Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +our $VERSION = '1.211'; + use Storable; my $LIBDIR = $ENV{CROSSFIRE_LIBDIR} @@ -26,10 +28,6 @@ my $arch; -umask 022; - -our $VERSION = '1.04'; - sub escape_html($) { local $_ = shift; s/([<>&])/sprintf "&#%d;", ord $1/ge; @@ -51,95 +49,90 @@ $arch ||= Storable::retrieve "$LIBDIR/archetypes.pst"; my $meta = Storable::retrieve "$path.pst"; - open my $fh, ">:utf8", "$path.html" - or die "$path.html: $!"; + open my $fh, ">:utf8", "$path.xhtml" + or die "$path.xhtml: $!"; select $fh; my $W = $meta->{width} * $T; my $H = $meta->{height} * $T; + my $W2 = $W + 600; + my (@path) = split /\//, $path; - print "", - "", + print "", + '', + "", "", "Crossfire Map \"$path\"", - "", + "\n", + "\n", + "\n", + "", "", ""; print "", - "", "", "", - "", + "", "", "", ""; my $W1 = $W + 600; - print "

", + print "

", escape_html $meta->{info}{msg}, "

"; print ""; my %ignore = map +($_ => 1), qw(name _name x y); + my %is_exit = map +($_ => 1), 41, 57, 66; for my $y (0.. $meta->{height} - 1) { print ""; for my $x (0.. $meta->{width} - 1) { - print ""; + } else { + print ""; } print ""; } - my $W2 = $W + 600; - - print "
"; if (my $as = $meta->{map}[$x][$y]) { - print "
($x|$y)"; + my @class; + + push @class, "fishy" if grep $_->{invisible} || $_->{face} || exists $_->{no_pass} || exists $_->{no_pick}, @$as; + push @class, "exit" if grep $is_exit{$arch->{$_->{_name}}{type}} && $_->{slaying}, @$as; + push @class, "dialog" if grep $_->{msg} =~ /^\@match/m, @$as; + + print ""; + print "
"; + + print join "\n", map "$_", + reverse sort { (length $a) <=> (length $b) or $b <=> $a } + grep $_, map $_->{connected}, @$as; + + print "
($x|$y)"; sub print_archs { print "
    "; @@ -149,18 +142,18 @@ my $aname = escape_html $a->{_name}; my $name = escape_html $a->{name} || $o->{name}; - print "
  • $aname \"$name\"\n"; + print "
  • $aname \"$name\"\n"; for (sort keys %$a) { next if $ignore{$_}; my $v = escape_html $a->{$_}; - if (($type == 66 || $type == 41) && $_ eq "slaying") { # door, teleporter + if ($_ eq "slaying" && $is_exit{$type}) { # door, teleporter, player_changer $a->{msg} =~ /^final_map\s*(\S+)\s*$/m, $v = $1 if $v eq "/!"; # random map - print "slaying => $v\n"; + print "slaying => $v\n"; } elsif ($_ eq "other_arch") { - print "$_ => $v\n"; + print "$_ => $v\n"; } elsif ($_ eq "inventory") { print "inventory =>\n"; print_archs ($a->{$_}); @@ -176,20 +169,19 @@ } print_archs $as; - print "
"; + print "
"; } - print "

created by cfmap2html version $VERSION

", - "

"; + print "

", + "

"; close $fh; - system "gzip", "-7f", "$path.html"; + #system "gzip", "-7f", "$path.xhtml"; }