@@ -10,7 +10,6 @@ use cli::export::elevation;
1010use cli:: export:: filter:: { Filter , Layers } ;
1111use libycresources:: common:: types:: geometry:: Scaled ;
1212use libycresources:: common:: types:: space;
13- use libycresources:: common:: types:: space:: Elevation ;
1413use libycresources:: formats:: { map, pal} ;
1514use libycresources:: formats:: map:: blueprint:: prototype:: Instance ;
1615use libycresources:: formats:: map:: tiles:: Group ;
@@ -110,40 +109,30 @@ fn main() {
110109 println ! ( "Success." ) ;
111110
112111 let mut tiles = HashMap :: new ( ) ;
113- map. tiles . iter ( ) . fold ( & mut tiles, |a, g| {
114- a. insert ( & g. elevation , g) ;
115- return a;
116- } ) ;
117-
118- let mut protos: HashMap < & Elevation , Vec < & Instance > > = HashMap :: new ( ) ;
119- map. prototypes . iter ( ) . fold ( & mut protos, |a, g| {
120- if let Some ( grid) = & g. location . grid {
121- if let Some ( protos) = a. get_mut ( & grid. elevation ) {
122- protos. push ( g) ;
112+ for group in & map. tiles { tiles. insert ( & group. elevation , group) ; }
113+
114+ let mut protos: HashMap < & space:: Elevation , Vec < & Instance > > = HashMap :: new ( ) ;
115+ for proto in & map. prototypes {
116+ if let Some ( grid) = & proto. location . grid {
117+ if let Some ( protos) = protos. get_mut ( & grid. elevation ) {
118+ protos. push ( & proto) ;
123119 } else {
124- let mut protos = Vec :: new ( ) ;
125- protos . push ( g ) ;
120+ let mut list = Vec :: new ( ) ;
121+ list . push ( proto ) ;
126122
127- a . insert ( & grid. elevation , protos ) ;
123+ protos . insert ( & grid. elevation , list ) ;
128124 }
129125 }
130- return a;
131- } ) ;
126+ }
132127
133- let renderables : Vec < ( Elevation , & & Group , Option < & Vec < & Instance > > ) > = levels. map (
128+ let drawables : Vec < ( space :: Elevation , & & Group , Option < & Vec < & Instance > > ) > = levels. map (
134129 |l| space:: Elevation { level : Scaled { value : l, scale : 0 ..MAX_ELEVATION + 1 } }
135130 ) . map ( |e| {
136- let tiles = tiles. get ( & e) ;
137131 let protos = protos. get ( & e) ;
138-
139- if let Some ( tiles) = tiles {
140- return Some ( ( e, tiles, protos) ) ;
141- }
142-
143- return None ;
132+ tiles. get ( & e) . map ( |t| ( e, t, protos) )
144133 } ) . flatten ( ) . collect ( ) ;
145134
146- for ( elevation, tiles, protos) in renderables {
135+ for ( elevation, tiles, protos) in drawables {
147136 let level_readable = elevation. level . value + 1 ;
148137
149138 println ! ( "Started rendering level {:?}..." , level_readable) ;
0 commit comments