# coding: utf-8
# license: GPLv3
import pygame as pg
from solar_objects import SkyObject
from solar_vis import DrawableObject

def read_space_objects_data_from_file(input_filename):
    """Cчитывает данные о космических объектах из файла, создаёт сами объекты
    и вызывает создание их графических образов

    Параметры:

    **input_filename** — имя входного файла
    """

    objects = []
    with open(input_filename, 'r') as input_file:
        for line in input_file:
            if len(line.strip()) == 0 or line[0] == '#':
                continue  # пустые строки и строки-комментарии пропускаем
            skyobject = SkyObject()
            parse_sky_object_parameters(line, skyobject)
            objects.append(skyobject)
    return [DrawableObject(obj) for obj in objects]




def parse_sky_object_parameters(line, sky_object):
    """Считывает данные о планете из строки.
    Входная строка должна иметь слеюущий формат:

    Planet <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>

    Здесь (x, y) — координаты планеты, (Vx, Vy) — скорость.

    Пример строки:

    Planet 10 red 1000 1 2 3 4

    Параметры:

    **line** — строка с описанием планеты.

    **sky_object** — объект планеты.
    """
    tokens = line.split()
    assert(len(tokens) == 8)
    sky_object.R = int(tokens[1])
    sky_object.color = pg.color.THECOLORS[tokens[2]]
    sky_object.m = float(tokens[3])
    sky_object.x = float(tokens[4])
    sky_object.y = float(tokens[5])
    sky_object.Vx = float(tokens[6])
    sky_object.Vy = float(tokens[7])


def write_space_objects_data_to_file(output_filename, space_objects):
    """Сохраняет данные о космических объектах в файл.

    Строки должны иметь следующий формат:

    Star <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>

    Planet <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>

    Параметры:

    **output_filename** — имя входного файла

    **space_objects** — список объектов планет и звёзд
    """
    with open(output_filename, 'w') as out_file:
        for obj in space_objects:
            print(out_file, "%s %d %s %f" % ('1', 2, '3', 4.5))
            # FIXME!

if __name__ == "__main__":
    print("This module is not for direct call!")
