namespace StandardScene.CarTypes
{
    // Kiva 系字段袋。原内联于 Kiva.cs；车型按平台拆分（Kiva→Magnetic，ArmCar→QrLidar）后，
    // ArmCarXxxFields 仍继承这些类，故下沉基座供两侧插件共用（internal + InternalsVisibleTo）。

    class KivaCarFields : BasicCarFields
    {

    }

    class KivaSiteFields : BasicSiteFields
    {
        public int AngleTarget = 0;
        public bool Turn = false;

        public float FetchSpeed = 0;
        public int FetchLidarArea = -2;
        public int FetchIOArea = -1;
        public bool FetchReverse = false;
        public float FetchBlindMoveDist = 0;
        public float FetchLiftDownTarget = -1;
        public float FetchLiftUpTarget = -1;
        public bool FetchUseQr = false;
        public int FetchQrMode = -1;
        public bool FetchIsUpQr = false;
        public bool FetchUseDetector = false;
        public int FetchDetector = 0;
        public float FetchDetectWidth = -1;
        public float FetchDetectDepth = -1;
        public bool FetchLeaveSrcEarly = false;
        public float FetchShieldObstacleDist = -1;

        public float PutSpeed = 0;
        public int PutLidarArea = -1;
        public int PutIOArea = -1;
        public bool PutReverse = false;
        public bool PutSyncRotate = false;
        public float PutBlindMoveDist = 0;
        public float PutLiftDownTarget = -1;
        public float PutLiftUpTarget = -1;
        public bool PutUseQr = false;
        public int PutQrMode = -1;
        public bool PutIsUpQr = false;
        public bool PutUseDetector = false;
        public int PutDetector = 0;
        public float PutDetectWidth = -1;
        public float PutDetectDepth = -1;
        public bool PutLeaveSrcEarly = false;
        public float PutShieldObstacleDist = -1;

        public float LeaveShelfSpeed = 0;
        public int LeaveShelfLidarArea = -1;
        public int LeaveShelfIOArea = -1;
        public bool LeaveShelfReverse = false;
        public bool LeaveShelfSyncRotate = false;
        public float LeaveShelfBlindMoveDist = 0;
        public float LeaveShelfLiftDownTarget = -1;
        public float LeaveShelfRecoveryObstacleDist = -1;
    }

    class KivaTrackFields : BasicTrackFields
    {
        public int ManeuverDir = 0;
        public int ForwardDst = 0;
        public int ForwardObChooseDst = -2;
        public float BlindMoveDist = 0;
        public bool UseDetector = false;
        public int DetectorMode = -1;
        public float DetectWidth = -1;
        public float DetectDepth = -1;
        public bool LeaveSrcEarly = false;
        public float ShieldObstacleDist = -1;
    }

    class KivaPlanFields : BasicPlanFields
    {
        public bool reverse = false;
        public int level = 0;
    }
}
