#pragma once
#include "CDTable.h"

struct CDRailActivatorComponent {
	int32_t id;
	std::u16string startAnimation;
	std::u16string loopAnimation;
	std::u16string stopAnimation;
	std::u16string startSound;
	std::u16string loopSound;
	std::u16string stopSound;
	std::pair<uint32_t, std::u16string> startEffectID;
	std::pair<uint32_t, std::u16string> loopEffectID;
	std::pair<uint32_t, std::u16string> stopEffectID;
	std::string preconditions;
	bool playerCollision;
	bool cameraLocked;
	bool damageImmune;
	bool noAggro;
	bool showNameBillboard;
};

class CDRailActivatorComponentTable : public CDTable<CDRailActivatorComponentTable, std::vector<CDRailActivatorComponent>> {
public:
	void LoadValuesFromDatabase();
	[[nodiscard]] CDRailActivatorComponent GetEntryByID(int32_t id) const;
private:
	static std::pair<uint32_t, std::u16string> EffectPairFromString(std::string& str);
};