⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 characterinfo.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			pos = i;
			return &m_Ability[i];
		}
	}

	return NULL;
}

void CCharacterInfo::EditControlCommand(UINT nId)
{
	WORD wPos;
	CChangeData* pData = NULL;
	CString str1, str2;
	DWORD before_data, after_data;

	if( nId >= IDC_CHAR_NAME && nId < IDC_CHAR_ABILITYPOINT+1 )
	{
		wPos = (WORD)(nId - IDC_CHAR_NAME);	// Tool 单捞磐狼 硅凯牢郸胶
		
		if( wPos > eCharTemp_ABILITYPOINT )
			return;

		BYTE type = 0;

		/////////////////////////////////////////////////////
		// error check (捞傈 单捞磐肺 傈券)
		TABLE_KIND kind = GetTableKindByControlID(nId);

		if( m_StatusEdit[wPos].GetWindowTextLength() == 0 || kind == eTK_None )
		{
			if( m_StatusEdit[wPos].IsTextTypeData() )
				m_StatusEdit[wPos].GetStringData(str1.GetBuffer(0));
			else
			{
				before_data = m_StatusEdit[wPos].GetData();
				str1.Format("%d", before_data);
			}

			m_StatusEdit[wPos].SetWindowTextEx(str1);
			m_StatusEdit[wPos].SetChanged(FALSE);
			return;
		}

		// 函版等 单捞磐啊 乐绰瘤 眉农茄促.
		if( !m_StatusEdit[wPos].IsChanged() )
			return;
		else
			m_StatusEdit[wPos].SetChanged(FALSE);
		/////////////////////////////////////////////////////

		// str1:函版Data, str2:捞傈Data
		m_StatusEdit[wPos].GetWindowText(str2);
		if( m_StatusEdit[wPos].IsTextTypeData() )
		{
			m_StatusEdit[wPos].GetStringData(str1.GetBuffer(0));

			if( strcmp(str1, str2) == 0 ) // 函版等 单捞鸥啊 鞍篮版快
			{
				CMREdit* pEdit = (CMREdit*)GetDlgItem(nId);
				pEdit->ResetEditTextColor();
				pEdit->SetInSave(FALSE);
				m_pDocument->GetChangeManager()->Delete(nId);
				return;
			}
		}
		else
		{
			before_data = m_StatusEdit[wPos].GetData();

			m_StatusEdit[wPos].CheckMaxValue(str2.GetBuffer(0));
			m_StatusEdit[wPos].GetWindowText(str2);
			after_data = (DWORD)atoi(str2.GetBuffer(0));

			if( before_data == after_data )
			{
				CMREdit* pEdit = (CMREdit*)GetDlgItem(nId);
				pEdit->ResetEditTextColor();
				pEdit->SetInSave(FALSE);
				m_pDocument->GetChangeManager()->Delete(nId);
				return;
			}

			str1.Format("%d", before_data);
			type = 1;
		}

		pData = (CChangeData*)m_pDocument->GetChangeManager()->ExistChangeInfo(nId);

		if( !pData )
		{
			pData = new CChangeData;

			pData->Init(eOp_Update, kind, wPos);
			pData->SetData(str1.GetBuffer(0), str2.GetBuffer(0), type);
		}
		else
		{
			pData->Init(eOp_Update, kind, wPos);
			pData->SetData(str1.GetBuffer(0), str2.GetBuffer(0), type);
			return;
		}
	}
	else
		return;
	
	// Control狼 Index甫 Key蔼栏肺 茄促.
	m_pDocument->GetChangeManager()->Add(pData, nId);
	CMREdit* pEdit = (CMREdit*)GetDlgItem(nId);
	pEdit->SetEditTextColor(COLOR_EDIT_CHANGED);
	pEdit->SetInSave();
}

TABLE_KIND CCharacterInfo::GetTableKindByControlID(UINT nId)
{
	TABLE_KIND kind = eTK_None;

	if( nId >= IDC_CHAR_NAME &&	nId < IDC_CHAR_ABILITYPOINT+1 )
	{
		if( nId == IDC_CHAR_PYOGUKMONEY )
			kind = eTK_PyogukInfo;
		else
			kind = eTK_CharacterInfo;
	}

	return kind;
}

