//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//=============================================================================//

#ifndef EVENTPROPERTIES_H
#define EVENTPROPERTIES_H
#ifdef _WIN32
#pragma once
#endif

#include "basedialogparams.h"

class CChoreoScene;
class CChoreoEvent;

//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
class CEventParams : public CBaseDialogParams
{
public:
	// e.g. CChoreoEvent::GESTURE
	int				m_nType;

	// Event descriptive name
	char			m_szName[ 256 ];

	// Expression name/wav name/gesture name/look at name
	char			m_szParameters[ 256 ];
	char			m_szParameters2[ 256 ];
	char			m_szParameters3[ 256 ];

	CChoreoScene	*m_pScene;

	float			m_flStartTime;
	float			m_flEndTime;
	bool			m_bHasEndTime;

	CChoreoEvent	*m_pEvent;

	bool			m_bDisabled;
	bool			m_bFixedLength;

	bool			m_bResumeCondition;

	bool			m_bLockBodyFacing;
	float			m_flDistanceToTarget;

	bool			m_bForceShortMovement;

	bool			m_bSyncToFollowingGesture;

	bool			m_bPlayOverScript;

	bool			m_bUsesTag;
	char			m_szTagName[ 256 ];
	char			m_szTagWav[ 256 ];

	// For Lookat events
	int				pitch;
	int				yaw;
	bool			usepitchyaw;

	// For speak
	bool			m_bCloseCaptionNoAttenuate;

};

int EventProperties( CEventParams *params );

class CBaseEventPropertiesDialog
{
public:
	virtual void		InitDialog( HWND hwndDlg ) = 0;
	virtual BOOL		HandleMessage( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) = 0;
	virtual void		SetTitle() = 0;

	HWND		GetControl( int id ) { return GetDlgItem( m_hDialog, id ); }

	virtual void ShowControlsForEventType( CEventParams *params );
	virtual void		InitControlData( CEventParams *params );

protected:
	virtual BOOL InternalHandleMessage( CEventParams *params, HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, bool& handled );

	void		SetDialogTitle( CEventParams *params, char const *eventname, char const *desc );

	void		UpdateTagRadioButtons( CEventParams *params );
	void		PopulateTagList( CEventParams *params );
	void		ParseTags( CEventParams *params );

	void		PopulateNamedActorList( HWND wnd, CEventParams *params );

	void		GetSplineRect( HWND placeholder, RECT& rcOut );
	void		DrawSpline( HDC hdc, HWND placeholder, CChoreoEvent *e );

protected:

	HWND		m_hDialog;
};

#endif // EVENTPROPERTIES_H