fix stage_elements
This commit is contained in:
parent
77fb784c7e
commit
66269f326d
13
src/rbx.rs
13
src/rbx.rs
@ -102,9 +102,20 @@ impl ModesBuilder{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//push mode updates
|
//push mode updates
|
||||||
for (builder_mode_id,mode_update) in self.mode_updates{
|
for (builder_mode_id,mut mode_update) in self.mode_updates{
|
||||||
if let Some(final_mode_id)=final_mode_id_from_builder_mode_id.get(&builder_mode_id){
|
if let Some(final_mode_id)=final_mode_id_from_builder_mode_id.get(&builder_mode_id){
|
||||||
if let Some(mode)=modes.get_mut(final_mode_id.get() as usize){
|
if let Some(mode)=modes.get_mut(final_mode_id.get() as usize){
|
||||||
|
//map stage id on stage elements
|
||||||
|
mode_update.map_stage_element_ids(|stage_id|
|
||||||
|
//walk down one stage id at a time until a stage is found
|
||||||
|
//TODO use better logic like BTreeMap::upper_bound instead of walking
|
||||||
|
// final_stage_id_from_builder_stage_id.upper_bound(Bound::Included(&stage_id))
|
||||||
|
// .value().copied().unwrap_or(gameplay_modes::StageId::FIRST)
|
||||||
|
(0..=stage_id.get()).rev().find_map(|builder_stage_id|
|
||||||
|
//map the stage element to that stage
|
||||||
|
mode.final_stage_id_from_builder_stage_id.get(&gameplay_modes::StageId::new(builder_stage_id)).copied()
|
||||||
|
).unwrap_or(gameplay_modes::StageId::FIRST)
|
||||||
|
);
|
||||||
mode.mode.update(mode_update);
|
mode.mode.update(mode_update);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user