diff --git a/src/ui_renderer.cpp b/src/ui_renderer.cpp index 553346f..1078f96 100644 --- a/src/ui_renderer.cpp +++ b/src/ui_renderer.cpp @@ -699,14 +699,6 @@ bool validate_maneuver_inputs(SimulationState* sim, UIState* ui_state) { return false; } - if (strlen(ui_state->maneuver_dialog.name) == 0) { - snprintf(ui_state->maneuver_dialog.error_message, - sizeof(ui_state->maneuver_dialog.error_message), - "Maneuver name is required"); - ui_state->maneuver_dialog.show_error = true; - return false; - } - for (int i = 0; i < sim->maneuver_count; i++) { if (strcmp(sim->maneuvers[i].name, ui_state->maneuver_dialog.name) == 0) { if (ui_state->maneuver_dialog.edit_maneuver_index >= 0 && @@ -778,11 +770,35 @@ bool validate_maneuver_inputs(SimulationState* sim, UIState* ui_state) { return true; } +void generate_maneuver_name(SimulationState* sim, UIState* ui_state) { + if (strlen(ui_state->maneuver_dialog.name) > 0) { + return; + } + + int burn_num = 0; + for (int i = 0; i < sim->maneuver_count; i++) { + if (sim->maneuvers[i].craft_index == ui_state->maneuver_dialog.craft_index) { + burn_num++; + } + } + + const char* direction_name = get_burn_direction_name((BurnDirection)ui_state->maneuver_dialog.direction_active); + + if (ui_state->maneuver_dialog.trigger_type_active == 0) { + snprintf(ui_state->maneuver_dialog.name, 64, "%s #%d", direction_name, burn_num); + } else { + snprintf(ui_state->maneuver_dialog.name, 64, "%s @ ν=%.2f #%d", + direction_name, ui_state->maneuver_dialog.trigger_value, burn_num); + } +} + void create_maneuver_from_dialog(SimulationState* sim, UIState* ui_state) { if (!validate_maneuver_inputs(sim, ui_state)) { return; } + generate_maneuver_name(sim, ui_state); + Maneuver maneuver = create_maneuver( ui_state->maneuver_dialog.name, ui_state->maneuver_dialog.craft_index, diff --git a/src/ui_renderer.h b/src/ui_renderer.h index 674d0f3..6ab0948 100644 --- a/src/ui_renderer.h +++ b/src/ui_renderer.h @@ -61,6 +61,7 @@ void render_maneuver_create_tab(SimulationState* sim, UIState* ui_state, int x, void update_orbital_preview(SimulationState* sim, UIState* ui_state); void render_orbital_preview(SimulationState* sim, UIState* ui_state, Rectangle bounds); bool validate_maneuver_inputs(SimulationState* sim, UIState* ui_state); +void generate_maneuver_name(SimulationState* sim, UIState* ui_state); void create_maneuver_from_dialog(SimulationState* sim, UIState* ui_state); void update_maneuver_from_dialog(SimulationState* sim, UIState* ui_state);