wileymud-1.187b/
wileymud-1.187b/attic/
wileymud-1.187b/attic/bin/
wileymud-1.187b/attic/lib/
wileymud-1.187b/attic/lib/adm/
wileymud-1.187b/attic/lib/man/
wileymud-1.187b/attic/lib/new-wld/
wileymud-1.187b/attic/lib/new-wld/default/
wileymud-1.187b/attic/lib/old/
wileymud-1.187b/attic/lib/wld/
wileymud-1.187b/attic/public_html/
wileymud-1.187b/attic/public_html/gfx/
wileymud-1.187b/attic/src/bin/
wileymud-1.187b/attic/src/etc/
wileymud-1.187b/attic/src/libauth-4.0-p5/
wileymud-1.187b/attic/src/sedna/
wileymud-1.187b/backups/
wileymud-1.187b/bin/
wileymud-1.187b/docs/
wileymud-1.187b/etc/
wileymud-1.187b/lib/
wileymud-1.187b/lib/adm/
wileymud-1.187b/lib/boards/
wileymud-1.187b/lib/log/
wileymud-1.187b/lib/man/
wileymud-1.187b/lib/ply/
wileymud-1.187b/lib/ply/a/
wileymud-1.187b/lib/ply/b/
wileymud-1.187b/lib/ply/c/
wileymud-1.187b/lib/ply/d/
wileymud-1.187b/lib/ply/g/
wileymud-1.187b/lib/ply/k/
wileymud-1.187b/lib/ply/m/
wileymud-1.187b/lib/ply/s/
wileymud-1.187b/lib/ply/t/
wileymud-1.187b/public_html/gfx/
wileymud-1.187b/src/bin/
wileymud-1.187b/src/convert/attic/
wileymud-1.187b/src/convert/obj/
wileymud-1.187b/src/convert/perl/
wileymud-1.187b/src/convert/perl/MudConvert/
wileymud-1.187b/src/convert/perl/MudConvert/DUMP/
wileymud-1.187b/src/convert/perl/MudConvert/Report/
wileymud-1.187b/src/convert/perl/MudConvert/WileyMUD/
wileymud-1.187b/src/convert/perl/output/
wileymud-1.187b/src/convert/perl/output/DUMP/
wileymud-1.187b/src/convert/perl/output/Report/
wileymud-1.187b/src/convert/perl/output/WileyMUD/
wileymud-1.187b/src/etc/
wileymud-1.187b/src/etc/init.d/
wileymud-1.187b/src/etc/rc.d/
wileymud-1.187b/src/etc/rc.d/init.d/
wileymud-1.187b/src/lib/
wileymud-1.187b/src/lib/adm/
wileymud-1.187b/src/lib/boards/
wileymud-1.187b/src/lib/log/
wileymud-1.187b/src/lib/man/
wileymud-1.187b/src/lib/ply/
wileymud-1.187b/src/lib/ply/a/
wileymud-1.187b/src/lib/ply/b/
wileymud-1.187b/src/lib/ply/c/
wileymud-1.187b/src/lib/ply/d/
wileymud-1.187b/src/lib/ply/e/
wileymud-1.187b/src/lib/ply/f/
wileymud-1.187b/src/lib/ply/g/
wileymud-1.187b/src/lib/ply/h/
wileymud-1.187b/src/lib/ply/i/
wileymud-1.187b/src/lib/ply/j/
wileymud-1.187b/src/lib/ply/k/
wileymud-1.187b/src/lib/ply/l/
wileymud-1.187b/src/lib/ply/m/
wileymud-1.187b/src/lib/ply/n/
wileymud-1.187b/src/lib/ply/o/
wileymud-1.187b/src/lib/ply/p/
wileymud-1.187b/src/lib/ply/q/
wileymud-1.187b/src/lib/ply/r/
wileymud-1.187b/src/lib/ply/s/
wileymud-1.187b/src/lib/ply/t/
wileymud-1.187b/src/lib/ply/u/
wileymud-1.187b/src/lib/ply/v/
wileymud-1.187b/src/lib/ply/w/
wileymud-1.187b/src/lib/ply/x/
wileymud-1.187b/src/lib/ply/y/
wileymud-1.187b/src/lib/ply/z/
wileymud-1.187b/src/obj/
wileymud-1.187b/src/utils/
wileymud-1.187b/src/utils/mobmaker/
#!/usr/bin/perl -w

