/* ==========================================================================
* 파    일 : ItemMixWindow.h
* 목    적 : 아이템 조합 윈도우
* 작 성 자 : 김가람 
* 작 성 일 : 2009-01-09
* 주의사항 :
*===========================================================================*/
#pragma once
#include "NpcStoreListBox.h"

class cLabel;
class cGauge;
class cNumberEditBox;
class cComboBox;
class cListFolderBox;
class cUIImage;
class cItemMixListBox;
class cItemIcon;
struct sKeepRecipe;

class cItemMixWindow : public cUIWindow
{
public:
	cItemMixWindow();
	virtual ~cItemMixWindow();

	void Clear();

	/// 조합 스킬 인덱스
	bool InsertMakeSkill( unsigned char index );
	bool DeleteMakeSkill( unsigned char index );

	/// 레시피 추가
	bool InsertRecipe( unsigned char index, unsigned long recipeIdx );

	/// 완료 갯수 세팅
	void SetCompleteCount( int count );

	void StartGauge( float speed );
	void StopGauge();

	/// 조합 완료후 쿨타임정보 갱신
	void UpdateMixCool();

	/// 조합 할수 있는 아이템 갯수만 갱신
	void CheckItemCount();

	void HideESC( bool onsound );

protected:
	bool OnCreate( cUINodeProperty* pproperty );
	void OnProcess( unsigned long deltaTime, unsigned long accumTime );
	void OnCommand( cUINode* , unsigned int );
	void OnComboSelected( cUINode* , unsigned int );
	void OnListBoxChanged( cUINode* , unsigned int );
	void OnGaugeEnd( cUINode* , unsigned int );
	void OnShow();
	void OnHide();
	void OnNetLock( int lockTry );
	void OnNetUnLock( int lockTry );

	void UpdateMixList( int index );

	/// 조합 아이템 정보 갱신
	void UpdateMixInfo();
	
	void InitCoolTime();

	unsigned long GetMaxValue( unsigned long recipeIdx );

private:
	cLabel*		mpCoolTime;			/// 조합 대기시간
	cLabel*		mpCompleteCount;	/// 조합 완성된 갯수

	cGauge*			mpGaugeBar;			/// 조합 게이지
	cComboBox*		mpMixSkillCombo;	/// 조합 스킬 콤보박스
	cUIImage*		mpHighImage;		/// 폴더 박스 체크 이미지관리
	cListFolderBox*		mpMixSkillList; /// 조합스킬 폴더리스트
	cItemMixListBox*	mpItemMixList;	/// 조합 아이템 정보 리스트박스
	cNumberEditBox*		mpMixCount;		/// 조합갯수 입력 에디트

	cUINode*	mpMixStart;
	cUINode*	mpMixGiveUp;
	cUINode*	mpMixStop;

	///
	sKeepRecipe*	mpRecipeCool;	/// 레시피 쿨타임

	/// 결과 확률 라벨
	cItemIcon*	mpResultIcon[3];
	cLabel*		mpResultRate[3];
};

//----------------------------------------------------------
// 상점스타일 리스트박스
class cItemMixListBox : public cNpcStoreListBox
{
public:
	cItemMixListBox( eUINodeType type = eUINODE_LISTBOX );
	virtual ~cItemMixListBox() {}

protected:
	bool OnCreate(cUINodeProperty* pproperty );
	void OnLButtonDown( const cUIPos& pos, bool ctrl, bool alt, bool shift ) {}
};
