/* ==========================================================================
* 파    일 : PartyStateWindow.h
* 목    적 : 
* 작 성 자 : 김가람
* 작 성 일 : 2007-11-07
* 주의사항 :
*===========================================================================*/
#pragma once
#include "UIWindow.h"

class cUIImage;
class cGauge;
class cLabel;
class cPartyBuff;
enum ePLAYER_JOB;

/// 파티원 상태 윈도우
class cPartyStateWindow : public cUIWindow
{
public:
	cPartyStateWindow();
	virtual ~cPartyStateWindow();

	void InitPosition( int i );

	void Clear();
	void ClearBuff();

	/// 파티정보와 관련된 인덱스 및 갱신
	void LinkPartyIndex( int i );
	int GetLinkPartyIndex() { return mLinkPartyIndex; }

	/// 선택됨 설정
	void SetTarget();
	void ReleaseTarget( unsigned long namecolor );

	/// 유저인덱스 세팅
	void SetUserIndex( unsigned long index );
	unsigned long GetUserIndex();

	/// 리더세팅
	void SetLeader( bool set );

	///
	void SetMaxHP( int max );			/// hp max 세팅
	void SetHPGauge( int front );		/// hp 세팅
	void SetMaxMP( int max );			/// mp max 세팅
	void SetMPGauge( int front );		/// mp 세팅
	void SetName( LPCTSTR name, eText_Color color = eCOLOR_WHITE );
	void SetNameColor( eText_Color color );
	void SetLevel( unsigned char level );
	void SetJob( ePLAYER_JOB job );
	void SetMapNum( unsigned int mapnum );

	/// 파티원 버프 아이콘 세팅
	void AddBuff( unsigned long uniqueIdx, unsigned long influenceIdx );
	void DelBuff( unsigned long uniqueIdx );
	void DelDeBuff( unsigned long uniqueIdx );

	/// 윈도우 사이즈 조정
	void UpdateSize();

	/// 게이지, 버프윈도우 보이기 여부
	void ShowData( bool show );

	void ShowTop(bool hideOthers = false, bool onsound = true );

protected:
	bool OnCreate( cUINodeProperty* pproperty );
	void OnRender(cUIFontItemKeeper* pKeeper );
	void OnLButtonDown( const cUIPos& pos, bool ctrl, bool alt, bool shiftPress );
	void OnLButtonDoubleClick(const cUIPos& pos );
	virtual void OnRButtonUp( const cUIPos& pos );
	void OnMouseHovered( const cUIPos& pos );
	void OnMouseLeft( const cUIPos& pos );
	void UpdateRect();
	void UpdateSkin();
	void OnShow();
	void OnHide();

private:
	cUINodeSkin* mpNodeSkin;
	cUIImage*	mpBack;

	bool		mShowLeader;
	cUINodeSkin* mpLeaderSkin;
	cUIImage*	mpLeaderImage;

	/// 클래스 이미지
	cUIImage*		mpJobImage;
	cUINodeSkin*	mpJobSkin;

	/// 맵이름
	cStringT		mMapName;

	/// 
	unsigned long	mUserIndex;

	cGauge*	mpHPGauge;
	cGauge*	mpMPGauge;
	cLabel*		mpLevel;
	cLabel*		mpName;

	/// 버프윈도우
	cPartyBuff*	mpBuff;

	/// 파티정보와 연결된 인덱스
	int mLinkPartyIndex;
};


inline void cPartyStateWindow::SetUserIndex( unsigned long index )
{
	mUserIndex = index;
}

inline unsigned long cPartyStateWindow::GetUserIndex()
{
	return mUserIndex;
}

inline void cPartyStateWindow::SetLeader(bool set )
{
	mShowLeader = set;
}
