#pragma once

#include <optional>
#include <string>
#include <vector>

#include <QPoint>
#include <QString>

#include "BuildingType.h"
#include "ItemType.h"
#include "Rotation.h"
#include "ShipLayout.h"

struct BlueprintBuilding
{
    BuildingType type;
    Rotation     rotation;
    QPoint       offset;     // tile offset from bounding-box center (floor for even sizes)
    std::string  recipeId;   // empty = none selected
    std::optional<ShipLayoutConfig> shipLayout;

    // Splitter output filters captured at blueprint creation (REQ-UI-BLUEPRINT-STORAGE).
    // Empty = accept all. Re-applied to the placed splitter site (REQ-UI-BLUEPRINT-PLACE).
    std::vector<ItemType> splitterFilterA;
    std::vector<ItemType> splitterFilterB;
};

struct Blueprint
{
    QString                        name;
    std::vector<BlueprintBuilding> buildings;
};
