#pragma once

#include <QVector2D>

// The winning behavior's executor writes this each tick before movement runs.
// `active` is false when no behavior set a destination (the ship brakes); the
// score-based selection (see architecture.md "Movement Arbitration") decides
// which single executor writes here.
struct MovementIntentComponent
{
    bool      active = false;
    QVector2D target;                   // straight-line destination, or orbit center when orbitRadius_tiles > 0
    float     orbitRadius_tiles = 0.0f; // 0 ⇒ go straight to target; >0 ⇒ orbit target at this radius
    QVector2D orbitCenterVelocity_tpt;  // velocity of the orbit center (0 for a static center); the orbit
                                        // sense is resolved relative to this so a moving target's own motion
                                        // does not bias it
};
