forked from 0ad/0ad
42 lines
1.1 KiB
Perl
42 lines
1.1 KiB
Perl
use strict;
|
|
use warnings;
|
|
|
|
use Entity;
|
|
|
|
my @files = Entity::find_entities();
|
|
|
|
my %files = map +($_ => 1), @files;
|
|
|
|
open my $g, '>', 'creation.dot' or die $!;
|
|
print $g "digraph G {\n";
|
|
|
|
for my $f (sort @files) {
|
|
next if $f =~ /^template_/;
|
|
print "# $f...\n";
|
|
my $ent = Entity::load_inherited($f);
|
|
|
|
if ($ent->{Entity}{Builder}) {
|
|
my $ents = $ent->{Entity}{Builder}{Entities}{' content'};
|
|
$ents =~ s/\{civ\}/$ent->{Entity}{Identity}{Civ}{' content'}/eg;
|
|
for my $b (split /\s+/, $ents) {
|
|
warn "Invalid Builder reference: $f -> $b\n" unless $files{$b};
|
|
print $g qq{"$f" -> "$b" [color=green];\n};
|
|
}
|
|
}
|
|
|
|
if ($ent->{Entity}{TrainingQueue}) {
|
|
my $ents = $ent->{Entity}{TrainingQueue}{Entities}{' content'};
|
|
$ents =~ s/\{civ\}/$ent->{Entity}{Identity}{Civ}{' content'}/eg;
|
|
for my $b (split /\s+/, $ents) {
|
|
warn "Invalid TrainingQueue reference: $f -> $b\n" unless $files{$b};
|
|
print $g qq{"$f" -> "$b" [color=blue];\n};
|
|
}
|
|
}
|
|
}
|
|
|
|
print $g "}\n";
|
|
|
|
close $g;
|
|
|
|
system("dot -Tpng creation.dot -o creation.png");
|