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

📄 characterinfo.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	{
		int pos = GetEmptyPosition( 0 );
		if( pos == -1 )
			return;
		pAItemBase = &m_pDocument->m_sInven.Inventory[pos];
		pAItemBase->wIconIdx = dwItemIdx;
		pAItemBase->Position = pos;
		pAItemBase->Durability = 5;
		pItem = new CChangeItem;
		pItem->Init( eOp_Insert, eTK_InventoryItem, pos );
		ITEM_OPTION_INFO Option;
		memset( &Option, 0, sizeof(Option) );
		pItem->SetData( pAItemBase, pAItemBase, &Option, &Option );

		pManager->Add( pItem, pos, FALSE );

		pInfo = GAMERESRCMNGR->GetItemInfo(dwItemIdx);
		if( pInfo )
			sprintf(buff, pInfo->ItemName);
		else
			sprintf(buff, "%d", dwItemIdx);

		int nTab = m_cbInven.GetCurSel();
		int nControlIdx = (pos / 20);
		if( nTab == nControlIdx )
		{
			nControlIdx = IDC_BTN_INVENOBJ1 + (pos%20);
			btn = (CMRButton*)GetDlgItem(nControlIdx);
			btn->SetWindowText(buff);
			btn->SetData(dwItemIdx);
			btn->SetColorText(COLOR_BUTTON_CHANGED);
		}
	}

	if( nR )
	{
		int pos = GetEmptyPosition( 0 );
		if( pos == -1 )
			return;
		pAItemBase = &m_pDocument->m_sInven.Inventory[pos];
		pAItemBase->wIconIdx = dwItemIdx;
		pAItemBase->Position = pos;
		pAItemBase->Durability = nR;
		pItem = new CChangeItem;
		pItem->Init( eOp_Insert, eTK_InventoryItem, pos );
		ITEM_OPTION_INFO Option;
		memset( &Option, 0, sizeof(Option) );
		pItem->SetData( pAItemBase, pAItemBase, &Option, &Option );

		pManager->Add( pItem, pos, FALSE );

		pInfo = GAMERESRCMNGR->GetItemInfo(dwItemIdx);
		if( pInfo )
			sprintf(buff, pInfo->ItemName);
		else
			sprintf(buff, "%d", dwItemIdx);

		int nTab = m_cbInven.GetCurSel();
		int nControlIdx = (pos / 20);
		if( nTab == nControlIdx )
		{
			nControlIdx = IDC_BTN_INVENOBJ1 + (pos%20);
			btn = (CMRButton*)GetDlgItem(nControlIdx);
			btn->SetWindowText(buff);
			btn->SetData(dwItemIdx);
			btn->SetColorText(COLOR_BUTTON_CHANGED);
		}
	}
}

int CCharacterInfo::GetEmptyPositionCount( WORD wType )
{
	int count = 0;
	int i = 0;
	switch( wType )
	{
	case 0:		// inven
		{
			for( i = 0; i < 80; ++i )
			{
				if( m_pDocument->m_sInven.Inventory[i].dwDBIdx == 0 &&
					m_pDocument->m_sInven.Inventory[i].wIconIdx == 0 )
					++count;
			}
		}
		break;
	case 1:		// 芒绊
		{
			for( i = 0; i < TABCELL_PYOGUK_NUM*m_pDocument->m_sPyoguk.PyokukCount; ++i )
			{
				if( m_pDocument->m_sPyoguk.Pyokuk[i].dwDBIdx == 0 )
					++count;
			}
		}
		break;
	}

	return count;
}