package MudConvert::Report::Output;

use strict;
use English;
use MudConvert::API qw( zone_name room_name mob_name obj_name
			zone_span zone_reset_desc exit_name exit_type_desc exit_flag_list );

our ($dump_dir, $dump_zone_file, $dump_world_file) = (undef,undef,undef);

use base 'Exporter';

our @EXPORT_OK = qw( dump_game );

sub dump_game {
  my $cfg = shift;
  my $data = shift;
  my $results = {};

  $dump_dir = $cfg->{'destination-dir'}."/Report";
  if( !(mkdir $dump_dir) ) {
    #system("echo rm -rf ".$cfg->{'destination-dir'}.'/WileyMUD' $cfg->{'destination-dir'}.'/WileyMUD.old');
    #system("echo mv ".$cfg->{'destination-dir'}.'/WileyMUD'." ".$cfg->{'destination-dir'}.'/WileyMUD.old');
    printf STDERR "FATAL: Cannot create output directory (%s) for Report!\n", $dump_dir;
    #return undef;
  }
  $dump_zone_file = "$dump_dir/tinyworld.zon";
  $dump_world_file = "$dump_dir/tinyworld.wld";

  $results->{Zones}	= dump_zones($cfg, $data);
  $results->{Rooms}	= dump_rooms($cfg, $data);
  $results->{Mobs}	= dump_mobs($cfg, $data);
  $results->{Objects}	= dump_objects($cfg, $data);
  $results->{Shops}	= dump_shops($cfg, $data);

  return $results;
}

