📄 reinforcemanager.cpp
字号:
// ReinforceManager.cpp: implementation of the CReinforceManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ReinforceManager.h"
#include "MHFile.h"
#include "GameResourceStruct.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CReinforceManager)
CReinforceManager::CReinforceManager()
{
m_ReinforceItemInfoList.Initialize( eRJP_MAX );
}
CReinforceManager::~CReinforceManager()
{
Release();
}
void CReinforceManager::Release()
{
sITEM_REINFORCE_INFO* pInfo = NULL;
m_ReinforceItemInfoList.SetPositionHead();
while( pInfo = m_ReinforceItemInfoList.GetData() )
delete pInfo;
m_ReinforceItemInfoList.RemoveAll();
}
sITEM_REINFORCE_INFO * CReinforceManager::GetReinforceItemInfo(WORD wItemIdx)
{
return m_ReinforceItemInfoList.GetData(wItemIdx);
}
void CReinforceManager::SetHeadPos()
{
m_ReinforceItemInfoList.SetPositionHead();
}
sITEM_REINFORCE_INFO * CReinforceManager::GetData()
{
return m_ReinforceItemInfoList.GetData();
}
BOOL CReinforceManager::LoadReinforceItemInfo()
{
CMHFile file;
#ifdef _FILE_BIN_
if(!file.Init( "./Resource/ItemReinforceList.bin", "rb" ))
return FALSE;
#else
if(!file.Init( "./Resource/ItemReinforceList.txt", "rt" ))
return FALSE;
#endif
if( m_ReinforceItemInfoList.GetDataNum() > 0 )
Release();
while(1)
{
if(file.IsEOF())
break;
WORD tempItemIdx = file.GetWord();
WORD tempReinforceType = file.GetWord();
float tempMaxReinforce = file.GetFloat();
float tempW = file.GetFloat();
if( tempItemIdx != 0 && tempReinforceType != 0 && tempMaxReinforce > 0.0f && tempW >0.0f
&& m_ReinforceItemInfoList.GetData( tempItemIdx ) == NULL )
{
sITEM_REINFORCE_INFO* pInfo = new sITEM_REINFORCE_INFO;
pInfo->wItemIdx = tempItemIdx;
pInfo->ReinforceType = tempReinforceType;
pInfo->fMaxReinforce = tempMaxReinforce;
pInfo->fw = tempW;
m_ReinforceItemInfoList.Add( pInfo, pInfo->wItemIdx );
}
else //error
{
if( file.IsEOF())
break;
file.Release();
return FALSE;
}
}
file.Release();
return TRUE;
}
BOOL CReinforceManager::CheckValidMaterial( WORD wReinforceItemIdx, WORD wMaterialItemIdx )
{
eITEM_KINDBIT eKindItem = GetItemKind( wReinforceItemIdx );
eITEM_KINDBIT eKindMaterial = GetItemKind( wMaterialItemIdx );
if( !(eKindItem & eEQUIP_ITEM) ) return FALSE;
if( !(eKindMaterial & eEXTRA_ITEM_JEWEL) ) return FALSE;
sITEM_REINFORCE_INFO* pInfo = GetReinforceItemInfo(wMaterialItemIdx);
if( pInfo == NULL ) return FALSE;
WORD ReinforceType = pInfo->ReinforceType;
switch( eKindItem )
{
case eEQUIP_ITEM_RING:
case eEQUIP_ITEM_NECKLACE:
if( ReinforceType == eRJP_FIREATTACK ||
ReinforceType == eRJP_WATERATTACK ||
ReinforceType == eRJP_TREEATTACK ||
ReinforceType == eRJP_GOLDATTACK ||
ReinforceType == eRJP_EARTHATTACK )
return TRUE;
break;
case eEQUIP_ITEM_ARMLET:
case eEQUIP_ITEM_CAPE:
case eEQUIP_ITEM_BELT:
if( ReinforceType == eRJP_FIREREGIST ||
ReinforceType == eRJP_WATERREGIST ||
ReinforceType == eRJP_TREEREGIST ||
ReinforceType == eRJP_GOLDREGIST ||
ReinforceType == eRJP_EARTHREGIST )
return TRUE;
break;
case eEQUIP_ITEM_SHOES:
if( ReinforceType == eRJP_GENGOL ||
ReinforceType == eRJP_MINCHUB ||
ReinforceType == eRJP_CHERYUK ||
ReinforceType == eRJP_SIMMEK )
return TRUE;
break;
case eEQUIP_ITEM_DRESS:
if( ReinforceType == eRJP_LIFE ||
ReinforceType == eRJP_NAERYUK ||
ReinforceType == eRJP_SHIELD )
return TRUE;
break;
case eEQUIP_ITEM_WEAPON:
if( ReinforceType == eRJP_PHYATTACK ||
ReinforceType == eRJP_CRITICAL )
return TRUE;
break;
case eEQUIP_ITEM_HAT:
if( ReinforceType == eRJP_PHYDEFENSE )
return TRUE;
break;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -