#pragma once #include #include #include "reactor/coolant/vessel.hpp" #include "reactor/reactor.hpp" #include "coolant/pump.hpp" #include "coolant/valve.hpp" #include "coolant/condenser.hpp" #include "coolant/condenser_secondary.hpp" #include "coolant/evaporator.hpp" #include "coolant/sink.hpp" #include "electric/turbine.hpp" namespace Sim { struct System { static System active; std::unique_ptr reactor; std::unique_ptr vessel; std::unique_ptr sink; std::unique_ptr condenser; std::unique_ptr condenser_secondary; std::unique_ptr evaporator; std::unique_ptr turbine; std::unique_ptr primary_pump; std::unique_ptr secondary_pump; std::unique_ptr freight_pump; std::unique_ptr turbine_bypass_valve; std::unique_ptr turbine_inlet_valve; double speed = 1; double clock = 3600 * 12; System(); System(const Json::Value& node); void update(double dt); static void save(); static void load(); operator Json::Value() const; }; };