#pragma once
#include "timer.h"
#include "window.h"
#include <SDL2/SDL.h>
//#include "combinedEvent.h"
#include "eventHandler.h"
#include "eventManager.h"
#include "inputSystem.h"
#include "loopManager.h"
#include "uiObject.h"
#include "uiRenderer.h"
#include <memory>
class LoopManager {
public:
	LoopManager();
	void setup();
	void loop();
	void setRunning(bool running);

private:
	void processInput();
	void update();
	void lateUpdate();
	void fixedUpdate();
	void render();
	void onShutdown(const ShutDownEvent & e);
	bool gameRunning = false;
	WindowManager window;
	int timeScale = 1;
	float accumulator = 0.0;
	double currentTime;
	double t = 0.0;
	double dt = 0.01;
	std::unique_ptr<InputSystem> inputSystem;
	EventHandler<ShutDownEvent> shutdownHandler;
};