#ifndef GL_CODE_H_INCLUDED
#define GL_CODE_H_INCLUDED

#ifdef TARGET_ANDROID
//#include "android_api.h"
#endif

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <memory>

#include "boost/shared_ptr.hpp"
/*#include "boost/thread/thread.hpp"
#include "boost/signal.hpp"
#include "boost/assign.hpp"
#include "boost/bind.hpp"
*/
#include "include/Engine.h"

#include "match3/match3field.h"

class TMatch3Field;

class TMatch3Controller
{
public:
	std::shared_ptr<TMatch3Field> Match3Field;


	TMatch3Controller()
	{	
	}

};


//Application class
class TMyApplication : public SE::TApplication
{
public:
	bool Inited;

	TMatch3Controller Match3Controller;

	SE::TRenderPair testPair;
	
	TMyApplication() : Inited(false) { }

	virtual void InnerInit();
	//What to do on init

	virtual void InnerDeinit();
	//What to do on deinit

	virtual void InnerDraw();
	//What to do on draw 

	virtual void InnerUpdate(size_t timer);
	//What to do on update. timer means how many ms passed since last update


	virtual void InnerOnTapDown(Eigen::Vector2f p) override;

	virtual void InnerOnTapUp(Eigen::Vector2f p) override;

	virtual void InnerOnMove(Eigen::Vector2f pos, Eigen::Vector2f shift) override;
};

#ifndef TARGET_IOS
extern std::shared_ptr<TMyApplication> App;
#endif

#endif
