Xref: feenix.metronet.com alt.games.xpilot:721
Path: feenix.metronet.com!news.utdallas.edu!wupost!howland.reston.ans.net!pipex!uunet!ncd.com!newshost.ncd.com!hansen!greg
From: [email protected] (Greg Renda)
Newsgroups: alt.games.xpilot
Subject: maptoppm
Date: 25 Sep 1993 02:02:57 GMT
Organization: Network Computing Devices Inc., Mt. View, CA, USA
Lines: 122
Distribution: world
Message-ID: <[email protected]>
NNTP-Posting-Host: hansen.ncd.com

Here's a perl script to convert map files to ppm format.  This lets
you browse maps without having to run xpilot or the map editor.  Of
course you'll need the pbm utilities as well.  I use it with the
following simple script:

       maptoppm < $1 | pnmenlarge 2 | pnmtoxwd | xwud

The colors are as follows:

       space - black
       walls - gray
       fuel - red
       cannon - white
       bases - blue

       left gravity - green
       right gravity - green
       positive gravity - cyan
       negative gravity - magenta

       two-way wormhole - yellow
       in wormhole - orange
       out wormhole - pink

Enjoy!

-Greg

#!/usr/local/bin/perl -- # -*-Perl-*-

$black='0 0 0';
$white='255 255 255';
$gray='128 128 128';

$red='255 0 0';
$green='0 255 0';
$blue='0 0 255';

$yellow='255 255 0';
$magenta='255 0 255';
$cyan='0 255 255';

$orange='255 165 0';
$pink='255 192 203';

$wall='xswqa';
$space=' ';
$fuel='#';
$cannon='rdfc';
$base='_*';
$gravLeft='<';
$gravRight='>';
$gravPlus='+';
$gravMinus='\-';
$gravity=$gravLeft.$gravRight.$gravPlus.$gravMinus;

$wormbi='@';
$wormin='(';
$wormout=')';
$wormhole=$wormbi.$wormin.$wormout;

$symbols=$wall.$fuel.$cannon.$gravity.$wormhole.$base;

while (<>)
{
   ($lower = $_) =~ tr/[A-Z]/[a-z]/;

   if ($lower =~ /^mapwidth/)
   {
       s/\s//g;
       ($dummy, $width) = split(/:/);
       next;
   }

   if ($lower =~ /^mapheight/)
   {
       s/\s//g;
       ($dummy, $height) = split(/:/);
       next;
   }

   if (!$data)
   {
       if ($data = $lower =~ /^mapdata/)
       {
           s/\s//g;
           ($dummy, $dummy, $end) = split(/:/);
           print "P3\n$width $height\n255\n"
       }
       next;
   }

   last if /^$end/;

   chop;

   s/[^$symbols]/ /g;          # get rid characters we don't care about

   s/[$space]/$black /g;
   s/[$wall]/$gray /g;
   s/[$fuel]/$red /g;
   s/[$cannon]/$white /g;
   s/[$base]/$blue /g;

   s/[$gravLeft]/$green /g;
   s/[$gravRight]/$green /g;
   s/[$gravPlus]/$cyan /g;
   s/[$gravMinus]/$magenta /g;

   s/[$wormbi]/$yellow /g;
   s/[$wormin]/$orange /g;
   s/[$wormout]/$pink /g;

   print "$_\n";
}

--

Greg Renda
Network Computing Devices Inc.          Phone: (415) 691-2564
350 North Bernardo Avenue                 FAX: (415) 961-6289
Mountain View, CA  94043                Email: [email protected]