📄 characterinfo.cpp
字号:
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 + -