/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */

#pragma once

#include <string>
#include <spdlog/fmt/fmt.h> //TODO replace with external fmt

namespace OpenVulkano
{
	inline const char* ENGINE_NAME = "OpenVulkano";

	struct EngineVersion
	{
		int major, minor, patch;
		int intVersion;
		std::string stringVersion;

		EngineVersion(int major, int minor, int patch, int build = 0) : major(major), minor(minor), patch(patch)
		{
			intVersion = ((major) << 24) | ((minor) << 16) | (patch);
			std::string_view buildConfig;
#ifdef _DEBUG
			buildConfig = "MSVC_DEBUG";
#elif DEBUG
			buildConfig = "DEBUG";
#endif
			stringVersion = fmt::format("v{0}.{1}.{2}.{3}{4}", major, minor, patch, build, buildConfig);
		}
	};

	inline const EngineVersion ENGINE_VERSION(0, 0, 1);
}