sub dump_zones {
  my $cfg = shift;
  my $data = shift;

  if( !(open DUMP, ">$dump_zone_file") ) {
    printf STDERR "FATAL: Cannot create output ZONE file (%s) for Report!\n", $dump_zone_file;
    return undef;
  }

  my $total_cmds = 0;
  $total_cmds += scalar(@{ $data->{'Zones'}->{$_}->{'Resets'} }) foreach (keys %{ $data->{'Zones'} });
  printf DUMP "ZONE REPORT: %d total commands found in %d zones.\n", $total_cmds, scalar(keys %{ $data->{'Zones'} });

  foreach my $vnum (sort { $a <=> $b } keys %{ $data->{'Zones'} }) {
  #for( my ($i, $x) = (0, [ sort { $a <=> $b } keys %{ $data->{'Zones'} } ]); $i < scalar(@{ $x }); $i++) {
  #  my $vnum = $x->[$i];

    printf DUMP "Zone \"%s\"[#%d] spans rooms (#%d,#%d)\n",
           zone_name($data, $vnum), $vnum,
           zone_span($data, $vnum);

    if( (defined $data->{'Zones'}->{$vnum}->{'Mode'}) ) {
      printf DUMP "     %s\n", zone_reset_desc($data, $vnum);
    } else {
      printf DUMP "     It has no reset mode.\n";
    }

    my $cmd_count = scalar(@{ $data->{'Zones'}->{$vnum}->{'Resets'} });
    if( $cmd_count > 0 ) {
      printf DUMP "     There are %d Commands defined:\n", $cmd_count;
    } else {
      printf DUMP "     There are no Commands in this Zone.\n", 
    }

    my ($last_led, $last_mob, $last_obj, $last_room) = (undef,undef,undef,undef);
    foreach my $reset (sort { $a->{'Number'} <=> $b->{'Number'} } @{ $data->{'Zones'}->{$vnum}->{'Resets'} }) {
      printf DUMP "          [%3d] ", $reset->{'Number'};

      if( $reset->{'Name'} eq 'MOBILE' ) {
        printf DUMP "Load Mobile \"%s\"[#%d] to \"%s\"[#%d]\n",
               mob_name($data, $reset->{'MOB_VNUM'}), $last_led = $last_mob = $reset->{'MOB_VNUM'},
               room_name($data, $reset->{'ROOM_VNUM'}), $last_room = $reset->{'ROOM_VNUM'};

      } elsif( $reset->{'Name'} eq 'OBJECT' ) {
        printf DUMP "Load Object \"%s\"[#%d] to \"%s\"[#%d]\n",
               obj_name($data, $reset->{'OBJ_VNUM'}), $last_obj = $reset->{'OBJ_VNUM'},
               room_name($data, $reset->{'ROOM_VNUM'}), $last_room = $reset->{'ROOM_VNUM'};

      } elsif( $reset->{'Name'} eq 'GIVE' ) {
        printf DUMP "Give Object \"%s\"[#%d] to Mobile \"%s\"[#%d]\n",
               obj_name($data, $reset->{'OBJ_VNUM'}), $last_obj = $reset->{'OBJ_VNUM'},
               mob_name($data, $last_mob), $last_mob;

      } elsif( $reset->{'Name'} eq 'EQUIP' ) {
        printf DUMP "Object \"%s\"[#%d] is equipped to %s slot by Mobile \"%s\"[#%d]\n",
               obj_name($data, $reset->{'OBJ_VNUM'}), $last_obj = $reset->{'OBJ_VNUM'},
               $reset->{'EQUIP_POS'},
               mob_name($data, $last_mob), $last_mob;

      } elsif( $reset->{'Name'} eq 'PUT' ) {
        printf DUMP "Put Object \"%s\"[#%d] into Object \"%s\"[#%d]\n",
               obj_name($data, $reset->{'SRC_OBJ'}), $last_obj = $reset->{'SRC_OBJ'},
               obj_name($data, $reset->{'DEST_OBJ'}), $reset->{'DEST_OBJ'};

      } elsif( $reset->{'Name'} eq 'DOOR' ) {
        printf DUMP "Reset %s door of \"%s\"[#%d] to %s\n",
               $reset->{'EXIT_DIR'},
               room_name($data, $reset->{'ROOM_VNUM'}), $last_room = $reset->{'ROOM_VNUM'},
               $reset->{'DOOR_STATE'};

      } elsif( $reset->{'Name'} eq 'REMOVE' ) {
        printf DUMP "Remove Object \"%s\"[#%d] from \"%s\"[#%d]\n",
               obj_name($data, $reset->{'OBJ_VNUM'}), $last_obj = $reset->{'OBJ_VNUM'},
               room_name($data, $reset->{'ROOM_VNUM'}), $last_room = $reset->{'ROOM_VNUM'};

      } elsif( $reset->{'Name'} eq 'LEAD' ) {
        $last_mob = $reset->{'MOB_VNUM'};
        printf DUMP "Load Mobile \"%s\"[#%d] to \"%s\"[#%d], led by Mobile \"%s\"[#%d]%s\n",
               mob_name($data, $last_mob), $last_mob,
               room_name($data, $last_room), $last_room,
               mob_name($data, $last_led), $last_led,
               ($reset->{'DO_GROUP'} ? " (grouped)" : "");

      } elsif( $reset->{'Name'} eq 'HATE' ) {
        printf DUMP "Cause Mobile \"%s\"[#%d] in \"%s\"[#%d] to HATE %s\n",
               mob_name($data, $last_mob), $last_mob,
               room_name($data, $last_room), $last_room,
               "Something";

      } else {
      }
      # pick apart commands here

      printf DUMP "\n";


      #printf STDERR Dumper($reset);
      printf DUMP "%s",		$reset->{'Command'};
      printf DUMP " %s",	join(" ", @{ $reset->{'Args'} })
        if (defined $reset->{'Args'}) and scalar(@{ $reset->{'Args'} }) > 0;
      printf DUMP " * %s",	$reset->{'Comment'}
        if (defined $reset->{'Comment'});
      printf DUMP "\n";
    }
    printf DUMP "%s\n\n",	"S";
  }
  printf DUMP "%s\n",		"\$~";
  close DUMP;

  return undef;
}

sub dump_rooms {
  my $cfg = shift;
  my $data = shift;

  return undef;
}

sub dump_mobs {
  my $cfg = shift;
  my $data = shift;

  return undef;
}

sub dump_objects {
  my $cfg = shift;
  my $data = shift;

  return undef;
}

sub dump_shops {
  my $cfg = shift;
  my $data = shift;

  return undef;
}

1;