#ifndef XNA_PLATFORM_GAME_DX_HPP
#define XNA_PLATFORM_GAME_DX_HPP

#include "../game/game.hpp"
#include "clock-dx.hpp"
#include "dxgi.h"
#include "d3d11.h"

namespace xna {
	class Game : public IGame {
	public:
		Game();

		virtual ~Game() override {
		}

		virtual void Exit() override{}
		virtual int Run() override;
		
		virtual PGameWindow Window() override {
			return _gameWindow;
		}

		virtual PGraphicsDevice GetGraphicsDevice() override {
			return _graphicsDevice;
		}

	protected:
		virtual void Draw(GameTime const& gameTime) override{}
		virtual void Initialize() override { LoadContent(); }
		virtual void LoadContent() override{}
		virtual void Update(GameTime const& gameTime) override{}		

	public:
		PGraphicsDevice _graphicsDevice{ nullptr };		

	protected:		
		PGameWindow _gameWindow{ nullptr };
		
		GameClock _clock{};
		GameTime _currentGameTime{};
		
	private:
		int startLoop();
		void tick();
	};
}

#endif