use kalast::{
    BinarySystem, EnvironmentSystem, Properties, Time, World, ASTRONAUMICAL_UNIT, DAY, HOUR,
    MINUTE, V3, YEAR,
};

fn main() {
    // Two spheres to test case the mutual heating.
    let mut binary_system = BinarySystem::new(
        "Didymos system",
        V3::new(0.0, 1.0, 0.0) * ASTRONAUMICAL_UNIT * 1.664,
    )
    .with_primary(
        "rsc/obj/sphere.obj",
        Properties::new(
            1.0 * YEAR, // rotation period
            2.7 * HOUR, // revolution period
            0.0,        // obliquity
            100.0,      // thermal inertia
            2146.0,     // density
            600.0,      // heat capacity
            0.1,        // albedo
            0.9,        // emissivity
        ),
    )
    .with_secondary(
        "rsc/obj/sphere.obj",
        Properties::new(
            11.92 * HOUR, // rotation period
            11.92 * HOUR, // revolution period
            0.0,          // obliquity 162.0 * TAU / 360.
            500.0,        // thermal inertia
            2146.0,       // density
            600.0,        // heat capacity
            0.07,         // albedo
            0.9,          // emissivity
        ),
        -V3::new(1.0, 0.0, 0.0) * 1.5e3, // relative position
    );

    binary_system.complete_model(true);
    binary_system.primary_mut().fixed(true);
    binary_system.secondary_mut().fixed(true);
    binary_system.set_target_secondary(true);

    // Time
    let time = Time::new(10.0 * DAY, 30.0 * MINUTE);

    // World
    let mut world = World::new(time, binary_system);
    world.start();
    world.save("rsc/data/tmp.txt");

    println!(
        "min: {:.2}, max: {:.2}",
        world.environment_system.body().surface_temperatures().min(),
        world.environment_system.body().surface_temperatures().max()
    );
}
