diff --git a/extension/src/openvic-extension/components/budget/NationalStockpileBudget.cpp b/extension/src/openvic-extension/components/budget/NationalStockpileBudget.cpp index 42ef08fc..df41e48f 100644 --- a/extension/src/openvic-extension/components/budget/NationalStockpileBudget.cpp +++ b/extension/src/openvic-extension/components/budget/NationalStockpileBudget.cpp @@ -4,11 +4,13 @@ #include #include +#include #include #include "openvic-extension/classes/GUILabel.hpp" #include "openvic-extension/classes/GUINode.hpp" #include "openvic-extension/singletons/PlayerSingleton.hpp" +#include "openvic-extension/utility/Utilities.hpp" using namespace OpenVic; @@ -65,11 +67,45 @@ void NationalStockpileBudget::update_labels(CountryInstance& country) { military_costs_label.set_text( Utilities::cash_to_string_dp_dynamic(-military_balance) ); + const fixed_point_t actual_stockpile_spending = country.get_actual_national_stockpile_spending(); todays_actual_stockpile_spending_label.set_text( - Utilities::cash_to_string_dp_dynamic(2) //TODO + Utilities::cash_to_string_dp_dynamic(actual_stockpile_spending) ); + + godot::String todays_actual_stockpile_spending_tooltip = todays_actual_stockpile_spending_label.tr("STOCKPILE_COST_ACTUAL"); + if (actual_stockpile_spending > 0) { + todays_actual_stockpile_spending_tooltip += "\n"; //This is for a whiteline, not just a linebreak. Just like Victoria 2. + + memory::vector> bought_goods {}; + for (auto const& [good_instance, good_data] : country.get_goods_data()) { + if (good_data.money_traded_yesterday < 0) { + bought_goods.push_back({&good_instance, &good_data}); + } + } + + std::ranges::sort( + bought_goods, + [](auto const& lhs, auto const& rhs) { + return lhs.second->money_traded_yesterday < rhs.second->money_traded_yesterday; + } + ); + + for (auto const& [good_instance_ptr, good_data_ptr] : bought_goods) { + GoodInstance const& good_instance = *good_instance_ptr; + CountryInstance::good_data_t const& good_data = *good_data_ptr; + todays_actual_stockpile_spending_tooltip += Utilities::format( + godot::String::utf8("\n %s: §R%s§! (%s)"), + todays_actual_stockpile_spending_label.tr(Utilities::std_to_godot_string(good_instance.get_identifier())), + Utilities::cash_to_string_dp_dynamic(-good_data.money_traded_yesterday), + Utilities::float_to_string_dp_dynamic(good_data.quantity_traded_yesterday) + ); + } + } + + todays_actual_stockpile_spending_label.set_tooltip_string(todays_actual_stockpile_spending_tooltip); + overseas_costs_label.set_text( - Utilities::cash_to_string_dp_dynamic(3) //TODO + Utilities::cash_to_string_dp_dynamic(0) //TODO ); expenses_label.set_text( Utilities::cash_to_string_dp_dynamic(-balance)