#pragma once

// Custom Classes
#include "CDTable.h"

/*!
 \file CDObjectsTable.hpp
 \brief Contains data for the Objects table
 */

//! RebuildComponent Struct
struct CDObjects {
    unsigned int id;                            //!< The LOT of the object
    std::string name;                      //!< The internal name of the object
    UNUSED(unsigned int placeable);                     //!< Whether or not the object is placable
    std::string type;                      //!< The object type
    UNUSED(std::string description);               //!< An internal description of the object
    UNUSED(unsigned int localize);                      //!< Whether or not the object should localize
    UNUSED(unsigned int npcTemplateID);                 //!< Something related to NPCs...
    UNUSED(std::string displayName);               //!< The display name of the object
    float interactionDistance;          //!< The interaction distance of the object
    UNUSED(unsigned int nametag);                       //!< ???
    UNUSED(std::string _internalNotes);            //!< Some internal notes (rarely used)
    UNUSED(unsigned int locStatus);                     //!< ???
    UNUSED(std::string gate_version);              //!< The gate version for the object
    UNUSED(unsigned int HQ_valid);                      //!< Probably used for the Nexus HQ database on LEGOUniverse.com
};

//! ObjectSkills table
class CDObjectsTable : public CDTable {
private:
    //std::vector<CDObjects> entries;
	std::map<unsigned int, CDObjects> entries;
	CDObjects m_default;
    
public:
    
    //! Constructor
    CDObjectsTable(void);
    
    //! Destructor
    ~CDObjectsTable(void);
    
    //! Returns the table's name
    /*!
      \return The table name
     */
    std::string GetName(void) const override;
    
	//! Gets an entry by ID
	const CDObjects& GetByID(unsigned int LOT);

};