/* Class: Video Engine Class

   Desc: This class provides the main engine for all video functions.
*/

class objEntryClass
{
   public:
	   objEntryClass();
	   ~objEntryClass();
	   void setRect(RECT *);
	   RECT * getRect();
	   int getWidth();
	   int getHeight();

   private:
	   RECT objRect;
};

class videoEngineClass
{
	public:
		videoEngineClass(int, int, int);
		~videoEngineClass();
		int initVideo(HINSTANCE, int);
		void blankBack();
		void update();

		//Graphic surface initializers
		void loadCursorset();
		void loadTileset();
		void loadObjectset();
		
		void setViewBorder(RECT);
		void setCamera(int, int);
		int getCameraX();
		int getCameraY();
		int getCameraWidth();
		int getCameraHeight();
		void setCursor(int);
		void setCursorPtrs(int *, int *);

		void getObjectCenter(int passIndex, int *, int*);
		void drawObject(int passX, int passY, int passTable, int passIndex); //1 = tileset, 2 = objectset
		void drawCursor(int passUseBuffer);

		void fade(int passMethod); // 0 = to black, 1 = to white, 2 = from black, 3 = from white
		void test();


		HWND hWnd;

		objEntryClass cursorArray[50];
		objEntryClass tileArray[300];
		objEntryClass objectArray[50];

	private:

		LPDIRECTDRAW7 g_pDD;
		LPDIRECTDRAWSURFACE7 frontSurface;
		LPDIRECTDRAWSURFACE7 backSurface;
		LPDIRECTDRAWPALETTE palette;
		LPDIRECTDRAWGAMMACONTROL gammaControl;

		int timerID;
		int timerRate;
		int camX, camY;
		int vidWidth, vidHeight, vidDepth;
		RECT viewBorder;

		//Start game specific
		LPDIRECTDRAWSURFACE7 cursorSurface[2];
		LPDIRECTDRAWSURFACE7 tileSurface;
		LPDIRECTDRAWSURFACE7 objectSurface;
		
		int cursor;

		int *cursorX;
		int *cursorY;
		int cursorXOld, cursorYOld;

};



