#pragma once

// Custom Classes
#include "CDTable.h"
#include <map>

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

 //! CDEmoteEntry Struct
struct CDEmoteTable {
	CDEmoteTable() {
		ID = -1;
		animationName = "";
		iconFilename = "";
		locState = -1;
		channel = -1;
		locked = false;
		localize = false;
		gateVersion = -1;
	}

	int ID;
	std::string animationName;
	std::string iconFilename;
	int locState;
	int channel;
	bool locked;
	bool localize;
	int gateVersion;
};

//! CDEmoteTable table
class CDEmoteTableTable : public CDTable {
private:
	std::map<int, CDEmoteTable*> entries;

public:

	//! Constructor
	CDEmoteTableTable(void);

	//! Destructor
	~CDEmoteTableTable(void);

	//! Returns the table's name
	/*!
	 \return The table name
	 */
	std::string GetName(void) const override;

	//! Returns an emote by ID
	CDEmoteTable* GetEmote(int id);
};