//------------------------------------------------------------------------------
//
// File   : AVP_Server_Messages.h
// Author : Gareth Thomas
// Date   : 31 / 05 / 07
// Copyright (C) 2007 Rebellion, All Rights Reserved.
//------------------------------------------------------------------------------

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif   // ifdef ASURA_USE_PRAGMA_ONCE

#ifndef __AVP_SERVER_MESSAGES_H__
#define __AVP_SERVER_MESSAGES_H__

//#include "Entity/ToolsAVP_Message_Editing.h"

//------------------------------------------------------------------------------
// Include files...
//------------------------------------------------------------------------------

#include "Core/Asura_Maths.h"

//------------------------------------------------------------------------------
// Forward class declarations...
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Class declaration...
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Class        : AVP_Server_Messages
// Author       : Gareth Thomas
// Date         : 2-Nov-2006
//------------------------------------------------------------------------------
class AVP_Message_Convert_Player_To_AI
{
public:

	// Public functions...

private:

	AVP_Message_Convert_Player_To_AI  (void);
	~AVP_Message_Convert_Player_To_AI ();

};
/// End of class 'AVP_Message_Convert_Player_To_AI'. ///

//------------------------------------------------------------------------------
// Class        : AVP_Server_Messages
// Author       : Gareth Thomas
// Date         : 15-Oct-2007
//------------------------------------------------------------------------------
class AVP_Message_SetFormationDirection
{
public:
	AVP_Message_SetFormationDirection  (void)	{}

	// Public functions...
	void	Initialise(void)	{ m_iFormationDirection = 0; m_fFormationDistance = 2.0f; }

	void			SetDirection(u_int iDirection)			{m_iFormationDirection = iDirection;}
	int				GetDirection() const					{return m_iFormationDirection;}

	void			SetFormationDistance(float fDist)		{m_fFormationDistance = fDist;}
	float			GetFormationDistance() const			{return m_fFormationDistance;}
	
	int				m_iFormationDirection;
	float			m_fFormationDistance;

private:

};
/// End of class 'AVP_Message_SetFormationDirection'. ///

//------------------------------------------------------------------------------
// Class        : AVP_Message_CreatePlayerActor
// Author       : Anthony Gregson
// Date         : 06/11/07
//------------------------------------------------------------------------------

// AJG - 06/11/07 - This could be a respawn message, depending on if we need different handling at the start of the game to the middle of the game or not.
//					As such this may change slightly, or possibly quite a lot, as we nail down how that's going to work.
class AVP_Message_CreatePlayerActor
{
public:
	u_int			m_uRequestedSpecies;
	u_int			m_uRequestedMultiplayerTeam;
	bool			m_bRespawn;
};
/// End of class 'AVP_Message_CreatePlayerActor'. ///

//----------------------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////////////////
//  CLASS    :  AVP_Message_JoinReady
//  CREATED  :  JG (2.6.2008)
//  DESC     :  Client machine is ready to play
//////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------
class AVP_Message_JoinReady
{
public:
	AVP_Message_JoinReady()										{ m_uPlayerGuid = ASURA_GUID_UNREGISTERED; }

	Asura_Guid	GetPlayerGuid( void ) const						{ return m_uPlayerGuid; }
	void		SetPlayerGuid( const Asura_Guid uPlayerGuid)	{ m_uPlayerGuid = uPlayerGuid; }	
protected:
	Asura_Guid		m_uPlayerGuid;
};

class AVP_Message_LightChange
{
public:
	const Asura_Bounding_Box& GetOldBB() const { return m_xOldBB; }
	void SetOldBB( const Asura_Bounding_Box& xOldBB ) { m_xOldBB = xOldBB; }
	void InvalidateOldBB() { m_xOldBB.Reset(); }

	const Asura_Bounding_Box& GetNewBB() const { return m_xNewBB; }
	void SetNewBB( const Asura_Bounding_Box& xNewBB ) { m_xNewBB = xNewBB; }
	void InvalidateNewBB() { m_xNewBB.Reset(); }

private:
	Asura_Bounding_Box m_xOldBB;
	Asura_Bounding_Box m_xNewBB;
};

#endif // __AVP_SERVER_MESSAGES_H__
/// End of File 'AVP_Server_messages.h'. ///
