Skip to content

Conversation

@oznogon
Copy link
Contributor

@oznogon oznogon commented Nov 25, 2025

  • Rewrite Power Management screen to dynamically add, remove, and
    populate rows as the screen size and number of systems change.
  • Use reparenting to dynamically assign system panels to an
    arbitrary number of layout rows.
  • Prevent responsive changes from overlapping crew screen selector and
    main screen controls, even if both are present.
  • Expand power/coolant key-value displays.
  • Use layout attributes to build power management panels.
  • Add the same snap lines to power and coolant sliders as already used
    on the Engineering screens.
  • Add heat delta arrows.
  • Hide coolant sliders when autocoolant is enabled, leaving only the
    indicator bar.
  • Update system power, coolant, heat labels with values.

Depends on #2573 (progress bars) and #2599 (reparenting).

Eight systems, 4:3:

Screenshot 2025-11-25 at 2 04 42 PM

Nine systems, 4:3:

Screenshot 2025-11-25 at 2 04 59 PM

Wide:

Screenshot 2025-11-25 at 2 05 12 PM

Tall:

Screenshot 2025-11-25 at 2 05 20 PM

Heat and energy delta arrows:

Screenshot 2025-11-25 at 2 39 24 PM Screenshot 2025-11-25 at 2 39 41 PM

GuiProgressbar can fail to show pixels near the min and max values,
such as for 98-100% power or coolant on the Power Management screen
or the final jump drive charge points in the jump drive controls.

This appears to be caused by the GuiProgressbar being filled by a
PNG with a transparent border of pixels, which become the only
pixels rendered at these extremes, particularly on high-resolution
displays.

- Remove transparent pixels from edges of the default progress bar
  fill PNG that caused inaccuracies for values near min and max.
  Screens that implement GuiProgressbar should manage its width or
  height using size or margin attributes if necessary.
- Conditionally reduce the default width of the fill rect when
  using a background. This is set to an arbitrary value that
  approximates the proportions used in existing behavior, but
  results in a tighter and more accurate fit on high-resolution
  displays.
- Simplify min/max logic using clamps.
Add a GuiElement::setParent function to reparent elements by removing
them from their former parent element's tree, adding them to the new
parent element's tree, and updating its pointer.
- Rewrite Power Management screen to dynamically add, remove, and
  populate rows as the screen size and number of systems change.
- Use reparenting to dynamically assign system panels to an
  arbitrary number of layout rows.
- Prevent responsive changes from overlapping crew screen selector and
  main screen controls, even if both are present.
- Expand power/coolant key-value displays.
- Use layout attributes to build power management panels.
- Add the same snap lines to power and coolant sliders as already used
  on the Engineering screens.
- Add heat delta arrows.
- Hide coolant sliders when autocoolant is enabled, leaving only the
  indicator bar.
- Update system power, coolant, heat labels with values.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant