 //////////////////////////////////////////////////////////////////////////////
//
// PocketFrog - The Game Library for Pocket PC Devices
// Copyright 2002  Thierry Tremblay
//
// Permission to use, copy, modify, distribute and sell this software
// and its documentation for any purpose is hereby granted without fee,
// provided that the above copyright notice appear in all copies and
// that both that copyright notice and this permission notice appear
// in supporting documentation.  Thierry Tremblay makes no representations
// about the suitability of this software for any purpose.
// It is provided "as is" without express or implied warranty.
//
//////////////////////////////////////////////////////////////////////////////

#ifndef POCKETFROG_SAMPLE_BLIT_H
#define POCKETFROG_SAMPLE_BLIT_H

// linka dinamicamente la hekkus se richiesto
#ifdef ENABLE_AUDIO
	#pragma comment( lib, "hss.lib" )
#endif

#ifndef RELEASE_VERSION
	#include "DebugSock.h"
#endif
#include "GameFPS.h"
#include "PFrogConsole.h"
#include "GameSettings.h"
#include "Loader.h"
#include "Utils.h"
#include "SimpleTextSmall.h"
#include <PocketFrog/PocketFrog.h>

#ifdef DEBUG
#define FBASIC_VERSION "FBA 0.2462D"
#else
#define FBASIC_VERSION "FBA 0.2462"
#endif

#define CCRELCODE "AFBB4G801F"

using namespace Frog;



//////////////////////////////////////////////////////////////////////////////
//
// BlitSample
//
//////////////////////////////////////////////////////////////////////////////

class BlitSample : public Game
{
	DECLARE_WND_CLASS( _T(FBASIC_VERSION) );

private:
	
#ifndef RELEASE_VERSION
	DebugSock *dsock;
	// variabile impostata a true all'avvio e ci dice che dobbiamo ascoltare il socket nel loop
	bool _waitingSocket;
	int _waitSocketCount;
#endif


#ifdef DRAW_NAG
	// disegna il nagscreen
	SimpleTextSmall *nagtext;
	int nagcount;
	void DrawNag(Display *display);
	// variabili checks donateware
	bool donatecheck;
#endif

	// aggiorna lo stato per l'attesa del socket
	void WaitSocketConnection(Display *display);


	Utils *util;
	Loader *loader;

#ifdef ENABLE_AUDIO
	// puntatore alla hekkus
	hssSpeaker hss_speaker;
#endif

	// alcuni valori letti in fase di init dell'exe
	struct _configValues {
		short wantedFps;
		bool startInStepByStep;
		unsigned short listenPort;
		int socketTimeout;
		bool debug;
		Pixel startBGColor, startTransColor;
		// stringa contenente la lista degli script da ignorare in fase di include
		// perchè avevano lunghezza zero. Corregge il fatto che lzab non mette i files
		// di lunghezza zero.
		char *ignoredIncludeVoidScripts;
	} configValues;


	// al primo step, non chiamare il draw del loader (questo è usato per colorare lo schermo)
	// del colore di default, prima di entrare effettivamente nel loop
	bool _firstStepIgnoreDraw;

public:

    // Construction
    BlitSample();
	~BlitSample();

    // Framework callbacks
    virtual bool GameInit();
    virtual void GameEnd();
    virtual void GameLoop();
    virtual void StylusDown( Point stylus );
    virtual void StylusUp( Point stylus );
    virtual void StylusMove( Point stylus );
	virtual void ButtonUp(int button);
	virtual void ButtonDown(int button);
	virtual void GameLostFocus();
	virtual void GameGotFocus();
};



#endif
