# -*- coding: utf-8 -*-

from visualiser import Visualiser

def run_simulation( simulation, configuration, controller ):
    visualiser = Visualiser((500, 500))
    simulation.input[0x3e80] = configuration
    t = 0
    for ports in simulation:
        port_values = [simulation.port[p] for p in range(0,5)]
        score, fuel_remaining, x, y, target_orbit_radius = port_values

        visualiser.visualise(t, score, fuel_remaining, x, y, target_orbit_radius)
        visualiser.log(t, score, fuel_remaining, x, y, target_orbit_radius)

        if controller:
            values = controller(t, *port_values)
            if values is not None:
                for input_port, value in values.items():
                    print values
                    simulation.input[input_port] = value
        if score:
            print "Score: ", score
            return score
        t += 1

