#pragma once
#include "Mod.h"

class ArrayList : public Mod {
public:
	int style = 0;
	float size = 1.2f;
	float opacity = 0.3f;
	float padding = 0.f;
	float barwidth = 1.f;
	float barrounding = 0.f;
	float barpadding = 0.f;

	int shadow = 0;
	float shadowamount = 0.5f;
	float shadowopacity = 0.2f;
	bool shadowinterfaceColor = true;
	float blurs = 5.f;

	bool bold = true;
	bool gradient = false;
	bool showMode = true;
	bool clickToggle = true;
	float colorindex = 5.f;

	ArrayList() : Mod(_("Array List"), _("Draws a list of currently enabled mods."), Category::RENDER) {
		settings.push_back(new Setting{ _("Style"), &style, new int(4), 0, 1, {_("Normal"), _("Outline"), _("Bar"), _("Right"), _("Border")}, true });

		settings.push_back(new Setting{ _("Bar Settings"), 0, 0, 0, 3, {}, true });
		settings.push_back(new Setting{ _("Bar Width"), &barwidth, new float(2.f), new float(0.f), 2, {}, true });
		settings.push_back(new Setting{ _("Bar Rounding"), &barrounding, new float(2.f), new float(0.f), 2, {}, true });
		settings.push_back(new Setting{ _("Bar Padding"), &barpadding, new float(2.f), new float(0.f), 2, {}, true });

		settings.push_back(new Setting{ _("General Settings"), 0, 0, 0, 3, {}, true });
		settings.push_back(new Setting{ _("Size"), &size, new float(2.f), new float(0.5f), 2, {}, true });
		settings.push_back(new Setting{ _("Opacity"), &opacity, new float(1.f), new float(0.f), 2, {}, true });
		settings.push_back(new Setting{ _("Padding"), &padding, new float(2.f), new float(0.f), 2, {}, true });

		settings.push_back(new Setting{ _("Shadow Settings"), 0, 0, 0, 3, {}, true });
		settings.push_back(new Setting{ _("Shadow"), &shadow, new int(1), new int(0), 1, {_("Normal"), _("Center")}, true});
		settings.push_back(new Setting{ _("Shadow Amount"), &shadowamount, new float(1.f), new float(0.f), 2, {}, true });
		settings.push_back(new Setting{ _("Shadow Opacity"), &shadowopacity, new float(1.f), new float(0.f), 2, {}, true });
		settings.push_back(new Setting{ _("Shadow Interface Color"), &shadowinterfaceColor, 0, 0, 0, {}, true });
		
		settings.push_back(new Setting{ _("Blur Settings"), 0, 0, 0, 3, {}, true });
		settings.push_back(new Setting{ _("Blurs"), &blurs, new float(10.f), new float(0.f), 2, {}, true, 10.f });

		settings.push_back(new Setting{ _("Text Settings"), 0, 0, 0, 3, {}, true });
		settings.push_back(new Setting{ _("Bold"), &bold, 0, 0, 0, {}, true });
		settings.push_back(new Setting{ _("Gradient Text"), &gradient, 0, 0, 0, {}, true });
		settings.push_back(new Setting{ _("Show Mode"), &showMode, 0, 0, 0, {}, true });
		settings.push_back(new Setting{ _("Click Toggle"), &clickToggle, 0, 0, 0, {}, true });
		settings.push_back(new Setting{ _("Color Index"), &colorindex, new float(10.f), new float(0.f), 2, {}, true, 10.f });

		enabled = true;
		visible = false;
	}

private:
	virtual auto onImGuiRender() -> void override;
	virtual auto onClient() -> void override;
	virtual auto getMode() -> std::string override;
};
