@@ -1157,8 +1157,8 @@ void App::RenderLeftPanel()
11571157 std::map<const Item*, FractionalNumber, ItemPtrCompare> intermediates;
11581158 std::map<std::string, FractionalNumber> total_machines;
11591159 std::map<std::string, std::map<const Recipe*, FractionalNumber, RecipePtrCompare>> detailed_machines;
1160- double total_power = 0.0 ;
1161- std::map<const Recipe*, double > detailed_power;
1160+ FractionalNumber total_power;
1161+ std::map<const Recipe*, FractionalNumber > detailed_power;
11621162 bool has_variable_power = false ;
11631163
11641164 // Gather all inputs/outputs/machines
@@ -1203,11 +1203,13 @@ void App::RenderLeftPanel()
12031203 }
12041204 }
12051205
1206+ const float power_width = ImGui::CalcTextSize (" 000000.00" ).x + ImGui::GetStyle ().FramePadding .x * 2 .0f ;
12061207 ImGui::SeparatorText (has_variable_power ? " Average Power" : " Power" );
1208+ if (total_power.GetNumerator () > 0 )
12071209 {
1208- std::vector<std::pair<const Recipe*, double >> sorted_detailed_power (detailed_power.begin (), detailed_power.end ());
1210+ std::vector<std::pair<const Recipe*, FractionalNumber >> sorted_detailed_power (detailed_power.begin (), detailed_power.end ());
12091211 std::stable_sort (sorted_detailed_power.begin (), sorted_detailed_power.end (), [](const auto & a, const auto & b) {
1210- return a.second > b.second ;
1212+ return a.second . GetValue () > b.second . GetValue () ;
12111213 });
12121214
12131215 // No visible color change when hovered/click
@@ -1219,14 +1221,18 @@ void App::RenderLeftPanel()
12191221
12201222 // Displayed over the TreeNodeEx element (same line)
12211223 ImGui::SameLine ();
1222- ImGui::Text (" %s%.8g MW" , has_variable_power ? " ~" : " " , total_power);
1224+ total_power.RenderInputText (" ##power" , true , false , power_width);
1225+ ImGui::SameLine ();
1226+ ImGui::Text (" %sMW" , has_variable_power ? " ~" : " " );
12231227 // Detailed list of recipes if the tree node is open
12241228 if (display_power_details)
12251229 {
12261230 ImGui::Indent ();
12271231 for (auto & [recipe, p] : sorted_detailed_power)
12281232 {
1229- ImGui::Text (" %s%.6g MW" , recipe->building ->variable_power ? " ~" : " " , p);
1233+ p.RenderInputText (" ##power" , true , false , power_width);
1234+ ImGui::SameLine ();
1235+ ImGui::Text (" %sMW" , recipe->building ->variable_power ? " ~" : " " );
12301236 ImGui::SameLine ();
12311237 recipe->Render ();
12321238 }
@@ -1598,7 +1604,9 @@ void App::RenderNodes()
15981604 {
15991605 ImGui::Spring (0 .0f );
16001606 CraftNode* craft_node = static_cast <CraftNode*>(node.get ());
1601- ImGui::Text (" %s%.6g MW" , craft_node->recipe ->building ->variable_power ? " ~" : " " , settings.power_equal_clocks ? craft_node->same_clock_power : craft_node->last_underclock_power );
1607+ (settings.power_equal_clocks ? craft_node->same_clock_power : craft_node->last_underclock_power ).RenderInputText (" ##power" , true , false );
1608+ ImGui::Spring (0 .0f );
1609+ ImGui::Text (" %sMW" , craft_node->recipe ->building ->variable_power ? " ~" : " " );
16021610 if (craft_node->recipe ->building ->variable_power && ImGui::IsItemHovered (ImGuiHoveredFlags_AllowWhenDisabled))
16031611 {
16041612 frame_tooltips.push_back (" Average power" );
0 commit comments