int CCharacterInfo::GetEmptyPosition( DWORD dwType )
{
	int i = 0;
	switch( dwType )
	{
	case 0:		// inven
		{
			for( i = 0; i < 80; ++i )
			{
				if( m_pDocument->m_sInven.Inventory[i].dwDBIdx == 0 &&
					m_pDocument->m_sInven.Inventory[i].wIconIdx == 0 )
					return i;
			}
			return -1;
		}
		break;
	case 1:		// 芒绊
		{
			for( i = 0; i < TABCELL_PYOGUK_NUM*m_pDocument->m_sPyoguk.PyokukCount; ++i )
			{
				if( m_pDocument->m_sPyoguk.Pyokuk[i].dwDBIdx == 0 )
					return i;
			}
			return -1;
		}
		break;
	case 2:		// 公傍
		{
			for( i = 0; i < SLOT_MUGONG_NUM; ++i )
			{
				if( m_pDocument->m_sMugong.mugong[i].dwDBIdx == 0 )
					return i;
			}
			return -1;
		}
		break;
	case 3:		// 柳过
		{
			for( i = SLOT_MUGONG_NUM; i < SLOT_MUGONGTOTAL_NUM; ++i )
			{
				if( m_pDocument->m_sMugong.mugong[i].dwDBIdx == 0 )
					return i;
			}
			return -1;
		}
		break;
	}

	return -1;
}

void CCharacterInfo::ResultPositionEdit( DWORD dwType, ICONBASE* pItem )
{
	if( !pItem )
		return;

	CChangePosition* pPosition = new CChangePosition;

	switch( dwType )
	{
	case 0:		// inven
		{
			ITEMBASE* pp = (ITEMBASE*)pItem;
			pPosition->SetData( 0, m_pDocument->m_dwCharIdx, pItem->dwDBIdx, pItem->Position );
		}
		break;
	case 1:		// 芒绊
		{
			ITEMBASE* pp = (ITEMBASE*)pItem;
			pPosition->SetData( 1, m_pDocument->m_dwUserIdx, pItem->dwDBIdx, pItem->Position );
		}
		break;
	case 2:		// 公傍
		{
			MUGONGBASE* pp = (MUGONGBASE*)pItem;
			pPosition->SetData( 2, m_pDocument->m_dwCharIdx, pItem->dwDBIdx, pItem->Position );
		}
		break;
	}	

	m_pDocument->GetChangeManager()->AddPositionTable( pPosition, pItem->dwDBIdx );
}

int CCharacterInfo::ItemEdit( INFOFIELD field, WORD wControlId, const ITEMBASE* base_before, ITEMBASE& base_after, 
								const ITEM_OPTION_INFO* before, ITEM_OPTION_INFO& after )
{
	int result = 0;

	m_pItemDlg = new CItemDlg;

	WORD wWear = 0;
	if( field == eIF_WEAR )
	{
		switch(wControlId)
		{
		case eWearedItem_Hat: wWear = eEQUIP_ITEM_HAT; break;
		case eWearedItem_Weapon: wWear = eEQUIP_ITEM_WEAPON; break;
		case eWearedItem_Dress: wWear = eEQUIP_ITEM_DRESS; break;
		case eWearedItem_Shoes: wWear = eEQUIP_ITEM_SHOES; break;
	
		case eWearedItem_Ring1:
		case eWearedItem_Ring2: wWear = eEQUIP_ITEM_RING; break;

		case eWearedItem_Cape: wWear = eEQUIP_ITEM_CAPE; break;
		case eWearedItem_Necklace: wWear = eEQUIP_ITEM_NECKLACE; break;
		case eWearedItem_Armlet: wWear = eEQUIP_ITEM_ARMLET; break;
		case eWearedItem_Belt: wWear = eEQUIP_ITEM_BELT; break;
		}

		CString str;
		m_StatusEdit[eCharTemp_LEVEL].GetWindowText(str);
		m_pItemDlg->SetLevel( atoi(str.GetBuffer(0)) );
	}
	
	m_pItemDlg->Init(field, base_before, before, wControlId, wWear );
	result = m_pItemDlg->DoModal();
				
	memcpy(&base_after, m_pItemDlg->GetItemBase(), sizeof(ITEMBASE) );
	memcpy(&after, m_pItemDlg->GetItemOption(), sizeof(ITEM_OPTION_INFO) );

	SAFE_DELETE(m_pItemDlg);

	return result;
}

int CCharacterInfo::MugongEdit( INFOFIELD field, WORD wControlId, MUGONGBASE* base_before, MUGONGBASE& base_after )
{
	int result = 0;

	CString str;
	m_StatusEdit[eCharTemp_LEVEL].GetWindowText(str);
//	if( atoi(str.GetBuffer(0)) < 4 )
//	{
//		MessageBox("公傍阑 硅匡荐 绝绰 饭骇涝聪促.");
//		return eMR_Cancel;
//	}

	m_pMugongDlg = new CMugongDlg;
	m_pMugongDlg->Init(field, base_before, wControlId, (LEVELTYPE)atoi(str.GetBuffer(0)));

	result = m_pMugongDlg->DoModal();

	memcpy(&base_after, m_pMugongDlg->GetMugong(), sizeof(MUGONGBASE) );

	SAFE_DELETE(m_pMugongDlg);

	return result;
}

int CCharacterInfo::AbilityEdit( WORD wPos, WORD wAbilityIdx, char base_before, char& base_after )
{
	int result = 0;

	CAbilityInfo* pAbility = GAMERESRCMNGR->GetAbilityInfo(wAbilityIdx);
	if( pAbility == NULL )
		return eMR_Cancel;

	m_pAbility = new CAbilityDlg;
	m_pAbility->Init( wPos, pAbility, m_pDocument->GetCharacterAbillityLevel(pAbility->GetKind(), wAbilityIdx) );

	result = m_pAbility->DoModal();

	base_after = (char)(m_pAbility->GetAbilityLevel() + ABILITYLEVEL_DB_KEY);

	SAFE_DELETE(m_pAbility);

	return result;
}

BOOL CCharacterInfo::ResultItemEdit( INFOFIELD field, int result, WORD wPos, int nControlIdx, ITEMBASE* Origin, ITEM_OPTION_INFO* OriginOption,
										ITEMBASE* pBItem, ITEMBASE* pAItem, ITEM_OPTION_INFO* pBOption, ITEM_OPTION_INFO* pAOption )
{
	// 角力 酒捞袍狼 器瘤记阑 罐绰促. wPos
	CChangeManager* pManager = m_pDocument->GetChangeManager();

	// 绢恫 DB Table俊 持阑巴牢瘤甫 舅酒 柯促.
	TABLE_KIND kind = pManager->GetTableKind_ByField(field);
	if( kind == eTK_None )
		return FALSE;

	BOOL bAdd = FALSE;
	CChangeItem* pItem = (CChangeItem*)pManager->ExistChangeInfo(wPos, FALSE);

	if( !pItem ) // 扁粮 荐沥 沥焊啊 乐绰瘤 八荤茄促. (乐绢档 公矫!)
	{
		pItem = new CChangeItem;
		bAdd = TRUE;
	}

	if( result == eMR_Delete )// Delete牢 版快
	{ 
		/////////////////// Local Info狼 荐沥
		if( GAMERESRCMNGR->IsOptionItem(pBItem->wIconIdx, pBItem->Durability) )
			m_pDocument->DelLocalOptionInfo(pBItem->Durability);

		memset(pBItem, 0, sizeof(ITEMBASE));
		memset(pAItem, 0, sizeof(ITEMBASE));
		///////////////////

		/////////////////// DB Info狼 荐沥
		pItem->Init( eOp_Delete, kind, wPos );
		pItem->SetData(Origin, pAItem, OriginOption, pAOption);
		///////////////////
	}
	else if( result == eMR_Edit )
	{
		/////////////////// Local Info狼 荐沥
		if( GAMERESRCMNGR->IsOptionItem(pBItem->wIconIdx, pBItem->Durability) )
			m_pDocument->DelLocalOptionInfo(pBItem->Durability);

		if( pAItem->Durability == 9999 ) // 可记 悸泼
		{
			if( OriginOption && OriginOption->dwOptionIdx != 0 )
			{
				pAOption->dwOptionIdx = OriginOption->dwOptionIdx;
				m_pDocument->AddLocalOptionInfo(pAOption, FALSE);
			}
			else
			{
				WORD wOptionIdx = m_pDocument->AddLocalOptionInfo(pAOption, TRUE);
				pAOption->dwOptionIdx = wOptionIdx;
			}
			pAItem->Durability = (WORD)pAOption->dwOptionIdx;
		}

		memcpy(pBItem, pAItem, sizeof(ITEMBASE)); // 扁夯 酒捞袍 函版
		///////////////////

		/////////////////// DB Info狼 荐沥
		if( Origin->dwDBIdx == 0 ) // Insert牢 版快
		{
			pItem->Init( eOp_Insert, kind, wPos );
			pItem->SetData(Origin, pAItem, OriginOption, pAOption);
		}
		else // Update牢 版快
		{ 
			pItem->Init( eOp_Update, kind, wPos );
			pItem->SetData(Origin, pAItem, OriginOption, pAOption);
		}
		///////////////////
	}
	else
	{
		ASSERT(0);
		return FALSE;
	}

	if( bAdd )
		pManager->Add( pItem, wPos, FALSE );

	////////////////////////////////////////////////////////////
	// Button Text Setting
	char buff[256] = {0,};
	ITEM_INFO* pInfo;

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

	CMRButton* btn = (CMRButton*)GetDlgItem(nControlIdx);
	btn->SetWindowText(buff);
	btn->SetData(pAItem->wIconIdx);
	btn->SetColorText(COLOR_BUTTON_CHANGED);
	////////////////////////////////////////////////////////////

	return TRUE;
}

