--- deliantra/Deliantra/res2pm 2006/02/22 22:05:53 1.4 +++ deliantra/Deliantra/res2pm 2006/02/22 22:36:45 1.5 @@ -24,6 +24,8 @@ =cut +package Crossfire::Data; + EOF use Data::Dumper; @@ -109,13 +111,15 @@ sub parse_type { my ($e, $type) = @_; + my %main; + for my $e (grep ref, @{$e->contents}) { if ($e->name eq "required") { for my $i (grep ref, @{$e->contents}) { $type->{required}{$i->attr ("arch")} = $i->attr ("value"); } } elsif ($e->name eq "attribute") { - parse_attr $e, $type->{attr}{Main} ||= {}; + parse_attr $e, $type->{attr} ||= {}; } elsif ($e->name eq "ignore") { for my $i (grep ref, @{$e->contents}) { if ($i->name eq "ignore_list") { @@ -131,9 +135,11 @@ } elsif ($e->name eq "description") { $type->{desc} = string $e; } elsif ($e->name eq "section") { + my %attr; for my $i (grep ref, @{$e->contents}) { - parse_attr $i, $type->{attr}{$e->attr ("name")} ||= {}; + parse_attr $i, \%attr; } + push @{ $type->{section} }, [$e->attr ("name") => \%attr]; } else { warn "unknown types subelement ", $e->name; }