public void Open(GameObject goRoot, body_SC_INDUN_QUEST_PROGRESS_INFO data)
	{
		m_goRoot = goRoot;
		gameObject.SetActiveRecursively( true);
	
		_ReSizeBg( data);
		
		textInfoTitle.Text = AsTableManager.Instance.GetTbl_String( 1891);
		textInfo_1.Text = "";
		textInfo_1_Count.Text = "";
		textInfo_2.Text = "";
		textInfo_2_Count.Text = "";
		textInfo_3.Text = "";
		textInfo_3_Count.Text = "";

		Tbl_InsQuestGroup_Record record = AsTableManager.Instance.GetInsQuestGroupRecord( data.nInsQuestGroupTableUniqCode);
		
		if( null == record)
		{
			Debug.LogError( "AsIndunQuestInfoDlg::Open(), null == record, data.nInsQuestGroupTableUniqCode: " + data.nInsQuestGroupTableUniqCode);
			return;
		}

		if( record.Monster1_Kill_Count > 0)
			textInfo_1.Text = _GetMonsterKindName( record.Monster_Kind_ID1);
		
		if( record.Monster2_Kill_Count > 0)
			textInfo_2.Text = _GetMonsterKindName( record.Monster_Kind_ID2);
		
		if( record.Monster3_Kill_Count > 0)
			textInfo_3.Text = _GetMonsterKindName( record.Monster_Kind_ID3);
	}
	public void SetIndunQuestInfo(body_SC_INDUN_QUEST_PROGRESS_INFO data)
	{
		Tbl_InsQuestGroup_Record record = AsTableManager.Instance.GetInsQuestGroupRecord( data.nInsQuestGroupTableUniqCode);
		
		if( null == record)
		{
			Debug.LogError( "AsIndunQuestInfoDlg::SetIndunQuestInfo(), null == record, data.nInsQuestGroupTableUniqCode: " + data.nInsQuestGroupTableUniqCode);
			return;
		}

		Color textColor = Color.white;

		if( record.Monster1_Kill_Count > 0)
		{
			if( data.nQuestProgress_1 == record.Monster1_Kill_Count)
				textColor = textIndunQuestFinishColor;
			else
				textColor = textIndunQuestColor;

			textInfo_1.Text = textColor + _GetMonsterKindName( record.Monster_Kind_ID1);
			textInfo_1_Count.Text = textColor + "(" + data.nQuestProgress_1.ToString() + "/" + record.Monster1_Kill_Count.ToString() + ")";
		}
		
		if( record.Monster2_Kill_Count > 0)
		{
			if( data.nQuestProgress_2 == record.Monster2_Kill_Count)
				textColor = textIndunQuestFinishColor;
			else
				textColor = textIndunQuestColor;

			textInfo_2.Text = textColor + _GetMonsterKindName( record.Monster_Kind_ID2);
			textInfo_2_Count.Text = textColor + "(" + data.nQuestProgress_2.ToString() + "/" + record.Monster2_Kill_Count.ToString() + ")";
		}
		
		if( record.Monster3_Kill_Count > 0)
		{
			if( data.nQuestProgress_3 == record.Monster3_Kill_Count)
				textColor = textIndunQuestFinishColor;
			else
				textColor = textIndunQuestColor;

			textInfo_3.Text = textColor + _GetMonsterKindName( record.Monster_Kind_ID3);
			textInfo_3_Count.Text = textColor + "(" + data.nQuestProgress_3.ToString() + "/" + record.Monster3_Kill_Count.ToString() + ")";
		}
	}
	private void _ReSizeBg(body_SC_INDUN_QUEST_PROGRESS_INFO data)
	{
		/*
		    y position   bg height
		1:     10.5        1.5
		2:     10.1        2.3
		3:      9.7        3
		*/
		
		Tbl_InsQuestGroup_Record record = AsTableManager.Instance.GetInsQuestGroupRecord( data.nInsQuestGroupTableUniqCode);
		
		if( null == record)
		{
			Debug.LogError( "AsIndunQuestInfoDlg::_ReSizeBg(), null == record, data.nInsQuestGroupTableUniqCode: " + data.nInsQuestGroupTableUniqCode);
			return;
		}
		
		int nQuestCount = 0;
		
		if( record.Monster1_Kill_Count > 0)
			nQuestCount++;
		
		if( record.Monster2_Kill_Count > 0)
			nQuestCount++;
		
		if( record.Monster3_Kill_Count > 0)
			nQuestCount++;
		
		Vector3 vPos = bgGrid.gameObject.transform.localPosition;
		float fHeight = 3.0f;
		
		switch( nQuestCount)
		{
		case 1: vPos.y = 10.5f; fHeight = 1.5f; break;
		case 2: vPos.y = 10.1f; fHeight = 2.3f; break;
		case 3: vPos.y = 9.7f; fHeight = 3.0f; break;
		}

		bgGrid.height = fHeight;
		bgGrid.Assign();
		
		bgGrid.gameObject.transform.localPosition = vPos;
	}
	public void Open(GameObject goRoot, int nPlayTimeSec, int nExp, int nAddExp, long lGold, long lAddGold, long lExchangeGold, long lExchangeAddGold, body_SC_INDUN_QUEST_PROGRESS_INFO IndunQuestProgressInfo)
	{
		m_goRoot = goRoot;
		gameObject.SetActiveRecursively( true);

		AsLanguageManager.Instance.SetFontFromSystemLanguage( m_textTitle);
		AsLanguageManager.Instance.SetFontFromSystemLanguage( m_textClearTime);
		AsLanguageManager.Instance.SetFontFromSystemLanguage( m_textBonusExp);
		AsLanguageManager.Instance.SetFontFromSystemLanguage( m_textBonusGold);
		AsLanguageManager.Instance.SetFontFromSystemLanguage( m_textTitleRewardItem);
		AsLanguageManager.Instance.SetFontFromSystemLanguage( m_textTitleQuestItem);
		AsLanguageManager.Instance.SetFontFromSystemLanguage( m_textBtn);
		
		m_textTitle.Text = AsTableManager.Instance.GetTbl_String( 2319);
		int nMin = 0;
		int nSec = 0;
		if( nPlayTimeSec > 0)
		{
			nMin = nPlayTimeSec / 60;
			nSec = nPlayTimeSec % 60;
			if( nMin > 99)
			{
				nMin = 99;
				nSec = 59;
			}
		}

		m_textClearTime.Text = string.Format( AsTableManager.Instance.GetTbl_String( 1896), nMin.ToString(), nSec.ToString());
		//m_textBonusExp.Text = string.Format( AsTableManager.Instance.GetTbl_String( 1876), nExp.ToString(), nAddExp.ToString());
		m_textBonusGold.Text = string.Format( AsTableManager.Instance.GetTbl_String( 1877), lGold.ToString(), lAddGold.ToString());
		m_textTitleRewardItem.Text = AsTableManager.Instance.GetTbl_String( 1879);
		m_textTitleQuestItem.Text = AsTableManager.Instance.GetTbl_String( 2197);
		m_textBtn.Text = AsTableManager.Instance.GetTbl_String( 4109);

		Tbl_GlobalWeight_Record record = AsTableManager.Instance.GetTbl_GlobalWeight_Record( 69);
		if( null != record)
		{
			if( AsUserInfo.Instance.SavedCharStat.level_ >= record.Value)
				m_textBonusExp.Text = string.Format( AsTableManager.Instance.GetTbl_String( 2359), lExchangeGold.ToString(), lExchangeAddGold.ToString());
			else
				m_textBonusExp.Text = string.Format( AsTableManager.Instance.GetTbl_String( 1876), nExp.ToString(), nAddExp.ToString());
		}
		else
			m_textBonusExp.Text = string.Format( AsTableManager.Instance.GetTbl_String( 1876), nExp.ToString(), nAddExp.ToString());

		m_textRewardItem_1.Text = "";
		m_textRewardItem_2.Text = "";
		m_textRewardItem_3.Text = "";
		m_textRewardItem_4.Text = "";
		
		m_nSelect = 0;
		
		if( ( nAddExp > 0 || lExchangeAddGold > 0) && lAddGold > 0)
		{
			//_SetIndunQuestRewardItem( IndunQuestProgressInfo);
			m_nIndunQuestProgressInfoBuff = IndunQuestProgressInfo;
		}
		else
		{
			m_nIndunQuestProgressInfoBuff.nInsQuestGroupTableUniqCode = 0;
		}

		m_bSend_InDun_Reward_GetItem = false;
		m_bBtnOKClick = false;
		
		AsSoundManager.Instance.PlaySound( "Sound/Interface/S6143_EFF_Indun_Complete_Popup", Vector3.zero, false);
	}
	private void _SetIndunQuestRewardItem( body_SC_INDUN_QUEST_PROGRESS_INFO data)
	{
		if( 0 == data.nInsQuestGroupTableUniqCode)
			return;

		Tbl_InsQuestGroup_Record record = AsTableManager.Instance.GetInsQuestGroupRecord( data.nInsQuestGroupTableUniqCode);
		if( null == record)
		{
			Debug.LogError( "AsIndunRewardDlg::_SetIndunQuestRewardItem(), null == record, data.nInsQuestGroupTableUniqCode: " + data.nInsQuestGroupTableUniqCode);
			return;
		}
		
		eCLASS eCurClass = (eCLASS)( AsUserInfo.Instance.SavedCharStat.class_);
		int nIndunQuestRewardItemID = 0;
		int nIndunQuestRewardItemCount = 0;
		
		switch( eCurClass)
		{
		case eCLASS.DIVINEKNIGHT:
			nIndunQuestRewardItemID = record.Knight_Reward;
			nIndunQuestRewardItemCount = record.Knight_Reward_Count;
			break;
			
		case eCLASS.MAGICIAN:
			nIndunQuestRewardItemID = record.Magician_Reward;
			nIndunQuestRewardItemCount = record.Magician_Reward_Count;
			break;
			
		case eCLASS.CLERIC:
			nIndunQuestRewardItemID = record.Cleric_Reward;
			nIndunQuestRewardItemCount = record.Cleric_Reward_Count;
			break;
			
		case eCLASS.HUNTER:
			nIndunQuestRewardItemID = record.Hunter_Reward;
			nIndunQuestRewardItemCount = record.Hunter_Reward_Count;
			break;
		}
		
		Item item = ItemMgr.ItemManagement.GetItem( nIndunQuestRewardItemID);
		
		if( null == item)
		{
			Debug.LogError( "AsIndunRewardDlg::_SetIndunQuestRewardItem(), null == item, nIndunQuestRewardItemID: " + nIndunQuestRewardItemID);
			return;
		}
		
		m_RewardItem_4.CreateSlotItem( item, gameObject.transform);
		m_RewardItem_4.SetItemCountText( nIndunQuestRewardItemCount);
		m_textRewardItem_4.Text = AsTableManager.Instance.GetTbl_String( item.ItemData.nameId);
	}
	public void Recv_Integrated_Indun_Quest_Progress_Info(body_SC_INDUN_QUEST_PROGRESS_INFO data)
	{
		m_nIndunQuestProgressInfoBuff = data;
		
		// indun starg message
		if( false == m_bStartOnce)
		{
			if( false == IsOpenIndunQuestInfoDlg)
				StartCoroutine( OpenIndunQuestInfoDlg());
			
			_ShowIndunMsg( true);
			AsSoundManager.Instance.PlaySound( "Sound/Interface/S6142_EFF_Indun_Start", Vector3.zero, false);
			
			m_bStartOnce = true;
		}

		if( null != m_IndunQuestInfoDlg)
			m_IndunQuestInfoDlg.SetIndunQuestInfo( data);
	}
	void Receive_Integrated_Indun_Quest_Progress_Info( byte[] _packet)
	{
		body_SC_INDUN_QUEST_PROGRESS_INFO result = new body_SC_INDUN_QUEST_PROGRESS_INFO();
		result.PacketBytesToClass( _packet);
		
		AsInstanceDungeonManager.Instance.Recv_Integrated_Indun_Quest_Progress_Info( result);
	}