void CCharacterInfo::ResultMugongEdit( int result, WORD wPos, int nControlIdx, MUGONGBASE* Origin, MUGONGBASE* pBMugong, MUGONGBASE* pAMugong )
{
	////////////////////////////////////////////////////////////////////////////////////////////
	//// 公傍篮 吝汗捞 倾侩登瘤 臼栏骨肺 眉农茄促.
	int i;
	for(i=0;i<SLOT_MUGONG_NUM;++i)
	{
		if( i != wPos - TP_MUGONG_START && pAMugong->wIconIdx != 0 && m_SkillMuGong[i].GetData() == pAMugong->wIconIdx )
		{
			::AfxGetMainWnd()->MessageBox("You Have Already This Skill!!");
			return;
		}
	}
	for(i=0;i<SLOT_JINBUB_NUM;++i)
	{
		if( i != wPos - TP_JINBUB_START && pAMugong->wIconIdx != 0 && m_SkillJinBub[i].GetData() == pAMugong->wIconIdx )
		{
			::AfxGetMainWnd()->MessageBox("You Have Already This Skill!!");
			return;
		}
	}
	////////////////////////////////////////////////////////////////////////////////////////////

	CChangeManager* pManager = m_pDocument->GetChangeManager();

	BOOL bAdd = FALSE;
	CChangeMugong* pMugong = (CChangeMugong*)pManager->ExistChangeInfo(wPos, FALSE);

	if( !pMugong ) // 扁粮 荐沥 沥焊啊 乐绰瘤 八荤茄促. (乐绢档 公矫!)
	{
		pMugong = new CChangeMugong;
		bAdd = TRUE;
	}

	if( result == eMR_Delete ) // Delete
	{
		/////////////////// Local Info狼 荐沥
		memset(pBMugong, 0, sizeof(MUGONGBASE));
		memset(pAMugong, 0, sizeof(MUGONGBASE));
		///////////////////

		/////////////////// DB Info狼 荐沥
		pMugong->Init( eOp_Delete, eTK_MugongInfo, wPos );
		///////////////////
	}
	else if( result == eMR_Edit )
	{
		/////////////////// Local Info狼 荐沥
		memcpy(pBMugong, pAMugong, sizeof(MUGONGBASE));
		///////////////////

		/////////////////// DB Info狼 荐沥
		if( Origin->dwDBIdx == 0 ) // Insert
			pMugong->Init( eOp_Insert, eTK_MugongInfo, wPos );
		else // Update
			pMugong->Init( eOp_Update, eTK_MugongInfo, wPos );
		///////////////////
	}
	else
	{
		ASSERT(0);
		return;
	}

	pMugong->SetData( Origin, pAMugong );

	if( bAdd )
		pManager->Add( pMugong, wPos, FALSE );

	////////////////////////////////////////////////////////////
	// Button Text Setting
	char buff[256]={0,};
	SKILLINFO* pInfo;

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

⌨️ 快捷键说明

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