… | |
… | |
815 | $root = $Deliantra::Data::TYPE{Misc}; |
815 | $root = $Deliantra::Data::TYPE{Misc}; |
816 | } |
816 | } |
817 | } |
817 | } |
818 | |
818 | |
819 | my @import = ($root); |
819 | my @import = ($root); |
820 | |
820 | |
821 | unshift @import, \%Deliantra::Data::DEFAULT_ATTR |
821 | unshift @import, \%Deliantra::Data::DEFAULT_ATTR |
822 | unless $type == 116; |
822 | unless $type == 116; |
823 | |
823 | |
824 | my (%ignore); |
824 | my (%ignore); |
825 | my (@section_order, %section, @attr_order); |
825 | my (@section_order, %section, @attr_order); |
… | |
… | |
846 | $section{$name}{$k} ||= $v; |
846 | $section{$name}{$k} ||= $v; |
847 | } |
847 | } |
848 | } |
848 | } |
849 | } |
849 | } |
850 | |
850 | |
|
|
851 | # remove ignores for "root" type |
|
|
852 | for (map @{$_->[1]}, # section attributes |
|
|
853 | [general => ($root->{attr} || [])], |
|
|
854 | @{$root->{section} || []}) |
|
|
855 | { |
|
|
856 | my ($k, $v) = @$_; |
|
|
857 | # skip fixed attributes, if they are ignored thats fine |
|
|
858 | next if $v->{type} eq 'fixed'; |
|
|
859 | |
|
|
860 | delete $ignore{$k}; # if the attributes are defined explicitly they |
|
|
861 | # should NOT be ignored. ignore should mainly |
|
|
862 | # hit imported/inherited attributes. |
|
|
863 | } |
|
|
864 | |
851 | $attr->{section} = [ |
865 | $attr->{section} = [ |
852 | map !exists $section{$_} ? () : do { |
866 | map !exists $section{$_} ? () : do { |
853 | my $attr = delete $section{$_}; |
867 | my $attr = delete $section{$_}; |
854 | |
868 | |
855 | [ |
869 | [ |
… | |
… | |
857 | map exists $attr->{$_} && !$ignore{$_} |
871 | map exists $attr->{$_} && !$ignore{$_} |
858 | ? [$_ => delete $attr->{$_}] : (), |
872 | ? [$_ => delete $attr->{$_}] : (), |
859 | @attr_order |
873 | @attr_order |
860 | ] |
874 | ] |
861 | }, |
875 | }, |
862 | |
|
|
863 | exists $section{$_} ? [$_ => delete $section{$_}] : (), |
876 | exists $section{$_} ? [$_ => delete $section{$_}] : (), |
864 | @section_order |
877 | @section_order |
865 | ]; |
878 | ]; |
866 | |
879 | |
867 | $attr |
880 | $attr |