/* ==========================================================================
* 파    일 : NpcWindow.h
* 목    적 : 
* 작 성 자 : 김가람
* 작 성 일 : 2008-06-19
* 주의사항 :
*===========================================================================*/
#pragma once
#include "UIWindow.h"

struct sQuestStatus
{
	unsigned long questIdx;		/// 퀘스트 인덱스
	unsigned int status;		/// 진행상태
};

class cUINpcTelling;
class cButton;
class cLabel;
class cTextBox;
class cListBox;
class cUITransformImage;
//class cUIImage;

/// Npc 윈도우
class cNpcWindow : public cUIWindow
{
public:
	cNpcWindow();
	virtual ~cNpcWindow();

	void Show( unsigned int npcClassIdx, unsigned long npcIndex, LPCTSTR npcName );

	void UIStageIn();
	void Close();

	/// 새로운 퀘스트 리스트 삽입
	void Clear();
	void AddQuest( unsigned long questIdx, unsigned int status );
	void ShowDefaultPage();

	/// 장면 정보 세팅
	bool UpdateDialog();

	///
	void HideESC( bool onsound );

protected:
	bool OnCreate( cUINodeProperty* property );
	void OnRender( cUIFontItemKeeper* pKeeper );
	void UpdateSkin();
	void OnShow();
	void OnHide();
	void OnCommand( cUINode* node, unsigned int id );
	void OnListBoxChanged( cUINode* , unsigned int );
	void OnNetLock( int lockTry );
	void OnNetUnLock( int lockTry );

	void SelectQuest();

	/// 대사 장면 정보 세팅
	bool SetDialog( unsigned long quetIdx, unsigned int status );
	void UpdateScene();
	
protected:
	/// 데이터 삭제용
	typedef tPointerArray<void*> cDelArr;
	cDelArr	mDelArr;

	/// 이름 라벨
	cLabel* mNameLabel;

	/// 대사 상자
	cTextBox* mpTextBox;

	/// 퀘스트 리스트
	cListBox* mpQuestList;

	/// 기능 버튼
	cButton* mpClose;
	cButton* mpStoreButton;
	cButton* mpWareHouseButton;
	cButton* mpSkillStoreButton;
	cButton* mpDisjointButton;
	cButton* mpGuildButton;
	cButton* mpTarotButton;

	/// Npc 아이디
	unsigned int mNpcClassIndex;	/// 클래스 인덱스
	unsigned long mNpcIndex;		/// 오브젝트 인덱스

	/// 대사
	cUINpcTelling* mTelling;

	/// 뒷 배경 지우기 플래그
	bool	mHideBack;

	/// 스킬상점 버튼 활성화 여부 ( 해당 npc가 가진 스킬트리와 다르면 열지않는다 )
	bool	mIsUseSkillStore;

	///	퀘스트 대화중인지 여부
	bool	mIsUseQuest;

	/// 현재 대사정보와 관련있는 퀘스트
	unsigned long mQuestIndex;
	unsigned int mStatus;
	unsigned int mNextPageIdx;

	/// NPC 이미지
	cUITransformImage*	mSceneImage;
	cUINodeSkin*	mSceneSkin;
	unsigned long mSceneIndex;
};
