#ifndef __Wumbo_Program_h__
#define __Wumbo_Program_h__
#include "Wumbo-Header.h"
#if PLATFORM_PC
#include <SFML/Graphics.hpp>
#elif PLATFORM_IOS
#include "Wumbo-iOSRoot.h"
#endif

namespace Wumbo
{
	class Scene;
	class Renderer;
	class InputManager;

	class Program
	{
	protected:
		Scene *scene;
		Scene *newScene;
		Renderer *renderer;
		InputManager *inputManager;

		int assignedFrameRate;
#if PLATFORM_PC
		sf::RenderWindow *sfmlwindow;
#elif PLATFORM_IOS
		id glkcontroller;
		id appdelegate;
#endif
	public:
		Program();
		virtual void begin();
		virtual void update();
		virtual void render();
		virtual void end();
		Scene *getScene();
		void setScene(Scene *scn);
		Renderer *getRenderer();
		void setRenderer(Renderer *rend);
		InputManager *getInputManager();
		void setInputManager(InputManager *inputman);

		void setAssignedFrameRate(int num);
		int getAssignedFrameRate();

#if PLATFORM_PC
		void setSFMLWindow(sf::RenderWindow *window);
		sf::RenderWindow *getSFMLWindow();
#else
		void setGLKViewController(id controller);
		id getGLKViewController();
		void setAppDelegate(id delegate);
		id getAppDelegate();
		
		void addSupportedOrientation(UIDeviceOrientation orient);
		void removeSupportedOrientation(UIDeviceOrientation orient);
#endif
	};
};
#endif