#ifndef _DNAMP1_DRONE_HPP_
#define _DNAMP1_DRONE_HPP_

#include "../../DNACommon/DNACommon.hpp"
#include "IScriptObject.hpp"
#include "Parameters.hpp"

namespace DataSpec
{
namespace DNAMP1
{
struct Drone : IScriptObject
{
    DECL_YAML
    String<-1> name;
    Value<atUint32> unknown1;
    Value<atVec3f> location;
    Value<atVec3f> orientation;
    Value<atVec3f> scale;
    Value<float> unknown2;
    PatternedInfo patternedInfo;
    ActorParameters actorParameters;
    DamageInfo damageInfo1;
    Value<atUint32> unknown3;
    DamageInfo damageInfo2;
    Value<atUint32> unknown4;
    Value<atUint32> unknown5;
    Value<atUint32> unknown6;
    FlareDefinition flareDefinition1;
    FlareDefinition flareDefinition2;
    FlareDefinition flareDefinition3;
    FlareDefinition flareDefinition4;
    FlareDefinition flareDefinition5;
    Value<float> unknown7;
    Value<float> unknown8;
    Value<float> unknown9;
    Value<float> unknown10;
    Value<float> unknown11;
    Value<float> unknown12;
    Value<float> unknown13;
    Value<float> unknown14;
    Value<float> unknown15;
    Value<float> unknown16;
    Value<float> unknown17;
    Value<float> unknown18;
    Value<float> unknown19;
    Value<float> unknown20;
    Value<float> unknown21;
    Value<float> unknown22;
    Value<float> unknown23;
    Value<float> unknown24;
    Value<float> unknown25;
    UniqueID32 crsc;
    Value<float> unknon26;
    Value<float> unknon27;
    Value<float> unknon28;
    Value<float> unknon29;
    Value<atUint32> sound; // verification needed
    Value<bool> unknown30;

    void addCMDLRigPairs(PAKRouter<PAKBridge>& pakRouter,
            std::unordered_map<UniqueID32, std::pair<UniqueID32, UniqueID32>>& addTo) const
    {
        actorParameters.addCMDLRigPairs(addTo, patternedInfo.animationParameters.getCINF(pakRouter));
    }

    void nameIDs(PAKRouter<PAKBridge>& pakRouter) const
    {
        if (crsc)
        {
            PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(crsc);
            ent->name = name + "_crsc";
        }
        flareDefinition1.nameIDs(pakRouter, name + "_flare1");
        flareDefinition2.nameIDs(pakRouter, name + "_flare2");
        flareDefinition3.nameIDs(pakRouter, name + "_flare3");
        flareDefinition4.nameIDs(pakRouter, name + "_flare4");
        flareDefinition5.nameIDs(pakRouter, name + "_flare5");
        patternedInfo.nameIDs(pakRouter, name + "_patterned");
        actorParameters.nameIDs(pakRouter, name + "_actp");
    }
};
}
}

#endif