#include "rive/artboard.hpp"
#include "rive/animation/blend_animation.hpp"
#include "rive/animation/layer_state.hpp"
#include "rive/importers/layer_state_importer.hpp"
#include "rive/importers/artboard_importer.hpp"

using namespace rive;

StatusCode BlendAnimation::import(ImportStack& importStack) {
    auto importer =
        importStack.latest<LayerStateImporter>(LayerStateBase::typeKey);
    if (importer == nullptr) {
        return StatusCode::MissingObject;
    } else if (!importer->addBlendAnimation(this)) {
        return StatusCode::InvalidObject;
    }

    auto artboardImporter =
        importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
    if (artboardImporter == nullptr) {
        return StatusCode::MissingObject;
    }

    auto artboard = artboardImporter->artboard();
    auto animationCount = artboard->animationCount();
    if (animationId() >= 0 && animationId() < animationCount) {
        m_Animation = artboardImporter->artboard()->animation(animationId());
    }

    return Super::import(importStack);
}