--- deliantra/Deliantra/res2pm 2006/02/22 22:41:22 1.6 +++ deliantra/Deliantra/res2pm 2006/03/12 23:21:11 1.8 @@ -101,11 +101,13 @@ $arch->{value} = $bitmask{$2} ||= {}; } elsif ($arch->{type} =~ s/^(list)_(.*)/$1/) { $arch->{value} = $list{$2} ||= {}; + } elsif ($arch->{type} eq "fixed") { + $arch->{value} = $e->attr ("value"); } elsif ($arch->{type} =~ s/^bool_special$/bool/) { $arch->{value} = [$e->attr ("false"), $e->attr ("true")]; } - $sect->{$e->attr ("arch") || $e->attr("arch_begin")} = $arch; + push @$sect, [$e->attr ("arch") || $e->attr("arch_begin"), $arch]; } sub parse_type { @@ -119,7 +121,7 @@ $type->{required}{$i->attr ("arch")} = $i->attr ("value"); } } elsif ($e->name eq "attribute") { - parse_attr $e, $type->{attr} ||= {}; + parse_attr $e, $type->{attr} ||= []; } elsif ($e->name eq "ignore") { for my $i (grep ref, @{$e->contents}) { if ($i->name eq "ignore_list") { @@ -135,11 +137,11 @@ } elsif ($e->name eq "description") { $type->{desc} = string $e; } elsif ($e->name eq "section") { - my %attr; + my @attr; for my $i (grep ref, @{$e->contents}) { - parse_attr $i, \%attr; + parse_attr $i, \@attr; } - push @{ $type->{section} }, [$e->attr ("name") => \%attr]; + push @{ $type->{section} }, [$e->attr ("name") => \@attr]; } else { warn "unknown types subelement ", $e->name; } @@ -172,7 +174,6 @@ $type->{name} = $e->attr ("name"); parse_type $e, $type; - #unshift @{$type->{import}}, \%default_attr; if ($e->attr ("number") > 0) { $attr{$e->attr ("number")} = $type;