#pragma once

#include "rpcs3qt/render_creator.h"

#include <string>
#include <QThread>

struct EmuCallbacks;
class gs_frame;

class main_application
{
public:
	main_application();

	virtual bool Init() = 0;

	static void InitializeEmulator(const std::string& user, bool show_gui, bool headless);

	void SetActiveUser(const std::string& user)
	{
		m_active_user = user;
	}

protected:
	virtual QThread* get_thread() = 0;

	void OnEmuSettingsChange();

	EmuCallbacks CreateCallbacks();

	std::shared_ptr<render_creator> m_render_creator;
	std::string m_active_user;
	gs_frame* m_game_window = nullptr;
};
