#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_mixer.h"

#include <time.h>

#include "../functions/surfaces.hpp"

#ifndef EFFECTS_HPP_
#define EFFECTS_HPP_

const int RainVelocity = 20;

const int DARKNESS = 220;

class effects{

	private:
		//Sounds
		Mix_Chunk* thunder1;
		Mix_Chunk* thunder2;
		bool WichThunder;

		Mix_Chunk* CroweSound;


		//Blanker Sheets
		SDL_Surface* BlankerDark;
		SDL_Surface* BlankerDark2;
		SDL_Surface* BlankerDark3;


		//Fog
		SDL_Surface* Fog;
		int FogX[ 10 ];
		int FogY[ 10 ];

		//BigFog
		SDL_Surface* BigFogH, *BigFogV, *BigFogHF, *BigFogVF, *BigFogCorner, *BigFogCornerUR, *BigFogCornerDR, *BigFogCornerDL;
		int XH, YH,
		    XV, YV,
		    XC, YC;

		//Thunder Randomize
		int ThunderCounter;

		//Shadow
		SDL_Surface* Shadow;
		int ShadowCounter;
		int ShadowX;
		int ShadowY;

		//Crowe
		SDL_Surface* CroweSheet;
		int Crowe1X, Crowe2X, Crowe1Y, Crowe2Y;
		SDL_Rect crowe_offsets[ 3 ];
		int crowe_frame;
		int CroweCounter;


	public:

		effects();

		~effects();


		//Show effects
		void show( SDL_Surface* &, bool, bool );

		//Thunder
		void thunder();

		void show_thunder( SDL_Surface* & );

		//Shadow
		void shadow();

		void show_shadow( SDL_Surface* & );

		//Crowe
		void crowe();

		void show_crowe( SDL_Surface* & );

		//Fog
		void fog( int, int, bool );

		void show_fog( SDL_Surface* & );

		//BigFog

		void bigfog( int, int, bool );

		SDL_Surface* & getBigFogH();
		SDL_Surface* & getBigFogV();
		SDL_Surface* & getBigFogHF();
		SDL_Surface* & getBigFogVF();
		SDL_Surface* & getBigFogCorner();
		SDL_Surface* & getBigFogCornerUR();
		SDL_Surface* & getBigFogCornerDR();
		SDL_Surface* & getBigFogCornerDL();



		int& getXH();
		int& getYH();
		int& getXV();
		int& getYV();
		int& getXC();
		int& getYC();

		void move( int, int, bool );


};

#endif /* EFFECTS_HPP_ */
