// -----------------------------------------------------------------------
/*
	\author: Jaap Suter
   
	Copyright (C) Electronic Arts Canada Inc. 2002.  All rights reserved.	
*/
// -----------------------------------------------------------------------

/*! \file */

#ifndef REVEAL_REAL_5_INPUT_STATE_IMPL_H
#define REVEAL_REAL_5_INPUT_STATE_IMPL_H

#include "reveal/input_state.h"

#include <assert.h>
#include <realinput.h>

#if defined NGC
#	include "reveal/impl/real_5_input_state_impl_ngc.h"
#elif defined PS2
#	include "reveal/impl/real_5_input_state_impl_ps2.h"
#elif defined XBOX
#	include "reveal/impl/real_5_input_state_impl_xbox.h"
#else
#   error "This platform is not implemented using real. Find another way"
#endif

namespace Reveal {

// -----------------------------------------------------------------------
/*!
	\brief Simple Real 5 implementation of the InputState class 
		   for NGC, Xbox, and PS2
*/
// -----------------------------------------------------------------------
class Real5InputStateImpl : public InputState
{
public:

	Real5InputStateImpl( size_t padId ) : mInputImpl( padId ) {}

protected:

	// -------------------------------------------------------------------
	virtual int DoMouseRelX() const 
	{ 
        return mInputImpl.DoMouseRelX();
	}

	// -------------------------------------------------------------------
	virtual int	DoMouseRelY() const 
	{ 
		return mInputImpl.DoMouseRelY();
	}

	// -------------------------------------------------------------------
	virtual Reveal::uint32_t DoDown() const 
	{ 
		return mInputImpl.DoDown();
	}

	// -------------------------------------------------------------------
	virtual int DoAuxRelX() const 
	{ 
		return mInputImpl.DoAuxRelX();
	}

	// -------------------------------------------------------------------
	virtual int	DoAuxRelY() const 
	{ 
		return mInputImpl.DoAuxRelY();
	}

	// -------------------------------------------------------------------
	virtual int	DoLeftShoulder() const 
	{ 
		return mInputImpl.DoLeftShoulder();
	}
	
	// -------------------------------------------------------------------
	virtual int	DoRightShoulder() const 
	{ 
		return mInputImpl.DoRightShoulder();
	}

private:

	Impl::RealInputImpl mInputImpl;
};

} // Namespace Reveal;

#endif

