|
|
|
|
@ -96,7 +96,9 @@ void render_body_list_ui(SimulationState* sim, RenderState* render_state, UIStat
|
|
|
|
|
int total_items = sim->body_count + sim->craft_count; |
|
|
|
|
|
|
|
|
|
// Check if buffer needs rebuilding
|
|
|
|
|
bool needs_rebuild = (ui_state->sim_version != sim->version) || (ui_state->body_list_buffer == NULL); |
|
|
|
|
bool needs_rebuild = (ui_state->cached_body_count != sim->body_count || |
|
|
|
|
ui_state->cached_craft_count != sim->craft_count || |
|
|
|
|
ui_state->body_list_buffer == NULL); |
|
|
|
|
|
|
|
|
|
if (needs_rebuild) { |
|
|
|
|
int buffer_size = total_items * (64 + 3 + 1) + 1; |
|
|
|
|
@ -130,7 +132,8 @@ void render_body_list_ui(SimulationState* sim, RenderState* render_state, UIStat
|
|
|
|
|
item_index++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ui_state->sim_version = sim->version; |
|
|
|
|
ui_state->cached_body_count = sim->body_count; |
|
|
|
|
ui_state->cached_craft_count = sim->craft_count; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Draw window (no close button - panels always shown)
|
|
|
|
|
@ -404,7 +407,8 @@ void render_maneuver_list_ui(SimulationState* sim, RenderState* render_state, UI
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Check if buffer needs rebuilding
|
|
|
|
|
bool needs_rebuild = (ui_state->sim_version != sim->version) || (ui_state->maneuver_list_buffer == NULL); |
|
|
|
|
bool needs_rebuild = (ui_state->cached_maneuver_count != sim->maneuver_count || |
|
|
|
|
ui_state->maneuver_list_buffer == NULL); |
|
|
|
|
|
|
|
|
|
if (needs_rebuild) { |
|
|
|
|
int buffer_size = craft_maneuver_count * (64 + 10 + 1) + 1; |
|
|
|
|
@ -432,7 +436,7 @@ void render_maneuver_list_ui(SimulationState* sim, RenderState* render_state, UI
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ui_state->sim_version = sim->version; |
|
|
|
|
ui_state->cached_maneuver_count = sim->maneuver_count; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Rectangle list_bounds = { |
|
|
|
|
@ -744,7 +748,12 @@ void render_maneuver_hohmann_tab(SimulationState* sim, UIState* ui_state, int x,
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (ui_state->sim_version != sim->version) { |
|
|
|
|
bool needs_rebuild = (ui_state->cached_body_count != sim->body_count || |
|
|
|
|
ui_state->cached_craft_count != sim->craft_count || |
|
|
|
|
ui_state->craft_list_buffer == NULL || |
|
|
|
|
ui_state->body_dropdown_buffer == NULL); |
|
|
|
|
|
|
|
|
|
if (needs_rebuild) { |
|
|
|
|
int craft_buffer_size = sim->craft_count * 64 + 1; |
|
|
|
|
|
|
|
|
|
if (ui_state->craft_list_buffer == NULL || ui_state->craft_list_buffer_size < craft_buffer_size) { |
|
|
|
|
@ -785,7 +794,8 @@ void render_maneuver_hohmann_tab(SimulationState* sim, UIState* ui_state, int x,
|
|
|
|
|
offset += snprintf(ui_state->body_dropdown_buffer + offset, ui_state->body_dropdown_buffer_size - offset, "%s", sim->bodies[i].name); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ui_state->sim_version = sim->version; |
|
|
|
|
ui_state->cached_body_count = sim->body_count; |
|
|
|
|
ui_state->cached_craft_count = sim->craft_count; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
GuiLabel({(float)x, (float)current_y, (float)width, 25}, "Calculate optimal Hohmann transfer between orbits"); |
|
|
|
|
@ -1430,7 +1440,9 @@ void delete_maneuver_from_dialog(SimulationState* sim, UIState* ui_state) {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ui_state_init_buffers(UIState* ui_state) { |
|
|
|
|
ui_state->sim_version = 0; |
|
|
|
|
ui_state->cached_body_count = 0; |
|
|
|
|
ui_state->cached_craft_count = 0; |
|
|
|
|
ui_state->cached_maneuver_count = 0; |
|
|
|
|
ui_state->body_list_buffer_size = 0; |
|
|
|
|
ui_state->body_list_buffer = NULL; |
|
|
|
|
ui_state->craft_list_buffer_size = 0; |
|
|
|
|
|