#pragma once

#include "ITickable.hpp"
#include "ICloseable.hpp"
#include "UI/IWindow.hpp"

namespace OpenVulkano
{
	class PlatformInitFailedException : public std::runtime_error
	{
	public:
		PlatformInitFailedException(char const* const message) : runtime_error(message) {}
	};

	class IPlatform : public ITickable, public ICloseable
	{
	public:
		virtual void Init() = 0;

		virtual IWindow* MakeWindow() = 0;
	};
}