void CCharacterInfo::ButtonControlCommand(UINT nId)
{
	CMRButton* pBtn = (CMRButton*)GetDlgItem( nId );
	if( !pBtn ) return;

	WORD wPos;
	int tab, result;

	if( nId >= IDC_BTN_INVENOBJ1 && nId < IDC_BTN_INVENOBJ20+1 )	 // 牢亥配府
	{
		tab = m_cbInven.GetCurSel()*TABCELL_INVENTORY_NUM;
		wPos = tab + nId - IDC_BTN_INVENOBJ1;

		// 扁夯 沥焊
		ITEMBASE* origin = &m_pDocument->m_sInven_org.Inventory[wPos];
		ITEMBASE* base_before = &m_pDocument->m_sInven.Inventory[wPos];
		ITEMBASE base_after;

		// 可记 沥焊
		ITEM_OPTION_INFO* pOptionInfoOrigin = NULL;
		ITEM_OPTION_INFO* pOptionInfo = NULL;
		ITEM_OPTION_INFO Option_after;
		if( GAMERESRCMNGR->IsOptionItem( origin->wIconIdx, origin->Durability ) )
			pOptionInfoOrigin = m_pDocument->GetItemOptionInfoOrigin( origin->Durability );
		if( GAMERESRCMNGR->IsOptionItem( base_before->wIconIdx, base_before->Durability ) )
			pOptionInfo = m_pDocument->GetItemOptionInfo( base_before->Durability );

		result = ItemEdit( eIF_INVENTORY, wPos, base_before, base_after, pOptionInfo, Option_after );

		if( result == eMR_Cancel || result == eMR_Abort ) return;
		if( result == eMR_Delete )
		{
			if( MessageBox("Are You Really Delete?",NULL, MB_YESNO) == IDNO )
				return;
		}
		
		base_after.Position = TP_INVENTORY_START + wPos;
		ResultItemEdit( eIF_INVENTORY, result, TP_INVENTORY_START + wPos, nId, origin, pOptionInfoOrigin, base_before, &base_after, pOptionInfo, &Option_after );
	}
	else if( nId >= IDC_BTN_WEAROBJ1 && nId < IDC_BTN_WEAROBJ10+1 )	// 馒侩芒
	{ 
		// 厘馒 滚瓢
		wPos = nId - IDC_BTN_WEAROBJ1;
		
		ITEMBASE* origin = &m_pDocument->m_sInven_org.WearedItem[wPos];
		ITEMBASE* base_before = &m_pDocument->m_sInven.WearedItem[wPos];
		ITEMBASE base_after;

		ITEM_OPTION_INFO* pOptionInfoOrigin = NULL;
		ITEM_OPTION_INFO* pOptionInfo = NULL;
		ITEM_OPTION_INFO Option_after;
		if( GAMERESRCMNGR->IsOptionItem(origin->wIconIdx, origin->Durability) )
			pOptionInfoOrigin = m_pDocument->GetItemOptionInfoOrigin(origin->Durability);
		if( GAMERESRCMNGR->IsOptionItem(base_before->wIconIdx, base_before->Durability) )
			pOptionInfo = m_pDocument->GetItemOptionInfo(base_before->Durability);
		
		result = ItemEdit( eIF_WEAR, wPos, base_before, base_after, pOptionInfo, Option_after );
		if( result == eMR_Cancel || result == eMR_Abort ) return;
		if( result == eMR_Delete )
		{
			if( MessageBox("Are You Really Delete?",NULL, MB_YESNO) == IDNO )
				return;
		}
		
		base_after.Position = TP_WEAR_START + wPos;
		ResultItemEdit( eIF_WEAR, result, TP_WEAR_START + wPos, nId, origin, pOptionInfoOrigin, base_before, &base_after, pOptionInfo, &Option_after );
	}
	else if( nId >= IDC_BTN_PYOGUK1 && nId < IDC_BTN_PYOGUK30+1 )	// 芒绊
	{ 
		tab = m_cbPyoguk.GetCurSel()*TABCELL_PYOGUK_NUM;

		wPos = tab + nId - IDC_BTN_PYOGUK1;
		ITEMBASE* origin = &m_pDocument->m_sPyoguk_org.Pyokuk[wPos];
		ITEMBASE* base_before = &m_pDocument->m_sPyoguk.Pyokuk[wPos];
		ITEMBASE base_after;

		ITEM_OPTION_INFO* pOptionInfoOrigin = NULL;
		ITEM_OPTION_INFO* pOptionInfo = NULL;
		ITEM_OPTION_INFO Option_after;
		if( GAMERESRCMNGR->IsOptionItem(origin->wIconIdx, origin->Durability) )
			pOptionInfoOrigin = m_pDocument->GetItemOptionInfoOrigin(origin->Durability);
		if( GAMERESRCMNGR->IsOptionItem(base_before->wIconIdx, base_before->Durability) )
			pOptionInfo = m_pDocument->GetItemOptionInfo(base_before->Durability);

		result = ItemEdit( eIF_PHYOGUK, wPos, base_before, base_after, pOptionInfo, Option_after );

		if( result == eMR_Cancel || result == eMR_Abort ) return;
		if( result == eMR_Delete )
		{
			if( MessageBox("Are You Really Delete?",NULL, MB_YESNO) == IDNO )
				return;
		}
		
		base_after.Position = TP_PYOGUK_START + wPos;
		ResultItemEdit( eIF_PHYOGUK, result, TP_PYOGUK_START + wPos, nId, origin, pOptionInfoOrigin, base_before, &base_after, pOptionInfo, &Option_after );
	}
	else if( nId >= IDC_BTN_SKILL1 && nId < IDC_BTN_JINBUB5+1 )		// 公傍
	{ 
		// 公傍 滚瓢
		wPos = nId - IDC_BTN_SKILL1;
		
		MUGONGBASE* origin = &m_pDocument->m_sMugong_org.mugong[wPos];
		MUGONGBASE* base_before = &m_pDocument->m_sMugong.mugong[wPos];
		MUGONGBASE base_after;

		if( nId < IDC_BTN_JINBUB1 )
		{ // 老馆 公傍 
			result = MugongEdit(eIF_MUGONG, wPos, base_before, base_after);
		}
		else
		{ // 柳过
			result = MugongEdit(eIF_JINBUB, wPos, base_before, base_after);
		}

		if( result == eMR_Cancel || result == eMR_Abort ) return;
		if( result == eMR_Delete )
		{
			if( MessageBox("Are You Really Delete?",NULL, MB_YESNO) == IDNO )
				return;
		}
		
		base_after.Position = TP_MUGONG_START + wPos;
		ResultMugongEdit( result, TP_MUGONG_START + wPos, nId, origin, base_before, &base_after );
	}
	else if( nId >= IDC_BTN_ABLITY1 && nId < IDC_BTN_ABLITY40+1 )		// 漂扁
	{ 
		tab = m_cbAbility.GetCurSel();
		wPos = nId - IDC_BTN_ABLITY1;

		WORD wAbilityIdx = (WORD)m_Ability[wPos].GetData();
		if( wAbilityIdx == 0 )
			return;

		WORD n = wAbilityIdx - (ABILITY_STARTINDEX_BATTLE + ABILITY_STARTINDEX_INTERVAL*tab);

		char origin = m_pDocument->m_sAbility_org.AbilityDataArray[tab][n];
		char base_before = m_pDocument->m_sAbility.AbilityDataArray[tab][n];
		char base_after;

		result = AbilityEdit( wPos, wAbilityIdx, base_before, base_after );
		if( result == eMR_Cancel || result == eMR_Abort ) return;

		m_pDocument->m_sAbility.AbilityDataArray[tab][n] = base_after;

		if( !m_pDocument->IsSetSaveFlag(eTK_AbilityInfo) )
			m_pDocument->UpdateData(MAKEWPARAM(eTK_AbilityInfo, 0));

		CMRButton* btn = (CMRButton*) GetDlgItem(nId);
		btn->SetColorText(COLOR_BUTTON_CHANGED);
	}
	else if( nId >= IDC_BTNINVEN_ERROR1 && nId < IDC_BTNINVEN_ERROR10+1 )	 // error
	{
		wPos = nId - IDC_BTNINVEN_ERROR1;

		// 扁夯 沥焊
		ITEMBASE* base_before = &m_pDocument->m_InvenInfoError.m_ItemInfo[wPos];
		
		int pos = GetEmptyPosition( 0 );
		if( pos == -1 )
		{
			MessageBox( "Can't Change Item Position!!" );
			return;
		}

		base_before->Position = pos;
		memcpy( &m_pDocument->m_sInven.Inventory[pos], base_before, sizeof(ITEMBASE) );

		ResultPositionEdit( 0, base_before );

		DWORD id = IDC_BTN_INVENOBJ1 + pos;

		if( pos >= 80 )
			return;

		char buff[256] = {0,};
		ITEM_INFO* pInfo;

		if( base_before->wIconIdx != 0)
		{
			pInfo = GAMERESRCMNGR->GetItemInfo(base_before->wIconIdx);
			if( pInfo )
				sprintf(buff, pInfo->ItemName);
			else
				sprintf(buff, "%d", base_before->wIconIdx);
		}
		else
			sprintf(buff, "");

		CMRButton* btn = (CMRButton*)GetDlgItem(id);
		btn->SetWindowText(buff);
		btn->SetData(base_before->wIconIdx);
		btn->SetColorText(COLOR_BUTTON_CHANGED);

		btn = (CMRButton*)GetDlgItem(nId);
		btn->Release();
		btn->ShowWindow( FALSE );
	}
	else if( nId >= IDC_BTN_WAREERROR1 && nId < IDC_BTN_WAREERROR5+1 )
	{
		wPos = nId - IDC_BTN_WAREERROR1;

		ITEMBASE* base = &m_pDocument->m_WareError.Pyokuk[wPos];
		
		int pos = GetEmptyPosition( 1 );
		if( pos == -1 )
		{
			MessageBox( "Can't Change Item Position!!" );
			return;
		}

		base->Position = pos+TP_PYOGUK_START;
		memcpy( &m_pDocument->m_sPyoguk.Pyokuk[pos], base, sizeof(ITEMBASE) );
		ResultPositionEdit( 1, base );

		DWORD id = IDC_BTN_PYOGUK1 + pos;
		if( pos >= TABCELL_PYOGUK_NUM )
			return;

		// error btn
		CMRButton* btn = (CMRButton*)GetDlgItem(nId);
		btn->Release();
		btn->ShowWindow( FALSE );

		char buff[256] = {0,};
		ITEM_INFO* pInfo;
		if( base->wIconIdx != 0)
		{
			pInfo = GAMERESRCMNGR->GetItemInfo(base->wIconIdx);
			if( pInfo )
				sprintf(buff, pInfo->ItemName);
			else
				sprintf(buff, "%d", base->wIconIdx);
		}
		else
			sprintf(buff, "");

		btn = (CMRButton*)GetDlgItem(id);
		btn->SetWindowText(buff);
		btn->SetData(base->wIconIdx);
		btn->SetColorText(COLOR_BUTTON_CHANGED);
	}
	else if( nId >= IDC_BTN_SKILLERROR1 && nId < IDC_BTN_SKILLERROR5+1 )
	{
		wPos = nId - IDC_BTN_SKILLERROR1;

		MUGONGBASE* base = &m_pDocument->m_MugongError.m_MugongBase[wPos];

		int pos = -1;
		if( base->Position < TP_MUGONG_END )
			pos = GetEmptyPosition( 2 );
		else
			pos = GetEmptyPosition( 3 );
		if( pos == -1 )
		{
			MessageBox( "Can't Change Item Position!!" );
			return;
		}

		base->Position = pos+TP_MUGONG_START;
		memcpy( &m_pDocument->m_sMugong.mugong[pos], base, sizeof(MUGONGBASE) );
		ResultPositionEdit( 2, base );

		DWORD id = IDC_BTN_SKILL1 + pos;

		// error btn
		CMRButton* btn = (CMRButton*)GetDlgItem(nId);
		btn->Release();
		btn->ShowWindow( FALSE );


		char buff[256]={0,};
		SKILLINFO* pInfo = NULL;

		if( base->wIconIdx != 0 )
		{
			pInfo = GAMERESRCMNGR->GetSkillInfo( base->wIconIdx );
			if( pInfo )
				sprintf( buff, pInfo->SkillName );
			else
				sprintf( buff, "%d", base->wIconIdx );
		}
		else
			sprintf( buff, "" );

		btn = (CMRButton*)GetDlgItem(id);
		btn->SetWindowText(buff);
		btn->SetData(base->wIconIdx);
		btn->SetColorText(COLOR_BUTTON_CHANGED);
	}
	else if( nId == IDC_BTN_INVEN_RECOVER )
	{
		m_pItemRecoverDlg = new CItemRecoverDlg;
		int result = m_pItemRecoverDlg->DoModal();
		if( result == 99 )
		{
			int total = 0;
			int count = m_pItemRecoverDlg->m_nItemNum / 5;
			int r = m_pItemRecoverDlg->m_nItemNum % 5;
			if( r )
				total = count + 1;
			else
				total = count;
			
			if( total > GetEmptyPositionCount( 0 ) )
			{
				MessageBox( "牢亥配府啊 面盒窍瘤 臼嚼聪促.!!", "Error!!" );
			}
			else
			{
				RecoverInven( m_pItemRecoverDlg->m_nItemIdx, count, r );
			}
		}
		SAFE_DELETE(m_pItemRecoverDlg);
	}
	else
	{ // 贸府 救窃.
	}
}

void CCharacterInfo::RecoverInven( DWORD dwItemIdx, int nCount, int nR )
{
	CChangeManager* pManager = m_pDocument->GetChangeManager();
	CChangeItem* pItem = NULL;
	ITEMBASE* pAItemBase = NULL;
	ITEM_INFO* pInfo = NULL;
	CMRButton* btn = NULL;
	char buff[256] = {0,};
	
	for( int i = 0; i < nCount; ++i )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -