Skip to content

Commit

Permalink
Remove duplicate code in ui_generation.rs.
Browse files Browse the repository at this point in the history
  • Loading branch information
basyniae committed Sep 11, 2024
1 parent 8c3ddc4 commit 94e5c37
Showing 1 changed file with 94 additions and 103 deletions.
197 changes: 94 additions & 103 deletions src/app/ui_generation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use crate::app::data_structures::gen_config::GenConfig;
use crate::app::data_structures::zvec::ZVec;
use crate::app::lua_field::LuaField;

// TODO: Only auto generate if the values have changed
pub fn ui_generation(
ui: &mut Ui,
auto_generate_current_layer: &mut bool,
Expand Down Expand Up @@ -37,57 +38,22 @@ pub fn ui_generation(
if lua_mode {
ui.columns(2, |columns| {
if columns[0]
.button("Set parameters for current layers by code")
.button("Set parameters for current layer by code")
.clicked()
{
lua.globals().set("layer", current_layer).unwrap();
lua.globals().set("l", current_layer).unwrap();

lua_field_radius_a.eval(
lua,
&mut stack_gen_config.get_mut(current_layer).unwrap().radius_a,
);

if circle_mode {
lua_field_radius_a.eval(
lua,
&mut stack_gen_config.get_mut(current_layer).unwrap().radius_b,
);
} else {
lua_field_radius_b.eval(
lua,
&mut stack_gen_config.get_mut(current_layer).unwrap().radius_b,
);
}

lua_field_tilt.eval(
lua,
&mut stack_gen_config.get_mut(current_layer).unwrap().tilt,
);

lua_field_squircle_parameter.eval(
lua,
&mut stack_gen_config
.get_mut(current_layer)
.unwrap()
.squircle_parameter,
);

lua_field_center_offset_x.eval(
set_parameters_for_layer(
stack_gen_config,
lua,
&mut stack_gen_config
.get_mut(current_layer)
.unwrap()
.center_offset_x,
lua_field_radius_a,
lua_field_radius_b,
lua_field_tilt,
lua_field_center_offset_x,
lua_field_center_offset_y,
lua_field_squircle_parameter,
circle_mode,
current_layer,
);

lua_field_center_offset_y.eval(
lua,
&mut stack_gen_config
.get_mut(current_layer)
.unwrap()
.center_offset_y,
);
lua_field_radius_a.register_success();
lua_field_radius_b.register_success();
lua_field_tilt.register_success();
Expand All @@ -97,9 +63,6 @@ pub fn ui_generation(
}
columns[0].centered_and_justified(|ui| {
if ui.button("Generate current layer").clicked() || *auto_generate_current_layer {
// TODO: Only auto generate if the values have changed!

// Generate from circle with selected algorithm
stack_blocks.set(
current_layer,
stack_gen_config.get_mut(current_layer).unwrap().generate(),
Expand All @@ -114,36 +77,20 @@ pub fn ui_generation(
.clicked()
{
for layer in layer_lowest..=layer_highest {
lua.globals().set("layer", layer).unwrap();
lua.globals().set("l", layer).unwrap();

lua_field_radius_a
.eval(lua, &mut stack_gen_config.get_mut(layer).unwrap().radius_a);

if circle_mode {
lua_field_radius_a
.eval(lua, &mut stack_gen_config.get_mut(layer).unwrap().radius_b);
} else {
lua_field_radius_b
.eval(lua, &mut stack_gen_config.get_mut(layer).unwrap().radius_b);
}

lua_field_tilt.eval(lua, &mut stack_gen_config.get_mut(layer).unwrap().tilt);

lua_field_squircle_parameter.eval(
lua,
&mut stack_gen_config.get_mut(layer).unwrap().squircle_parameter,
);

lua_field_center_offset_x.eval(
lua,
&mut stack_gen_config.get_mut(layer).unwrap().center_offset_x,
);
lua_field_center_offset_y.eval(
set_parameters_for_layer(
stack_gen_config,
lua,
&mut stack_gen_config.get_mut(layer).unwrap().center_offset_y,
);
lua_field_radius_a,
lua_field_radius_b,
lua_field_tilt,
lua_field_center_offset_x,
lua_field_center_offset_y,
lua_field_squircle_parameter,
circle_mode,
layer,
)
}

lua_field_radius_a.register_success();
lua_field_radius_b.register_success();
lua_field_tilt.register_success();
Expand All @@ -153,17 +100,12 @@ pub fn ui_generation(
}
columns[1].centered_and_justified(|ui| {
if ui.button("Generate all layers").clicked() || *auto_generate_all_layers {
// Generate all layers
*stack_blocks = ZVec::new(
stack_gen_config
.data
.iter()
.map(|config| config.generate())
.collect(),
generate_all_layers(
stack_gen_config,
stack_blocks,
layer_lowest,
);

*recompute_metrics = true;
recompute_metrics,
)
}
});
});
Expand All @@ -173,9 +115,6 @@ pub fn ui_generation(
columns[0].centered_and_justified(|ui| {
if ui.button("Generate current layer").clicked() || *auto_generate_current_layer
{
// TODO: Only auto generate if the values have changed!

// Generate from circle with selected algorithm
stack_blocks.set(
current_layer,
stack_gen_config.get_mut(current_layer).unwrap().generate(),
Expand All @@ -187,26 +126,18 @@ pub fn ui_generation(

columns[1].centered_and_justified(|ui| {
if ui.button("Generate all layers").clicked() || *auto_generate_all_layers {
// Generate all layers
*stack_blocks = ZVec::new(
stack_gen_config
.data
.iter()
.map(|config| config.generate())
.collect(),
generate_all_layers(
stack_gen_config,
stack_blocks,
layer_lowest,
);

*recompute_metrics = true;
recompute_metrics,
)
}
});
})
} else {
ui.centered_and_justified(|ui| {
if ui.button("Generate").clicked() || *auto_generate_current_layer {
// TODO: Only auto generate if the values have changed!

// Generate from circle with selected algorithm
stack_blocks.set(
current_layer,
stack_gen_config.get_mut(current_layer).unwrap().generate(),
Expand All @@ -218,3 +149,63 @@ pub fn ui_generation(
}
}
}

fn generate_all_layers(
stack_gen_config: &mut ZVec<GenConfig>,
stack_blocks: &mut ZVec<Blocks>,
layer_lowest: isize,
recompute_metrics: &mut bool,
) {
// Generate all layers
*stack_blocks = ZVec::new(
stack_gen_config
.data
.iter()
.map(|config| config.generate())
.collect(),
layer_lowest,
);

*recompute_metrics = true;
}

fn set_parameters_for_layer(
stack_gen_config: &mut ZVec<GenConfig>,
lua: &mut Lua,
lua_field_radius_a: &mut LuaField,
lua_field_radius_b: &mut LuaField,
lua_field_tilt: &mut LuaField,
lua_field_center_offset_x: &mut LuaField,
lua_field_center_offset_y: &mut LuaField,
lua_field_squircle_parameter: &mut LuaField,
circle_mode: bool,
layer: isize,
) {
lua.globals().set("layer", layer).unwrap();
lua.globals().set("l", layer).unwrap();

lua_field_radius_a.eval(lua, &mut stack_gen_config.get_mut(layer).unwrap().radius_a);

if circle_mode {
lua_field_radius_a.eval(lua, &mut stack_gen_config.get_mut(layer).unwrap().radius_b);
} else {
lua_field_radius_b.eval(lua, &mut stack_gen_config.get_mut(layer).unwrap().radius_b);
}

lua_field_tilt.eval(lua, &mut stack_gen_config.get_mut(layer).unwrap().tilt);

lua_field_squircle_parameter.eval(
lua,
&mut stack_gen_config.get_mut(layer).unwrap().squircle_parameter,
);

lua_field_center_offset_x.eval(
lua,
&mut stack_gen_config.get_mut(layer).unwrap().center_offset_x,
);

lua_field_center_offset_y.eval(
lua,
&mut stack_gen_config.get_mut(layer).unwrap().center_offset_y,
);
}

0 comments on commit 94e5c37

Please sign in to comment.